.Net Micro Framework研究—用MF编写俄罗斯方块

简介:

上次编写俄罗斯方块,好像是N年前的大学时代,使用TC2.0在DOS平台上开发的,由于当时的代码是保存在3.5寸软盘上的,到现在那些程序早已经作了古,没有了踪影。俄罗斯方块其实编写并不太容易,要考虑的东西还是蛮多的,以前想在PPC上用.Net精简框架集实现,后来起了个头,没有太大的动力,也就作罢了。现在对MF充满了激情,所以从零做起(没有参考任何现成代码,只不过还是依照我早期的思路编写而成),花费我大半天的时间才编写完毕(在编写过程中,还发现MF对二维数组支持不大好,我后面会提到)。

好了,让我们在.Net Micro Framework模拟器(由于我这里没有带LCD屏的MF开发板,所以很遗憾,不知道在实际的设备上该程序的性能会怎样)上体验一下俄罗斯方块游戏吧。
进入MF Windows(姑且这么叫吧),单击“开始”菜单按钮(MF平台不支持鼠标,是单击模拟器上的Menu按钮,或在键盘敲“空格”或“Windows”键),我们用光标键选中“俄罗斯方块”游戏,按OK键(或按键盘上的“回车”键)进入游戏。

 

通过开始菜单进入“俄罗斯方块”游戏

 

编写的俄罗斯方块游戏可是具备经典版的所有功能哟!可以翻转,可以移动,可以得分,可以快速降落等等!要认真玩,否则很快就“Game Over”的。


 
 
在编写过程中发现MF对二维数组支持不是太好。
下面的代码编译时会报错:
bool[,] bFlag=new bool[10,20];

 

所以在MF中二维数组必须这样声明才行:
 

 
  1. bool[][] bShowFlag = new bool[22][];             //主显示区含边框       
  2.     for (int i = 0; i < 22; i++)  
  3.      {  
  4.   bShowFlag[i] = new bool[12];  
  5. }  

 
