首先,先贴代码
void dropDownTetris(TetrisManager *manager, TetrisControl *control)
{
removeTetris(manager); // 移走当前方块
for (; manager->y < ROW_END; ++manager->y) // 从上往下
{
if (checkCollision(manager)) // 检测到碰撞
{
break;
}
}
--manager->y; // 上移一格当然没有碰撞
insertTetris(manager); // 放入当前方块
checkErasing(manager, control); // 检测消行
printTetrisPool(manager, control); // 显示游戏池
}
我们判断整个游戏池是否进行碰撞,如果没有,我们对y坐标进行不断的偏移。如果有的话,我们对齐进行返回,获取当前所在的坐标,对齐进行插入方块。
以下是俄罗斯方块游戏工程的连接: