AS3制作的小游戏——俄罗斯方块

当初设计思路有问题,后来被导师拉回来啦,哈哈。
整体来说,思路就是通过二维的Sprite数组,来实现的方块的显示与隐藏。界面设计方面就不BB啦,就总结一下自己方块与逻辑吧,后面附有可运行代码,喜欢的可直接拿走。


首先,可以把方块下落的所有区域当作一个M×N的矩阵,这个时候,就可以通过生成一个Sprite的二维数组来实现了,然后通过一个二维布尔数组来记录每一个方块是否被占用,占用的方块透明值(alpha)为1,没占用的方块为0就OK啦。

第二步,方块的下落,通过事件实现一个Update函数,在每帧中去实现下落的逻辑和控制,并在下落中侦听按键事件,如果有按键被按下,那么可以根据键值来决定实现的操作。
俄罗斯方块中的按键操作基础的就三个,左右上,左右很好判断,就相对的x+1或者x-1,记得在移动的时候判断它移动后的方块里是否有方块被占用就OK了。然后按上方块旋转这里,我的做法是自己计算了方块旋转后四个小方块与它左上角的相对位置,然后得到四个坐标数组(相同的数组省略不要),然后去循环获取这些数组来改变方块的位置就好啦,当然,这个旋转的过程不止要判断旋转之后是否会触碰到墙壁(碰到了改变左上角的位置),还要判断旋转是否会碰到被占用的砖块。

第三步,当第二步实现之后,我们就可以搭方块啦,当我们搭满一行之后,就可以消除,很简单,一个遍历第一步中定义的布尔数组就可以了,这个遍历的操作,放在方块落下后实现比较好,这样可以不用每一帧都做一次,对游戏来说算是一种小优化吧。
对了,记得用一个布尔值来暂停游戏,当进行消除的时候,把下一个方块的下落逻辑给暂停,这样会让游戏玩起来较为流畅些,自我猜测是因为事件侦听是一个并行的操作,所以有可能一边下落一边销毁。当然,我没有测试,这里就不BB啦~

第四步,就是判断游戏结束啦~就最上面的布尔数组是否被访问到,so easy,不多做解释啦。


链接:https://pan.baidu.com/s/1XCZMKfcMV5efZnGLZlbvXA
提取码:h9w9

你可能感兴趣的:(AS3)