游戏区域是限定大小的区域,本游戏的游戏区域有21×25个矩形,每个矩形width为10单位,heght为6个单位(canvas 的绝对单位是固定的,非像素)。
创建RusBlock类包含相应的数据和行为,创建二维数组aState[21][25]记录游戏区域中被标记的矩形。
俄罗斯方块有7个部件,每个部件所占的矩形的个数和位置不同,所以建立部件类,然后建立数组储存7个部件,每个部件包涵数组储存该部件所占的矩形的个数和位置。当下落的部件到底了,就会产生一个新的部件,就部件的被标记的矩形就会赋值给游戏区域的数组。
在游戏循环函数中,打印正在下落的部件,和已经固定好的部件,还有下一下落的部件。
基本知识:
HTML5 CSS JS 
本游戏包括三个文件: 
RusBlock.html:设定元素 
RusBlock.css:设定样式 
RusBlock.js:脚本控制 
第一步:界面的设置和素材的准备 
RusBlock.html 
复制代码代码如下: 
<!DOCTYPE html> 
<html> 
<head> 
<title>RusBlock</title> 
<link rel=”stylesheet” type=”text/css” href=”RusBlock.css”> 
<script type=”text/javascript”> 
function ShareGame() { 
var URL = “http://share.renren.com/share/buttonshare.do?link=” + document.URL + “&title=RusBlock”; 
window.showModalDialog([URL]); 
} 
</script> 
</head> 
<body onkeyup=”Action(event)”> 
<audio loop=”loop” id=”Background-AudioPlayer” preload=”auto”> 
<source src=”audio/background.mp3″ type=”audio/mp3″/> 
</audio> 
<audio id=”GameOver-AudioPlayer” preload=”auto”> 
<source src=”audio/gameover.ogg” type=”audio/ogg”> 
</audio> 
<audio id=”Score-AudioPlayer” preload=”auto”> 
<source src=”audio/score.mp3″ type=”audio/mp3″/> 
</audio> 
<div id=”Game-Area”> 
<div id=”Button-Area”> 
<h1 id=”Game-Name”>RusBlock</h1> 
<button id=”Button-Game-Start” onclick=”GameStart()”>Start</button> 
<button id=”Button-Game-End” onclick=”GameEnd()”>End</button> 
<form id=”Form-Game-Level”> 
<select id=”Select-Game-Level”> 
<option value=”500″ selected=”selected”>Easy</option> 
<option value=”300″>Normal</option> 
<option value=”200″>Hard</option> 
</select> 
</form> 
<button onclick=”ShareGame()” id=”Button-Game-Share”>分享到人人</button> 
</div> 
<canvas id=”Game-Canvas”></canvas> 
<div id=”Score-Area”> 
<h2>Score</h2> 
<p id=”Game-Score”>0</p> 
</div> 
</div> 
<script type=”text/javascript” src=”RusBlock.js”></script> 
</body> 
</html> 
第二步:样式 
RosBlock.css 
复制代码代码如下: 
body { 
background-color:gray; 
text-align:center; 
font-family:’Times New Roman’; 
background-image:url(“”); 
} 
h1#Game-Name { 
background-color:white; 
width:100%; 
font-size:x-large; 
} 
h2,#Game-Score { 
font-size:x-large; 
background-color:white; 
} 
#Game-Area { 
position:absolute; 
left:10%; 
width:80%; 
height:99%; 
} 
canvas#Game-Canvas { 
background-color:white; 
width:80%; 
height:98%; 
float:left; 
} 
#Button-Area ,#Score-Area{ 
width:10%; 
height:100%; 
float:left; 
} 
#Button-Game-Start ,#Button-Game-End,#Button-Game-Share,#Select-Game-Level{ 
width:100%; 
height:10%; 
font-size:larger; 
border-right-width:3px; 
background-color:white; 
} 
#Select-Game-Level { 
width:100%; 
height:100%; 
font-size:x-large; 
border-color:gray; 
} 
第三步:编写js代码 
RusBlock.js 
Rusblock类包括的成员解析: 
数据: 
nCurrentComID:当前下落部件的ID 
aState[21][25]:存储游戏区域状态的数组 
CurrentCom:当前下落的部件 
NextCom:下一部件 
ptIndex:当前下落的部件相对游戏区域的索引 
函数: 
NewNextCom():产生新的下一部件 
NextComToCurrentCom():将下一部件的数据转移到当前下落的部件上 
CanDown():判断当前部件是否还可以下落 
CanNew():判断是否还可以产生新的部件 
Left():当前部件向左移动 
Right():当前部件向右移动 
Rotate():当前部件顺时针旋转 
Acceleratet():当前部件向下加速 
Disappear():消去一行 
CheckFail():判断是否游戏失败 
InvalidateRect():刷新当前部件的区域 
完成:下载Demo 
HTML5+JS,俄罗斯方块
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
                        


