旋转算法代码+解释
这个算法我解释下,就是一个功能函数而已。首先定义了一个临时变量,这个变量用来存储拷贝过来的活动中的方块图形。为什么要这样做呢?因为图形经过旋转后,很可能覆盖原来的图形。所以,保存下来,看旋转结果是否覆盖原来的图形,对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(){ },填满了,就必然要擦除掉了。
有了以上功能函数,这个游戏大体是完工了,暂时讲到这。后期,还有事件监听事件,左右移动什么的,检测边界什么的。下一期,进行讲解,一步一步完成整个游戏。
閱讀更多 學習每日一分享 的文章