【整理】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.和书中实现的效果有些差别
【整理】HTML5游戏开发学习笔记(5)- 猜谜游戏的更多相关文章
- 【整理】HTML5游戏开发学习笔记(1)- 骰子游戏
		
<HTML5游戏开发>,该书出版于2011年,似乎有些老,可对于我这样没有开发过游戏的人来说,却比较有吸引力,选择自己感兴趣的方向来学习html5,css3,相信会事半功倍.不过值得注意的 ...
 - HTML5移动开发学习笔记之Canvas基础
		
1.第一个Canvas程序 看的是HTML5移动开发即学即用这本书,首先学习Canvas基础,废话不多说,直接看第一个例子. 效果图为: 代码如下: <!DOCTYPE html> < ...
 - [游戏开发-学习笔记]菜鸟慢慢飞(四)-Camera
		
游戏开发中,主相机应该是最重要的GameObject之一,毕竟游戏呈现给玩家,就是通过它. 相机的使用,在不同的游戏中,有很大的不同.这里总结一下自己学到的一些相关知识. 固定位置-游戏过程中相机的T ...
 - cocos2d-x 3.x游戏开发学习笔记(1)--mac下配置cocos2d-x 3.x开发环境
		
打开用户文件夹下.bash_profile文件,配置环境 vim ~/.bash_profile //按键i,进行插入编辑(假设输错d进行删除一行) 环境配置过程例如以下: 1.首先配置下androi ...
 - 【Visual C++】游戏编程学习笔记之三:游戏循环的使用
		
 本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44208419 作者:Zee ...
 - 【整理】HTML5游戏开发学习笔记(2)- 弹跳球
		
1.预备知识(1)在画布上绘制外部图片资源(2)梯度(gradient):HTML5中的对象类型,包括线性梯度和径向梯度.如createLinearGradient,绘制梯度需要颜色组http://w ...
 - 【整理】HTML5游戏开发学习笔记(4)- 记忆力游戏
		
1.预备知识(1)Canvas绘制多边形(2)Canvas绘制文字 2.实现思路涉及的对象 (1)场景Scene 场景代表了画布上的一块区域,场景里的每个物体都是场景里的一个元素,其绘制统一由场景 ...
 - 【整理】HTML5游戏开发学习笔记(3)- 抛物线运动
		
1.预备知识(1)Canvas旋转的实现过程 window.onload = function(){ var ctx = document.getElementById('canvas1').getC ...
 - [Android游戏开发学习笔记]View和SurfaceView
		
本文为阅读http://blog.csdn.net/xiaominghimi/article/details/6089594的笔记. 在Android游戏中充当主要角色的,除了控制类就是显示类.而在A ...
 
随机推荐
- 软件测试为何我会首选Python
			
对于软件测试选择什么样的语言去学习,不同的人有不同的回答,为什么我会首选Python呢?这就要从Python的特点与适应领域说了. 一.Python的特点:优雅.明确.简单. 二.Python适合的领 ...
 - 《unity 3D 游戏开发 第二版》宣雨松 分享 pdf下载
			
链接:https://pan.baidu.com/s/1LfRTGUmaE_lGdcmd6QiZkg 提取码:e2sn
 - 3Sum(or k_Sum)
			
Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find ...
 - 了不起的Node.js--之四
			
阻塞与非阻塞IO 绝大多数对node.js的讨论都把关注点放在了其处理高并发的能力上.Node框架给开发者提供了构建高性能网络应用的强大能力. 我使用的开发工具是Mac版的WebStorm,这个工具支 ...
 - linux  内核 第二周    操作系统是如何工作的
			
姬梦馨 原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一:计算机的三个法宝 存储程序计算机工 ...
 - 修改servlet的模板代码
			
实际开发中,这些生成的代码和注释一般我们都用不到的,每次都要手工删除这些注释和代码,很麻烦.下面以MyEclipse 2014(其实版本通用的,都可以修改)为例进行说明如何修改Servlet的模板代码 ...
 - Day Three
			
站立式会议 站立式会议内容总结 442 今天:从本地导入电子书页面编写以及部分逻辑代码 遇到的问题:界面适配问题 明天:具体计划界面的编写,解决上面问题 331 今天:监听webview滑动底端事件 ...
 - 四则运算ver.mk2
			
package size; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JMenuBar; im ...
 - OpenFlow 1.3 控制器与交换机的交互,以及拓扑发现
			
前言 最近纠结于控制器如何发现拓扑,于是就翻起了OpenFlow 1.3进行查看,以及一些相关协议 OF 1.3 安全通道,即交互消息 OpenFlow Switch Specification 1. ...
 - day3——关于<s:if/>和文件上传
			
一个小的注意点 <s:if test='#backyear==#yearatd'>selected="selected"</s:if> <s:if t ...