基本思路是这样的
1.将方块定位成4*4矩阵用一个16位整形进行显示,方块的坐下角作为方块的坐标。
2.将游戏窗口的每一行用一个32位的数组表示,其中每一位代表列。
3.方块移动时先清除上一次的显示区域再显示当前的方块实现移动。
4.通过判断最下面一行数组在范围内的位1数目是否不为0,实现判断是否落底。
5.通过判断方块16位整形数据中的位1数目和游戏窗口内的4行的位1数目之和是否等于将矩形窗和游戏池按位或后4行的位1数目。如果发生碰撞那么位1数目一定会变少,从而实现方块的左移右移下移方块间的碰撞。
6.判断每一行的数组位1数目是否等于游戏窗口宽度,从而实现消行。
由于是32位数组,又因为需要预留6个位进行坐标扩充,所以游戏的窗口列宽度最大只能位26。
1.将方块定位成4*4矩阵用一个16位整形进行显示,方块的坐下角作为方块的坐标。
2.将游戏窗口的每一行用一个32位的数组表示,其中每一位代表列。
3.方块移动时先清除上一次的显示区域再显示当前的方块实现移动。
4.通过判断最下面一行数组在范围内的位1数目是否不为0,实现判断是否落底。
5.通过判断方块16位整形数据中的位1数目和游戏窗口内的4行的位1数目之和是否等于将矩形窗和游戏池按位或后4行的位1数目。如果发生碰撞那么位1数目一定会变少,从而实现方块的左移右移下移方块间的碰撞。
6.判断每一行的数组位1数目是否等于游戏窗口宽度,从而实现消行。
由于是32位数组,又因为需要预留6个位进行坐标扩充,所以游戏的窗口列宽度最大只能位26。