javascript,俄罗斯方块开发,谁说难,听我说,几分分钟看明白

旋转算法代码+解释

这个算法我解释下,就是一个功能函数而已。首先定义了一个临时变量,这个变量用来存储拷贝过来的活动中的方块图形。为什么要这样做呢?因为图形经过旋转后,很可能覆盖原来的图形。所以,保存下来,看旋转结果是否覆盖原来的图形,对tmpBlock尝试旋转, 如果旋转后检测发现没有方格产生冲突,则把旋转后的tmpBlock的值给activeBlock。算法呢?代码里面也加了注释,很好懂的。

核心算法搞明白了,接下来就是借些话操作了,逻辑逻辑逻辑,这瞎子真的不用数学知识了。码农都很高兴的哦。需要哪些功能函数呢?

1、创建方块的形状函数:function generateBlock(){}。这个函数定义了7种图形的具体坐标位置。

function generateBlock(){

var block = new Array(4);

var t = (Math.floor(Math.random()*20)+1)%7;

switch(t){

case 0:{

block[0] = {x:0, y:4};

block[1] = {x:1, y:4};

block[2] = {x:0, y:5};

block[3] = {x:1, y:5};

break;

}

case 1:{

block[0] = {x:0, y:3};

block[1] = {x:0, y:4};

block[2] = {x:0, y:5};

block[3] = {x:0, y:6};

break;

}

case 2:{

block[0] = {x:0, y:5};

block[1] = {x:1, y:4};

block[2] = {x:1, y:5};

block[3] = {x:2, y:4};

break;

}

...................................................................................后面的省略了。

return block;

2、想下移动函数: function moveDown(){ },在图形向下移动时,要执行的一些操作。

3、重画函数: function moveDown(){ },当消除了了某一行或者列的时候,图形需要重画。

4、消除函数:function deleteLine(){ },当满格的时候消除执行删除。

5、更新数组函数:function updateBoard(){ },这个呢就是当格子被占后,那么初始化数组就要更新了。

6、生成新的画板。function paintBoard(){ },这个也简单,有消行,不管一行还是多行,都要重新生成画板咯。

7、擦除画板函数: function eraseBoard(){ },填满了,就必然要擦除掉了。

有了以上功能函数,这个游戏大体是完工了,暂时讲到这。后期,还有事件监听事件,左右移动什么的,检测边界什么的。下一期,进行讲解,一步一步完成整个游戏。


分享到:


相關文章: