这个跟碰撞没关系吧……就编程来说,应该是将每个方块看作一个整体,从最高处开始,方块的高度不断降低,当下面有别的方块占据了位置以至于无法再降低高度时,该方块在该处定格,出来一个新方块。当同时有一行或多行的位置上全有方块时,这一行或多行上的数值归零,行数大于它(们)的所有方块即时将高度下降一行或多行。
呵呵,是这样的,每个方块不是以不规则图形画出的,是四个单元方块的组合。你可以用纸笔画一下,所有俄罗斯方块都是四个小正方形的组合,而四个小正方形能组合出的所有图形在俄罗斯方块中也全能找到。所以他不需要计算碰撞点,可以把游戏池看成一张表格,如果你放了一个L形的方块在最左下角,那对计算机来说,就是(1,1)(1,2)(2,1)(3,1)四个格子的赋值为1,其他所有格子的赋值为0。如果在L的正上方又堆了一个正方形的方块,那就是11、12、21、31、41、42、51、52这八个格子的赋值为1,其他为零,以此类推。
关于消行的问题,计算机不断对所有行(或是如果程序编得好的话,可以只对赋值不全为0的行)进行检验,如果一旦有一行或多行,比如第三四五行的赋值全为1,那么对这三行的赋值全部清零,对行数y>5的赋值为1的格子(x,y)重新定义为(x,y-3)。
标签:方块,请教,高手