贪吃蛇游戏总结

来源:互联网 发布:centos单机安装hadoop 编辑:程序博客网 时间:2024/05/17 03:41

   初次接触C#,以贪吃蛇游戏揭开帷幕。

   贪吃蛇游戏的设计主要涉及到蛇的产生、消除与显示,豆的产生、消除与显示,以及分数的增加,地板的显示等等。为此程序的设计包括以下几个方面:

   (1)新建一个XMLRW类,用于对xml文档进行读写,包括蛇的颜色、速度的读写,豆的颜色的读写以及窗体背景色的读写、游戏记录的保存等等;

   (2)新建一个block类,该类用于保存贪吃蛇每一个块的坐标点以及编号,负责每一块的显示和消除;

   (3)新建一个Snake类,即由块组成的贪吃蛇,主要是利用ArrayList对象将block组织成一条蛇,其主要特性为蛇头的坐标和编号,以及蛇的增长、显示以及方向控制。

   (4)新建一个Bean类,这是蛇的吞吃对象,豆,主要完成豆的显示和消除。

   (5)新建一个Floor类,这是整个设计的核心部分,主要是完成地板的初始化蛇在地板上的运行,蛇是否吃到豆子的检测、分数的增加,以及豆子的随机生成等等,也包括游戏

是否结束的检测,一盘游戏结束后是否再来一局,是否能够进入到记录等等功能。

   除了以上涉及到的类对象的设计,贪吃蛇的设计还包括窗体设计,使用户能有一个人性化的体验。涉及到的窗体有:

   (1)主窗体:主要完成游戏进程的控制,包括游戏的开始和暂停、结束、参数的设置等等;

   (2)参数设置窗体:主要完成与游戏相关的设置,主要是蛇的颜色、速度,以及豆的颜色;

   (3)记录登记窗口:主要用于将玩家的记录写入到xml文件中;

   (4)排行榜窗体,主要将游戏的排行情况反馈给用户。

   在窗体中添加相应的事件即可。

   由于是初次接触C#,难免会遇到一些问题,在解决的过程中也是知识增长的过程现在总结如下:

   (1)关于窗体的按键响应:

   由于贪吃蛇需要根据用户在键盘上输入的上下左右键来改变行走方向,因次需要创建键盘响应时间,当为窗体添加键盘响应事件的时候发现,窗体不做任何反应,经过研究发现,需要将窗体KeyPreview属性设置为true ,因为c#默认键盘响应的是控件事件,因此为了使按键响应窗体事件,必须将其KeyPreView属性设置为true。另外一种可行的办法就是放置一个textbox,并且使其获得焦点,添加textbox的按键响应函数即可。

   (2)关于颜色的读写:

   由于需要保存用户的对于贪吃蛇颜色的设置,因此需要将颜色信息写入到xml文件中,在需要运用的时候再从xml文件中读取出来,在最开始设计的时候,采用的是color.Name.Tostring()和Color.FromName方法发现,有些颜色在写入xml文件时不是按照名字写入,会自动变成Argb形式,导致读取颜色的时候出现错误,至于出现此错误的原因还没有找到原因。因此在权衡各种因素后采用Argb的形式进行读写,这样也避免了那些自定义的颜色没有名字造成的不必要的麻烦。

   (3)关于combobox的selectedItem和selectedText的使用:

   由于我们需要根据用户选择的速度选项改变贪吃蛇的运行速度,最开始使用selectedText,发现速度并没有随着用户的选择而改变改变成selectedItem后速度的选择就产生了改变,产生这种现象的原因是前者是Text是指用户在可编辑部分选择的文本,当用户进行选择后combox就会失去焦点,之前选择的文本就会变成空,变成未选取状态,不会引起任何改变,而Item则不一样,它指的是选取的对象。

   (4)关于对象的产生先后:

   再编程过程中好多地方都需要用到xml对象,发现有时候明明在设置里已经对游戏的信息进行 了修改,效果并不能马上显露出来,但是实际上已经将修改信息保存到xml文件中,这是因为初始化xml对象的时间上有先后之分,造成每个对象拥有各自有先后的xml对象,因此需要在时序上加以注意。

   以上即为利用c#设计贪吃蛇的整个过程和设计心得。



原创粉丝点击