voidputBox将curbox填充到地图上i
txyfory0y5y这个也简单主要是要根forx0x5x据curxcury指出位置ifcurboxyxmapycuryxcurxcurboxyxi
t
ewfall创建下落元素失败返回0i
txycurxMAX_X22重新指定小盒位置cury0fory0y5yforx0x5xcurboxyx
extboxyx将
extBox复制过来rebuidNext重建
extBox
12
fretur
testcurxcurycurbox这样一来,我们的预览盒子也就完成了。4完成以后,我们要进行下落的控制,这个在开始的控制指针已经做好的下落间隔设置,然后开始随机出示方块,玩家应开始进行旋转,移动的操作下落的过程;voidrotateBoxi
tbox155i
tbox255旋转box1输出到box2i
txyforx0x5x这个函数可以须要实际fory4y0y编写一下才能印像深刻box2yxbox1x4yi
trotate整个旋转的操作并将盒子打印到屏幕上i
txyi
t
ewbox55我们必须将当前盒子转动到新的盒子再对这个新的盒子的冲突作测试rotateBoxcurbox
ewbox转动到新的盒子iftestcurxcury
ewbox并且新的盒子能放到地图上而不冲突fory0y5yforx0x5xcurboxyx
ewboxyx复制进来retur
1elseretur
0i
tmovei
tdir返回成功与否i
t
ewx
13
fifdir
ewxcurx1与drop一样准备移动后的坐标else
ewxcurx1iftest
ewxcurycurbox测试是否冲突curx
ewx可以的话切换curxretur
1retur
0这个就完成了左右移动的操作;i
tdrop下落返回成功与否i
t
ewy盒子要下落的新位置
ewycury1为当前Y位置1iftestcurx
ewycurboxcury
ewy测试下落盒在这个位置retur
1上是否有冲突没有的话直接设置curyretur
0i
ttesti
tmxi
tmyi
tbox55测试box在map里mxmy位置上是否能着陆这个是最关键的一个函数它判断是否产生非空冲突但算法还是很简单的i
txyfory0y5yforx0x5xifmapymyxmxboxyxretur
0retur
1
14
f这样就完成了旋转,移动,测试并下落的功能。6接下来我们要完成下落后的分数的改变速度的重新设定;voidclear清除掉满行具体的算法为从第0行开始到最后一行测试地图点阵是否为满如果是的话从当前行算起之上的地图向下掉一行i
txyi
tdxdyi
tfullflagfory0yMAX_Y2y最后两行保留行fullflag1假设为满forx2xMAX_X2x保留列ifmapyxfullflag0breakiffullflag向下r