Javascript版俄罗斯方块(含Bug)

概要:俄罗斯方块是大家所熟知的经典游戏,本着试试看的态度,我完成了这个Javascript版,不过美中不足的是在游戏的过程中有可能会出现错误,游戏的时间越长,错误出现的概率越大,针对这个Bug,我无能为力。希望有高手指导。

具体说明:俄罗斯方块的规则很简单,方块的下落、变形和消行。看似简单的问题却不好解决,我在无从下手的时候想到了自己在做Javascript版贪吃蛇时的做法,把蛇体和游戏区域看成对应的数学结构,于是我便试着将俄罗斯方块问题向这方面去考虑,终于找到了一个解决方法:把游戏主区域抽象成矩阵,将方块的形状及变形条件也抽象成矩阵。下图是我的手稿中矩阵的初步定型。

Javascript版俄罗斯方块(含Bug)

找到了突破口,接下来的进度就快了,将游戏区域对应的矩阵定义为画布矩阵,将方块的形状及变形条件定义为形状及变形条件矩阵。

画布矩阵中使用010代表该位置没有被填充,1代表该位置已被填充。

形状及变化条件矩阵中值得一提的是变形条件,我们都知道,在俄罗斯方块中形状是可以变化的,变化有条件的,必须保证该形状所在的游戏区域满足一定的条件才能变形。对于条件的表达,我在矩阵中使用0-10代表该位置必须没有被填充,-1代表该位置被填充与否没有任何影响。变化是以顺时针为准的。

下面是以"Z"形状的形状及变化条件矩阵说明图

Javascript版俄罗斯方块(含Bug)

至于运动,可以通过判断指定形状是否可以插入到游戏主区域中指定的位置。在底层数据这块,则可以将形状矩阵与画布矩阵指定位置对应的矩阵进行简单的加法处理,判断每个位置的结果是否等于2如果有一个位置的结果等于2,则说明不可插入画布中。

至于其他的说明,就不罗嗦了,可以看代码及其中的注释。代码有六百多行,我放在了csdn的资源库了,这是下载链接

http://download.csdn.net/source/742217

你可能感兴趣的:(JavaScript)