网络编程
位置:首页>> 网络编程>> JavaScript>> JavaScript版俄罗斯方块Easy Tetris实现原理(2)

JavaScript版俄罗斯方块Easy Tetris实现原理(2)

 来源:DHTML精英,WEB前端专家 发布时间:2009-07-16 10:25:00 

标签:俄罗斯方块,JavaScript,游戏,原理

Easy Tetris实现核心部分

下一个方块

原型为一个4*4的表格加上方块展示方法,可以通过分别继承两个类(表格类,方块类),加上自身的next方法,来实现。

游戏区域

原型为一个12*20的表格,由于考虑到算法优化,直接设置为(4+12+4)*(4+20+4)的表格,该表格同时具有一个与表格中格子数相同的二维数组,用作方块的边界检测

游戏填色区域

原型为一个12*20的表格,由于考虑到算法优化,直接设置为(4+12+4)*(4+20+4)的表格,方块停止下落后,在对应的行和列中填上与下落方块相同的颜色。

当在“游戏区域”的二维数组中检测到行被填满,则删除填色区域相应的行,同时,在首行前插入相应数量的新行。

游戏方块

原型为一个4*4的表格加上方块展示方法,可以通过分别继承两个类(表格类,方块类)并且加上自身的一些方法来实现,此组件为俄罗斯方块中的重要组件,在Easy Tetris的实现中,该组件担当了大部分的游戏任务,移动,变形,边界检测等等,游戏中多数的方法都被安排在此组件上实现。

方块形状及变形

方块及形状的实现可以通过一个4*4的二维数组来实现,比如方块Z,我们可以写为:

[
[1,1,0,0]
[0,1,1,0]
[0,0,0,0]
[0,0,0,0]
]

1,表示这个位置是一个方块,0表示什么都没有,是不是很简单?由于这种写法会造成数据量的增大,我们可以将此数据形式压缩为16进制形式,还是以Z为例。

1100011000000000 -> 转为16进制 -> 0xc600,于是上面的数组可以简写为:

[0xc600]

数据量大大缩减,然后在程序中需要有一个反转的过程,将此16进制数据转换到2进制数据,需要注意的是,你可能会发现一些16进制的数据转换到2进制后不够如上面数组中的16个元素,你需要在转换后的2进制数据前补足相应个数的 0。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com