我是把每种方块形式放做一个类;
其中的单元方块 是用Lable 做的 没有text 改变了背景色和width 和 height;
但是不会判断两个方块的碰撞,大家给个方案 怎么判断;
我打算,专门写一个类,把每个下落停止的方块位置放入类的一个链表中,
可能比较麻烦,也担心运行效率;

解决方案 »

  1.   

    用个二维bool数组记录整个图上哪些位置有方块哪些位置是空的
    下落的方块每次下落一格之前,都判断下落后它将占据哪几个格子,如果这几个格子都是空的则可以下落,否则下落结束。
    没写过俄罗斯方块,可能有更好的方法
      

  2.   

    判断矩形是否相交,可以调用.net现成的类库程序:http://msdn.microsoft.com/zh-cn/library/y10fyck0.aspx你的每种方块既然是单元方块的组合,那么判断两个方块是否相交,其是就是判断:两个方块中是否各有一个单元方块正好相交。“我打算,专门写一个类,把每个下落停止的方块位置放入类的一个链表中”看不懂什么叫做“类的链表”?!我想你应该先搞清楚什么是类,什么是对象,不要混淆。
      

  3.   

    这个的思路大概是这样的 首先将游戏的图形显示界面进行划分比如划分成横向10格 竖向20格的格子 那么 对应的就是一个int[20,10]的数组元素值为1说明被占用,每次左右移动图形的时候 首先 判断要移动去的地方值是不是1是1说明之前已经被占用了 不能移动过去 向下的时候判断下一行是不是为1 是移动失败并且更新int[20,10]的数组值 然后复位出新的图形
      

  4.   

    其实最后一个问题可以不去可以考虑它。在窗口中,所有方块都可以放在一个 List<方块> 类型的集合中。不用纠结于过细节。
      

  5.   

    俄罗斯方块,似乎有很多地方可以找到线程的源码
    http://www.codeproject.com/Articles/27553/Falling-Blocks-Game
    这个是讲设计的。
    http://www.codeproject.com/Articles/11241/Brick-2005-Game-Engine-formerly-Tetris-2005-Game-E
    是一个源码...参考下改改,当作练习...