• 【整理】HTML5游戏开发学习笔记(5)- 猜谜游戏


    距上次学习笔记已有一个多月过去了,期间由于新项目赶进度,以致该学习计划给打断,十分惭愧。
    书本中的第六章的例子相对比较简单。所以很快就完成。

    1.预备知识
    html5中video标签的熟悉

    2.实现思路
    对20组G20成员进行国家名和其首都的匹配的游戏。通过2组div来显示,监听其点击事件click,通过元素的id保存国家和首都的索引,通过前后2次的点击来判断其2次点击的索引是否相等,相等则匹配成功,不相等则继续。
    全部匹配成功后则自动播放视频。

    3.主要代码

    			var membersForG20 = [{id:1,countryName:'China',capitalName:'Beijing',used:false},
    													 {id:2,countryName:'India',capitalName:'New Delhi',used:false},
    													 {id:3,countryName:'European Union',capitalName:'Brussels',used:false},
    													 {id:4,countryName:'United States',capitalName:'Washington, DC',used:false},
    													 {id:5,countryName:'Indonesia',capitalName:'Jakarta',used:false},
    													 {id:6,countryName:'Brazil',capitalName:'Brasilia',used:false}]
    
    			var countryDiv = document.getElementById('countryDiv')
    			var capitalDiv = document.getElementById('capitalDiv')
    			var video1 = document.getElementById('video1')
    
    			/*
    				http://www.w3school.com.cn/tags/av_met_canplaytype.asp
    				canPlayType() 方法浏览器是否能播放指定的音频/视频类型。
    				canPlayType() 方法可返回下列值之一:
    			    "probably" - 浏览器最可能支持该音频/视频类型
    			    "maybe" - 浏览器也许支持该音频/视频类型
    			    "" - (空字符串)浏览器不支持该音频/视频类型
    				
    				实际情况是在Chrome下sfire3.mp4视频无法播放,火狐下提升文件已损坏。
    			*/
    			console.log(video1.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2'))//返回probably
    
    			var randomLength = 4
    			var matches = 0
    			var countrySelected = false
    			var selectedCountryIndex
    			var selectedCanpitalIndex
    
    			function onSelected(element){
    				var id = element.id
    				var index 
    				var type
    
    				id.replace(/(country|canpital)(d+)/g,function ($0,$1,$2){
    					type = $1
    					index = $2
    				})
    
    				console.log(type+','+index)
    				
    				if(type == 'country'  && countrySelected==false){
    					countrySelected = true
    					selectedCountryIndex = index					
    				}
    				else if(type == 'canpital' && countrySelected==true){
    					selectedCanpitalIndex =  index
    					
    					if(selectedCountryIndex == selectedCanpitalIndex){
    						countrySelected = false
    						selectedCountryIndex = -1
    						selectedCanpitalIndex = -1
    
    						//matched success
    						document.getElementById('country'+index).style.backgroundColor = 'green'
    						document.getElementById('canpital'+index).style.backgroundColor = 'green'	
    
    						matches++
    
    						if(matches==randomLength){
    							video1.play()
    						}
    					}
    					else{
    						//matched error
    						document.getElementById('country'+index).style.backgroundColor = 'red'
    						document.getElementById('canpital'+index).style.backgroundColor = 'red'	
    
    						countrySelected = false
    						selectedCountryIndex = -1
    						selectedCanpitalIndex = -1
    					}
    				}
    				else{
    				 	//reset Selected 
    					countrySelected = false
    					selectedCountryIndex = -1
    					selectedCanpitalIndex = -1	
    				}				
    			}
    
    
    			window.onload = function(){				
    				var i
    				var index
    				var member				
    				var memberLength = membersForG20.length				
    				var countryElements = []
    				var canpitalElements = []
    
    				for(i=0;i<randomLength;i++){
    					do{
    						index = Math.floor(Math.random()*memberLength)
    						member = membersForG20[index]
    					}
    					while(member.used == true)
    
    					member.used = true
    
    					countryElements.splice(Math.floor(Math.random()*i),0,'<div id='+'"country'+index+'" class="country" onclick="onSelected(this)">'+member.countryName+'</div>')
    					canpitalElements.splice(Math.floor(Math.random()*i),0,'<div id='+'"canpital'+index+'" class="canpital" onclick="onSelected(this)">'+member.capitalName+'</div>')
    				}
    
    				countryDiv.innerHTML = countryElements.join('')
    				capitalDiv.innerHTML = canpitalElements.join('')
    			}
    


    4.和书中实现的效果有些差别

  • 相关阅读:
    循环神经网络
    相似度计算(余弦距离/欧式距离)
    最常见Linux操作
    注意力机制总结
    随机打乱数组算法、蓄水池算法
    6.1 数据结构---树(遍历)
    Node.js调用C/C++
    linux中nmcli命令详解
    stylus入门使用方法
    webpack CommonsChunkPlugin详细教程
  • 原文地址:https://www.cnblogs.com/Benoly/p/4151225.html
Copyright © 2020-2023  润新知