你用一个数组表示一下就行了,有的用2,没有的用0,活动的用1,随便你怎么定义了
把活动的部分移动一格(左右下),有重复的就表示不能插入,再退回去
判断是否满行,你自己看了

解决方案 »

  1.   

    我一个同学高中时做过,不过方法有点笨,仅供参考:
    他是把全屏分成所需方块,用一个矩阵表示每个方块的状态(1为有东西,0为没东西)屏幕每发生一次变化就修改一下矩阵,然后扫描整个矩阵:若一行全为1则其上面各行的数值移动下来,这样就完成了消行的工作;方块的下落也类似,只要它下面的位子是0,就可以令其下落。
      

  2.   

    我做这个的时候,整个系统分成两层:活动层和静态层。活动层,就是正在下降的那个方块,核心数据用一个4x4的数组来描述。
    静态层,就是已经蒂格的那些方块,核心数据用一个mxn的数组来描述,
            m和n的具体取值取决于整个游戏画面的大小。
    数组元素的类型是bool型,描述方式是:true->有方格,false->为空。一般情况下,两个层同时处于有效状态,但有一个比较特别的瞬间只有静态层:前一个方块落下,后一个方块还没有出现的时候。这个实际往往用于检查可以消去的行,并完成相关的操作。至于具体的算法,我想,逐行检查就可以了,事实也证明,其时间复杂度时可以接受的。活动层移动一般是按下列顺序进行:1、调用方法bValidMovement参数包括两层的描述和活动层的移动方向。2、若是合法移动,则修改活动层的位置,做相关的处理,转入下一循环;若不合法,则直接转入下一循环。我不清楚你想用SA方法还是OO方法来架构程序。所以只能先说这么多了。