太乱了.你这里面,设计思路有问题.
1\每个方块,应该用数字来定义的,不能直接用程序里来显示,而没有数据定义
如定义一个二维数组. 4*4 的.那个 I 型的的定义就是
0 1 0 0
0 1 0 0
0 1 0 0
0 1 0 0
当它旋转时,按数组位置进行转置
(1,1)=(1,4)
(1,2)=(2,4)
......
然后显示部分,采用扫描数组的形式进行判断
if =0 then 不显示
if =1 then 按颜色带个方块
2\你的没办法判断消行.整个区域应该是:
10 , 20
的数组.
当方块 从左上角 的坐标 +
方块编号 + 是方块,并且这个方块是1,那么说明方块不可以再向下掉了,这时,把方块的数据写入到整个区域数据中去.
然后扫描每行,判断每行是不是全部满了.如果是,那么把这一行清掉,把整个区域数组,去掉此行,然后全部向下掉,最上面那个数据全部填零.
整个区域显示,也就应该采用 扫描数组的形式来判断.
3\如果需要每个方块不同的颜色.如 I 型,L型,分别是一种颜色那么,你数字定义时,每个方块需要2个数据,一个表示此处是否有一个方块,另一个是方块的颜色.