附:MF俄罗斯方块核心代码
  
 

 
  1. //俄罗斯方块(叶帆工作室:http://yfsoft.blog.51cto.com)  
  2.        public class ElsGame  
  3.        {  
  4.            int Current_Y = -2, Current_X =3;  
  5.            int intGrade = 0;  
  6.            bool[][] bShowFlag = new bool[22][];             //主显示区含边框        
  7.            bool[][] bMetaShowFlag = new bool[4][];          //下一个方块显示区  
  8.            bool[][] bCurrentMetaShowFlag = new bool[4][];   //当前方块显示区  
  9.  
  10.            int intNextNo = 0;                               //下一个方块索引  
  11.            int intCurrentNo = 0;                            //当前方块索引  
  12.  
  13.            enum MoveWay{Left,Down,Right};  
  14.            DispatcherTimer GameTimer;                       //游戏时钟  
  15.  
  16.            bool bGameRunFlag = false;                       //游戏运行标志  
  17.  
  18.            public ElsGame(DispatcherTimer GameTimer)  
  19.            {  
  20.                this.GameTimer = GameTimer;  
  21.                Init();  
  22.            }  
  23.  
  24.            //元素  
  25.            private bool[][] GetElsMeta(int intNo)  
  26.            {  
  27.                bool[][] ElsMetaFlag = new bool[4][];  
  28.                for (int i = 0; i < 4; i++)  
  29.                {  
  30.                    ElsMetaFlag[i] = new bool[4];  
  31.                }  
  32.                switch (intNo)  
  33.                {  
  34.                    case 0:   //田  
  35.                        ElsMetaFlag[1][1] = true;  
  36.                        ElsMetaFlag[1][2] = true;  
  37.                        ElsMetaFlag[2][1] = true;  
  38.                        ElsMetaFlag[2][2] = true;  
  39.                        return ElsMetaFlag;  
  40.                    case 1: //-  
  41.                        ElsMetaFlag[2][0] = true;  
  42.                        ElsMetaFlag[2][1] = true;  
  43.                        ElsMetaFlag[2][2] = true;  
  44.                        ElsMetaFlag[2][3] = true;  
  45.                        return ElsMetaFlag;  
  46.                    case 2: //|  
  47.                        ElsMetaFlag[0][2] = true;  
  48.                        ElsMetaFlag[1][2] = true;  
  49.                        ElsMetaFlag[2][2] = true;  
  50.                        ElsMetaFlag[3][2] = true;  
  51.                        return ElsMetaFlag;  
  52.                    case 3: //┻  
  53.                        ElsMetaFlag[1][2] = true;  
  54.                        ElsMetaFlag[2][1] = true;  
  55.                        ElsMetaFlag[2][2] = true;  
  56.                        ElsMetaFlag[2][3] = true;  
  57.                        return ElsMetaFlag;  
  58.                    case 4: //┣  
  59.                        ElsMetaFlag[2][2] = true;  
  60.                        ElsMetaFlag[1][1] = true;  
  61.                        ElsMetaFlag[2][1] = true;  
  62.                        ElsMetaFlag[3][1] = true;  
  63.                        return ElsMetaFlag;  

 







本文转自yefanqiu51CTO博客,原文链接:http://blog.51cto.com/yfsoft/322921,如需转载请自行联系原作者

相关文章
.Net Micro Framework研究—Digi开发板初探
写的比较基础全面,由于我们北航的研发团队先研究了Digi的开发板,所以直到今天Digi开发板才到我的手上,我的《Micro Framework研究》系列文章以后也会陆续推出
706 0
.Net Micro Framework研究—IO读写
试验平台:Digi MF开发板
439 0
.Net Micro Framework研究—串口操作
试验平台:Digi MF开发板,Digi提供的示例中包含了串口的示例程序
559 0
|
网络协议
.Net Micro Framework研究—TCP/IP通信
关于网络通信方面,Digi提供了两个程序,一个是TCP Server运行在Digi的开发板上,一个是TCP Client程序,运行在PC上,通过网络,上位机很容易控制Digi开发的IO信号
626 0
.Net Micro Framework研究—模拟器改造
由于Digi提供的开发板没有LCD显示屏,所以有关绘图方面的操作,只好在模拟器上进行了。
542 0
|
Windows
.Net Micro Framework研究—中文显示
微软示例程序中,仅支持两种字体(small.tinyfnt和NinaB.tinyfnt),并不支持中文。
581 0
.Net Micro Framework研究—绘图
目前在VS2005的环境里,还不支持.Net Micro Framework界面的所见即所得绘制,界面制作有三种方式,一是窗体直接绘图,二是Panel+形状对象、三是窗体+控件。第一种做法让人觉得又回到了DOS时代,回到了SCREEN 12的16色的世界里。
483 0
.Net Micro Framework研究—Shapes命名空间
在Microsoft.SPOT.Presentation.Shapes命名空间下,包含几个形状对象,主要有Ellipse、Line、Polygon、Rectangle,同样也只有Rectangle实现的最好,其他形状都不支持填充色,虽然每个对象都有Fill属性。
623 0
.Net Micro Framework研究—窗体控件
目前版本的MF对TCP协议栈支持也并不完善(对串口也谈不上完善,毕竟不支持奇偶校验、停止位设置),Digi的以太网口是加入了自己的处理方案,明年二月份微软将要发布的MF V3.0版,就已经完全支持TCP了,到时候MF最理想的应用也许就是通信转换了。
494 0
.Net Micro Framework研究—应用实例
在前几篇关于.Net Micro Framework的研究文章中,我对它的绘图功能实不敢恭维,不过微软的MF开发人员很聪明,对位图方面的功能实现的就比较完善,这样做起图形应用来就不至于捉襟见肘了。前段时间用.Net Compact Framework实现了一个奥运场馆查询
527 0