【整理】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 游戏(数字推理游戏Bagels)
1.游戏思路和流程图 实现功能:玩家猜测三位不一样的数字,猜错了有提示,提示分别为(位置错误数字正确),(位置和数字正确),(数字和位置都不正确) 游戏流程图 2. 使用模块和游戏提示 import ...
- web安全入门课程笔记——网站基础与信息搜集
2-1 网站的基本概念 URL统一资源定位符 这是一个动态页面 ?ID 查询条件 后台数据库最有可能:ACCESS Web容器(web容器是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而 ...
- 一篇带你读懂TCP之“滑动窗口”协议
前言 你现在的努力,是为了以后有更多的选择. 在上一篇文章通过"表白"方式,让我们快速了解网络七层协议了解了网络七层协议. 接下来我们要把重心放在网络传输的可靠性上面.一起来看TC ...
- Daily Scrum NO.8
工作概况 今天是周六,虽然由于工作紧张要求这一日也定为工作日,但是也许是因为昨日大家工作做得较多或者周末的缘故,今天的进展状况并不理想.线程池和异常清理器的后端已经完成,而清理器的界面和动态爬取仍旧没 ...
- Arduino下读取DHT22温湿度(不使用第三方库)
代码如下: #include <inttypes.h> /* * LED */ unsigned ; /* * DHT22配置程序 */ unsigned ; #define DHT_OK ...
- Python入门:for循环、while循环
Python中有两种循环,分别为:for循环和while循环. 1. for循环 for循环可以用来遍历某一对象(遍历:通俗点说,就是把这个循环中的第一个元素到最后一个元素依次访问一次).for循环的 ...
- Jmeter使用笔记之意料之外的
以下是在测试过程中按照以前loadrunner的思维来做的一点区别: 一.组织方式之setup 在用loadrunner做接口测试的时候如果不是针对login的测试,那么一般也会把login接口放到i ...
- Spring之事务操作(注解)
事务操作步骤: <!-- 第一步.配置事务管理器 --> <bean id="transactionManager" class="org.spring ...
- 【大数据】Spark性能优化和故障处理
第一章 Spark 性能调优 1.1 常规性能调优 1.1.1 常规性能调优一:最优资源配置 Spark性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资源的分配与性能的提升是成正比的, ...
- BZOJ1050 HAOI2006旅行(最小生成树+LCT)
暴力枚举路径中权值最小边是哪个,然后求出边权不小于它的边的最小生成树,即可保证该路径上最大值最小.暴力当然可以过,这里使用LCT维护.注意数据中有自环. #include<iostream> ...