日期:2014-05-17  浏览次数:20958 次

C#实现俄罗斯方块游戏<续>三维优化
? ? 上篇博文已经介绍俄罗斯方块Demo的简单实现,鄙人在完成了弱弱的简单俄罗斯方块Demo后,想要对Demo进行优化和美化设置,使得俄罗斯的可玩性增强。本篇博文主要在将结构的优化、游戏的美化和可玩性的扩展性上进行改进,让我们的游戏变不那么单调,偶尔也要高端霸气上档次。?

?

第一、算法的优化:

? ? 在Demo中,基本上都是用循环来完成向下、向左、向右的移动、检查是否存在可以得分的行等动作。在这些循环中我们使用了从0到最大值的循环。在检测是否满行和绘制背景的时候,之前采用了历边所有的背景数组。将遍历条件设为缩小到俄罗斯方块完成落下的最小高度,可以缩小循环的范围。从而提高执行效率。

?

故声明一个全局变量
private int lowY = 19; //初始化的时候为到最下面一行。初始背景无任何砖块
?

第二、补全砖块类型:

? ? 俄罗斯方块一共有7种砖块类型,上篇博文鄙人只定义了四种类型,现在将其补齐

可能看过上一篇博文的童鞋可能不太懂这个怎么弄的,其实这个容易理解,把是1的连起来就知道是什么图形了。哈哈,简单吧。。。

?
/// <summary>
        /// 定义砖块int[i,j,y,x] 
        /// 4种类型方块,每种方块的4种方位,4*4的位置矩阵
        /// tricks:i为块砖类型,j为状态,x为行,y为列
        /// </summary>
        private int[, , ,] tricks = {{
                                      {
                                          {1,0,0,0},
                                          {1,0,0,0},
                                          {1,0,0,0},
                                          {1,0,0,0}
                                      },
                                      {
                                          {1,1,1,1},
                                          {0,0,0,0},
                                          {0,0,0,0},
                                          {0,0,0,0}
                                      },
                                      {
                                          {1,0,0,0},
                                          {1,0,0,0},
                                          {1,0,0,0},
                                          {1,0,0,0}
                                      },
                                      {
                                          {1,1,1,1},
                                          {0,0,0,0},
                                          {0,0,0,0},
                                          {0,0,0,0}
                                      }
                                  },
                                  {
                                       {
                                           {1,1,0,0},
                                           {1,1,0,0},
                                           {0,0,0,0},
                                           {0,0,0,0}
                                       },
                                       {
                                           {1,1,0,0},
                                           {1,1,0,0},
                                           {0,0,0,0},
                                           {0,0,0,0}
                                       },
                                       {
                                           {1,1,0,0},
                                           {1,1,0,0},
                                           {0,0,0,0},
                                           {0,0,0,0}
                                       },
                                       {
                                           {1,1,0,0},