贪吃蛇实训报告

合集下载

贪吃蛇实训报告致谢

贪吃蛇实训报告致谢

在完成这次贪吃蛇实训的过程中,我深感荣幸能够得到众多师长的悉心指导、同窗的鼎力相助以及家人朋友的关爱与支持。

在此,我谨向所有关心、帮助和鼓励我的人表示衷心的感谢。

首先,我要感谢我的指导教师XXX老师。

在实训过程中,XXX老师以其严谨的治学态度、深厚的专业知识,为我提供了宝贵的指导和建议。

在遇到困难时,XXX老师总是耐心解答我的疑惑,使我受益匪浅。

XXX老师的教诲,不仅让我掌握了贪吃蛇游戏的编程技巧,更让我学会了如何面对困难,坚持不懈。

其次,我要感谢我的同学们。

在实训期间,我们共同学习、共同进步,互相鼓励、互相支持。

特别是在编程过程中,大家积极交流心得,共同解决难题,使我感受到了团队的力量。

在此,我要特别感谢我的室友XXX同学,他在编程过程中给予了我许多帮助,使我在短时间内掌握了贪吃蛇游戏的设计与实现。

此外,我要感谢我的家人和朋友。

在实训期间,他们给予了我无微不至的关怀和支持。

家人们的鼓励使我始终保持积极向上的心态,朋友们在生活上的关心让我在实训中感受到了温暖。

在此,我要向他们表示衷心的感谢。

以下是我对各位的详细致谢:1. 感谢XXX老师,您的悉心教导让我在贪吃蛇实训中取得了丰硕的成果。

在实训过程中,您不仅传授了我编程技巧,更教会了我如何面对困难,勇往直前。

您的教诲将成为我人生道路上的宝贵财富。

2. 感谢我的室友XXX同学,你的帮助让我在编程过程中少走了许多弯路。

在遇到问题时,你总是耐心解答,让我受益匪浅。

感谢你陪伴我度过了这段难忘的实训时光。

3. 感谢我的同学们,我们一起学习、一起进步,共同成长。

在实训过程中,我们互相鼓励、互相支持,共同度过了一个又一个难关。

感谢你们陪伴我度过了这段美好的时光。

4. 感谢我的家人,你们始终关心我的学习和生活,给予了我无尽的关爱和支持。

感谢你们为我创造了一个良好的成长环境。

5. 感谢我的朋友们,你们在生活上给予了我许多帮助,让我在实训期间感受到了温暖。

感谢你们陪伴我度过了这段难忘的时光。

贪吃蛇游戏_实习报告

贪吃蛇游戏_实习报告

课程设计报告贪吃蛇游戏设计专业学生姓名班级学号指导教师完成日期盐城工学院本科生课程设计报告(2008)贪吃蛇游戏设计摘要:本设计主要围绕贪吃蛇游戏展开。

众所周知,贪吃蛇游戏一直以来是比较流行的。

传统的贪吃蛇游戏功能比较少,对蛇的控制仅限于向左转和向右转,而现在的贪吃蛇游戏已经发展的相当好;具有更多的功能和友好的界面。

例如,最近流行的免费的3D版的贪吃蛇游戏,界面相当的美观,有很强的立体效果,真实感更强,食物也为立体的且颜色绚丽。

在3D 版贪吃蛇游戏里面,墙壁是真实的墙壁,障碍物比较多,如树、土丘等。

此外,其功能更多更强,可以选择难度。

不过,总而言之,3D版与传统的贪吃蛇游戏有共性,即娱乐性与益智性。

这些也是贪吃蛇游戏的优点。

本人因水平有限,只能设计简单的贪吃蛇游戏。

不过,在功能上,比传统贪吃蛇游戏更丰富。

蛇可以反向运动,操作起来,显得更为灵活。

界面的颜色选用绿色,不易使眼睛疲劳。

关键词:3D版;传统;灵活;贪吃蛇游戏设计目录1、概述1.1、用TC设计程序的方法1.2、简要说明2、设计要求3、系统分析与模块设计3.1、算法设计3.2、数据结构3.3、模块设计3.4、模块枝干图4、程序流程图4.1、图形驱动4.2、开始画面4.3、显示食物4.4、蛇向前移动4.5、判蛇死4.6、吃到食物后处理4.7、判蛇反向移动4.8、游戏结束4.9、图形结束5、程序设计及关键源代码6、运行结果分析7、实习心得盐城工学院本科生课程设计报告(2008)贪吃蛇游戏的设计1 .概述1.1、用TC设计程序的方法首先应了解设计要求,然后按照功能设计模块,每个模块完成特定的功能,要使模块间的耦合性小,内聚性高;设计模块是相当重要的一个环节。

模块的数量不宜太多,也不宜太少,要使每个模块都能比较简单的转换成流程图。

模块设计完成后,就该给每个模块绘制流程图了。

流程图要简单,容易理解,多用中文。

不宜写过长的代码,增加理解难度。

流程图与模块枝干图均可用绘图软件绘制,可适当加些背景色,用以区分。

贪吃蛇实训报告

贪吃蛇实训报告

郑州轻工业学院实训报告实训名称:贪吃蛇指导教师:姓名:学号:班级:提交日期:一.实验目的通过开发一款贪吃蛇游戏程序,熟练掌握C#编程语言、和面向对象程序设计方法,独立完成一个游戏程序的开发。

二.实验题目本次实训的题目为贪吃蛇。

通过使用C#编程语言来实现。

三.功能描述1.游戏的基本功能描述1)游戏场地是一片矩形区域的空地构成,蛇可以在这片定义的区域中自由移动。

2)定义一个Block来构成石块,蛇头,蛇身以及豆。

蛇由蛇头和蛇身组成。

3)当游戏开始之后,定义的区域中出现一颗豆和一条蛇,并且蛇不停地移动,蛇移动的方向与蛇头的方向一致。

4)通过space或者暂停键可以使游戏停止,蛇停止移动,分数停止积分。

5)当蛇移动时,玩家可以使用“↑”、“↓”、“←”和“→”四个方向键改变蛇的移动方向。

6)当蛇头与豆的位置重合时,豆被蛇吃掉,同时在草坪中再生成一颗新的豆,蛇身增加一节。

7)当蛇头碰到石块时,蛇死亡,游戏结束。

8)当蛇头咬到蛇身时,则蛇死亡,游戏结束。

9)当蛇头碰到草坪四周时,蛇立即毙命,游戏结束。

10)游戏分为不同的级别,第一关游戏速度为200,当蛇吃五个豆子就可以过关,级别显示为2,速度增加100变为300.第二关为吃够10个豆子,速度增加50,以后以此类推。

11)游戏菜单中设有游戏帮助,玩家可以通过点击帮助了解游戏的玩法。

12)对于不是第一次玩的玩家可以改变蛇的运动速度,来增加难度。

在菜单中设有加速和减速两个键,单击可以改变速度。

13)游戏菜单中还有时间显示。

14)当游戏暂停时,可以通过“继续”键使游戏继续进行。

四.需求分析本游戏用户可以自己练习和娱乐。

本游戏需要满足以下几点要求:(1)利用方向键“↑、↓、←、→”来改变蛇的运行方向。

(2)空格键暂停游戏,并在随机的地方产生食物。

(3)吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。

可行性分析:贪吃蛇游戏是一种简单的大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,做一个简单的贪吃蛇小游戏。

关于贪吃蛇的实训报告

关于贪吃蛇的实训报告

一、实训目的本次实训旨在通过C语言编程实现贪吃蛇游戏,巩固和加深对C语言程序设计的基本知识的理解和掌握,提高编程和程序调试的基本技能,并锻炼独立自主设计程序和编辑代码的能力。

通过设计贪吃蛇游戏,进一步理解和运用结构化程序设计的思想和方法,初步掌握开发一个小型实用系统的基本方法,学会调试一个较长程序的基本方法,以及掌握书写程序设计开发文档的能力。

二、实训内容1. 游戏规则贪吃蛇游戏的基本规则如下:- 蛇在游戏区域中上下左右移动,通过键盘方向键控制。

- 每次蛇头撞到食物,蛇身增长一节,同时计10分。

- 若蛇头撞到墙壁或自身,游戏结束。

- 游戏区域大小、蛇的初始长度、食物的生成方式等参数可调整。

2. 程序设计(1)数据结构- Food结构体:用于存储食物的位置信息,包括横坐标x、纵坐标y和是否生成食物的标志yes。

```cstruct Food {int x;int y;int yes;};```- Snake结构体:用于存储蛇的位置信息、长度、移动方向和生命状态。

```cstruct Snake {int x[N];int y[N];int node;int direction;int life;};```(2)功能模块- 初始化函数:初始化游戏区域、蛇的位置、长度、方向和生命状态,以及食物的位置信息。

- 键盘输入处理函数:获取键盘输入,控制蛇的移动方向。

- 食物生成函数:根据设定规则生成食物。

- 蛇移动函数:根据蛇的移动方向和速度,更新蛇的位置信息。

- 游戏判断函数:判断蛇是否吃到食物、撞到墙壁或自身,以及游戏是否结束。

- 界面绘制函数:绘制游戏区域、蛇和食物。

三、程序实现以下为部分关键代码示例:```c// 初始化函数void init() {// 初始化游戏区域、蛇的位置、长度、方向和生命状态,以及食物的位置信息}// 键盘输入处理函数void keyInput() {// 获取键盘输入,控制蛇的移动方向}// 食物生成函数void generateFood() {// 根据设定规则生成食物}// 蛇移动函数void moveSnake() {// 根据蛇的移动方向和速度,更新蛇的位置信息}// 游戏判断函数void judgeGame() {// 判断蛇是否吃到食物、撞到墙壁或自身,以及游戏是否结束}// 界面绘制函数void draw() {// 绘制游戏区域、蛇和食物}```四、实训心得与体会1. 编程能力提升:通过本次实训,我对C语言编程和程序设计有了更深入的理解,编程能力得到了显著提升。

贪吃蛇实习报告范文

贪吃蛇实习报告范文

一、实习背景随着计算机技术的不断发展,编程技能已经成为现代社会人才必备的能力之一。

为了提高自己的编程能力,我在某科技公司进行了为期一个月的贪吃蛇游戏开发实习。

通过这次实习,我对贪吃蛇游戏有了更深入的了解,并掌握了相关编程技能。

二、实习目的1. 学习和掌握贪吃蛇游戏的基本原理和开发流程;2. 提高自己的编程能力,特别是C语言编程能力;3. 熟悉游戏开发工具和开发环境;4. 培养团队合作和沟通能力。

三、实习内容1. 游戏设计在实习过程中,我首先对贪吃蛇游戏进行了详细的设计。

游戏分为以下几部分:(1)游戏界面:包括标题界面、游戏界面、游戏结束界面等;(2)游戏规则:蛇在游戏区域内吃食物,蛇身会逐渐变长,蛇头撞到墙壁或自身则游戏结束;(3)游戏控制:通过键盘上的四个方向键控制蛇的移动方向;(4)游戏得分:蛇每吃一个食物,得分增加10分;(5)游戏难度:随着游戏进行,食物出现速度逐渐加快。

2. 程序开发在游戏设计完成后,我开始进行程序开发。

主要使用了C语言进行编程,以下是程序的主要模块:(1)初始化游戏环境:设置游戏窗口、绘制游戏界面等;(2)生成食物:在游戏区域内随机生成食物,确保食物不与蛇身重叠;(3)蛇的移动:根据用户输入的方向键,控制蛇的移动方向;(4)检测碰撞:检测蛇头是否撞到墙壁或自身,如果碰撞则游戏结束;(5)更新分数:根据蛇吃食物的次数,更新游戏分数;(6)游戏结束:当蛇头撞到墙壁或自身时,显示游戏结束界面。

3. 调试与优化在程序开发过程中,我遇到了一些问题,如蛇的移动速度不均匀、食物生成位置不合理等。

针对这些问题,我进行了以下优化:(1)调整蛇的移动速度,使其更加均匀;(2)优化食物生成算法,确保食物生成位置合理;(3)调整游戏界面,使界面更加美观。

四、实习成果通过一个月的实习,我成功完成了贪吃蛇游戏开发,并取得以下成果:1. 掌握了贪吃蛇游戏的基本原理和开发流程;2. 提高了C语言编程能力,特别是结构体、函数、数组等知识的应用;3. 熟悉了游戏开发工具和开发环境;4. 培养了团队合作和沟通能力。

贪吃蛇实习报告总结

贪吃蛇实习报告总结

贪吃蛇实习报告总结本次实习的主要内容是设计和实现一个贪吃蛇游戏。

通过本次实习,我深刻地理解了程序设计的基本原理和编程技巧,同时也锻炼了自己的解决问题和团队合作的能力。

在本次实习中,我负责实现了贪吃蛇游戏的主要功能,包括游戏逻辑、界面显示和键盘控制。

在实现过程中,我采用了面向对象的设计方法,将游戏中的各种元素抽象成类,并采用继承和多态等机制来实现游戏的各种功能。

同时,我还使用了计算机图形学的基本知识,实现了游戏界面的绘制和更新。

在团队合作方面,我和其他同学一起完成了游戏的设计和实现工作。

我们通过定期会议和在线讨论等方式,交流了彼此的想法和进展,并及时解决了遇到的问题。

在分工合作的过程中,我学会了如何合理地分配任务和协调工作,同时也提高了自己的沟通能力和团队合作精神。

在解决问题的过程中,我遇到了许多挑战。

例如,在实现游戏逻辑时,我需要处理许多复杂的状态和情况,如蛇的移动、食物的生成和得分等。

为了解决这些问题,我通过阅读相关文献和参考其他游戏的实现方式,不断摸索和尝试,最终找到了合适的解决方案。

通过本次实习,我不仅学会了如何设计和实现一个游戏,更重要的是学会了如何面对复杂的问题和挑战。

在实现游戏的过程中,我不断遇到各种困难和障碍,但是通过自己的努力和团队合作,我最终克服了这些困难,成功地完成了实习任务。

这种解决问题的能力和团队合作精神将对我未来的学习和工作产生积极的影响。

总结起来,本次实习是一次非常有意义的学习和实践过程。

通过设计和实现一个贪吃蛇游戏,我不仅掌握了程序设计的基本原理和编程技巧,还锻炼了自己的解决问题和团队合作的能力。

我相信这次实习经历将对我未来的学习和工作产生积极的影响。

贪吃蛇的实训报告

贪吃蛇的实训报告

一、实训目的本次实训旨在通过设计并实现贪吃蛇游戏,巩固和加深学生对C语言程序设计的基本知识,提高学生的编程能力和实际动手操作能力。

通过实训,使学生能够熟练掌握C语言编程技巧,理解程序设计的基本思想和流程,同时培养学生的团队协作和问题解决能力。

二、实训内容1. 游戏规则贪吃蛇是一款经典的电脑游戏,玩家通过键盘控制蛇在游戏区域中移动,吃掉随机出现的食物。

蛇在吃掉食物后,长度会增加,得分增加。

如果蛇头撞到墙壁或自己的身体,游戏结束。

2. 游戏界面游戏界面由一个矩形区域组成,代表游戏区域。

蛇用一系列方块表示,食物用不同的颜色表示。

游戏开始时,蛇的长度为3,随机生成食物。

游戏过程中,蛇会根据玩家的输入移动。

3. 游戏逻辑(1)初始化:设置游戏区域大小、蛇的初始位置和方向、食物的初始位置等。

(2)游戏循环:不断检测玩家输入,更新蛇的位置,判断蛇是否吃到食物、撞到墙壁或自己的身体。

(3)游戏结束:当蛇撞到墙壁或自己的身体时,游戏结束。

4. 程序设计(1)数据结构:定义蛇、食物和游戏区域的数据结构。

(2)函数设计:设计初始化函数、移动函数、判断是否吃到食物函数、判断是否撞到墙壁或自己的身体函数等。

(3)主函数:调用相关函数,实现游戏循环。

三、实训过程1. 设计阶段首先,根据游戏规则和界面设计,确定游戏的数据结构和函数。

然后,编写程序代码,实现游戏的基本功能。

2. 编码阶段根据设计阶段的设计,使用C语言编写程序代码。

在编写过程中,注意代码的可读性和可维护性。

3. 调试阶段在编写代码过程中,不断调试程序,修复出现的错误。

调试过程中,注意观察程序运行情况,分析问题原因,并找出解决方案。

4. 测试阶段完成程序编写后,进行测试,确保程序能够正常运行。

测试过程中,注意观察游戏效果,确保游戏规则和界面设计符合预期。

四、实训成果通过本次实训,成功设计并实现了贪吃蛇游戏。

游戏运行稳定,功能完整,达到了实训目的。

五、实训心得1. 理解程序设计的基本思想和流程,掌握C语言编程技巧。

贪吃蛇项目个人总结

贪吃蛇项目个人总结

贪吃蛇项目个人总结
贪吃蛇项目是一个经典的游戏项目,对于个人的学习和编程能力提升有很大的帮助。

在我完成这个项目的过程中,我收获了许多经验和教训,下面是我的个人总结:
1. 学习了基本的游戏开发原理和技术。

贪吃蛇项目涉及到很多游戏开发的基本概念,
如游戏循环、碰撞检测、事件处理等。

通过实践这个项目,我深入了解了这些原理和
技术,并将它们应用到了实际项目中。

2. 锻炼了问题解决的能力。

在项目的开发过程中,我遇到了很多问题,比如游戏速度
控制、界面设计等。

通过分析问题、查找资料、尝试不同的解决方案,我逐渐学会了
如何解决这些问题,锻炼了自己的问题解决能力。

3. 加深了对面向对象编程的理解。

贪吃蛇项目中,我使用了面向对象的编程方式进行
开发,将蛇、食物、游戏界面等抽象为对象,通过它们之间的交互来实现游戏逻辑。

这样的开发方式使得代码结构清晰、易于维护,并且更符合现实世界的模型。

4. 体验了开发一个完整项目的过程。

在贪吃蛇项目中,我从项目的需求分析、设计到
最终的实现和测试,全程参与了整个项目的开发过程。

通过这个过程,我学会了如何
规划和组织一个项目,如何分配时间和资源,以及如何与团队成员合作。

综上所述,贪吃蛇项目对于个人的学习和成长有着很大的帮助。

通过这个项目,我不
仅学会了游戏开发的基本原理和技术,还提高了问题解决能力和面向对象编程的理解。

希望在未来的学习和工作中能够继续运用这些经验和技巧,不断提升自己的能力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

郑州轻工业学院实训报告实训名称:贪吃蛇指导教师:姓名:学号:班级:提交日期:一.实验目的通过开发一款贪吃蛇游戏程序,熟练掌握C#编程语言、和面向对象程序设计方法,独立完成一个游戏程序的开发。

二.实验题目本次实训的题目为贪吃蛇。

通过使用C#编程语言来实现。

三.功能描述1.游戏的基本功能描述1)游戏场地是一片矩形区域的空地构成,蛇可以在这片定义的区域中自由移动。

2)定义一个Block来构成石块,蛇头,蛇身以及豆。

蛇由蛇头和蛇身组成。

3)当游戏开始之后,定义的区域中出现一颗豆和一条蛇,并且蛇不停地移动,蛇移动的方向与蛇头的方向一致。

4)通过space或者暂停键可以使游戏停止,蛇停止移动,分数停止积分。

5)当蛇移动时,玩家可以使用“↑”、“↓”、“←”和“→”四个方向键改变蛇的移动方向。

6)当蛇头与豆的位置重合时,豆被蛇吃掉,同时在草坪中再生成一颗新的豆,蛇身增加一节。

7)当蛇头碰到石块时,蛇死亡,游戏结束。

8)当蛇头咬到蛇身时,则蛇死亡,游戏结束。

9)当蛇头碰到草坪四周时,蛇立即毙命,游戏结束。

10)游戏分为不同的级别,第一关游戏速度为200,当蛇吃五个豆子就可以过关,级别显示为2,速度增加100变为300.第二关为吃够10个豆子,速度增加50,以后以此类推。

11)游戏菜单中设有游戏帮助,玩家可以通过点击帮助了解游戏的玩法。

12)对于不是第一次玩的玩家可以改变蛇的运动速度,来增加难度。

在菜单中设有加速和减速两个键,单击可以改变速度。

13)游戏菜单中还有时间显示。

14)当游戏暂停时,可以通过“继续”键使游戏继续进行。

四.需求分析本游戏用户可以自己练习和娱乐。

本游戏需要满足以下几点要求:(1)利用方向键“↑、↓、←、→”来改变蛇的运行方向。

(2)空格键暂停游戏,并在随机的地方产生食物。

(3)吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。

可行性分析:贪吃蛇游戏是一种简单的大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,做一个简单的贪吃蛇小游戏。

贪吃蛇的核心算法是如何实现蛇的移动和吃掉食物后如何变成新的蛇体。

没有碰到食物的时候,把当前运动方向上的下个节点入队,并以蛇节点的颜色绘制这个节点,然后把头指针所指的节点出队,并以游戏框架内部背景色重绘出队的节点,这样就可以达到移动的效果。

而在吃到食物的时候,则只需把食物入队即可。

实现贪吃蛇的基本的蛇身移动、吃到食物身体增长、和碰到墙壁或自身死亡,能够暂停和开始。

玩家可以根据自己的水平选择不同的级别进行游戏挑战。

贪吃蛇游戏中定义如下:1) 空白区域(Lawn):定义的区域是贪吃蛇游戏的场地。

豆、石头和蛇只能存在于空白区域的范围之内。

根据个人爱好还可以添加背景,改变区域的大小和颜色。

2) 蛇(Snake):在贪吃蛇游戏中,蛇由若干节组成,其中第一节是蛇头,在蛇头上面定义两个点,作为蛇的眼睛,其余是蛇身。

在游戏过程中,有且仅有一条蛇,并且蛇在不停地移动。

如果蛇吃了豆,则蛇生长一节。

如果蛇头碰到蛇身,蛇死亡,游戏结束。

如果蛇头离开所定义的区域,则蛇死亡游戏结束。

当蛇头撞到定义的石块上的时候游戏结束。

在定义蛇的时候可以改变蛇的初始长度,也可以改变蛇的颜色和大小。

3) 豆(Bean):在贪吃蛇游戏中,豆是蛇的食物。

在游戏过程中,有且仅有一颗豆。

如果蛇吃了豆,则重新生成一颗豆。

豆的出现是随机性的。

4)石块(stone):游戏中石块和豆是同时出现的,不同的是,豆是随机产生的,而石块是固定的,它的坐标在写代码的时候就定义好了,不能够改变。

它的大小和颜色也可以随便的改变。

5)菜单(MenuStrip):在贪吃蛇游戏中有游戏菜单,里面有开局、暂停、继续、加速、减速、帮助等菜单。

还有Label控件,显示速度、时间、日期和积分的。

五.设计说明Snake的每一节都有位置和大小等属性。

而Bean和stone也具有这两个属性。

抽象出这三者的共同特征,抽象出一般类Block,用于描述一个块。

Block派生出Bean和SnakeBlock两个类,其中SnakeBlock 类用于描述蛇的一节。

为了使游戏的运行更易于控制,定义Game类用于启动、暂停和继续游戏。

根据需求分析可知,Lawn仅包含大小和颜色两个属性。

为了减少类的数量,可将其大小和颜色等属性添加到Game类中。

综上所述,在贪吃蛇游戏中,有Block(块)、Bean(豆)、SankeBlock (节)、Snake(蛇)、Game(游戏)和MainForm(用户接口)六个类。

游戏逻辑构思图如下:重新开局游戏的设计如下:游戏菜单游戏图标及名称石块速度显示成绩显示级别显示日期及时间显示游戏的定蛇身豆子六.源代码using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication1{public partial class MainForm : Form{int a = 200;//定义初速度为200private Game game;//DateTime c;public MainForm(){InitializeComponent();game = new Game(lawn.Width, lawn.Height);timer1.Enabled = true;timer1.Interval = a;timer1.Enabled = false;Velocity.Text = a.ToString();}Block是用来构成Bean(豆)和Snake(蛇)还有Stone(石块)的最基本的单位,是Bean和SnakeBlock的基类。

Block类的参考代码如下。

class Block{protected Point origion; //Block的左上顶点public const int WIDTH = 10; //Block的宽度public const int HEIGHT = 10; //Block的高度protected Color color; //Block的颜色public Block(){origion = new Point(0, 0);color = new Color();}public Block(int x, int y, Color _color){origion = new Point(x, y);color = _color;}public Point Origion{get{return origion;}}public void Display(Graphics g){SolidBrush brush = new SolidBrush(color);g.FillRectangle(brush, origion.X, origion.Y, WIDTH, HEIGHT);Pen pen = new Pen(Color.Black);g.DrawRectangle(pen, new Rectangle(origion.X, origion.Y, WIDTH - 1, HEIGHT - 1));}public void Clear(Graphics g, Color backGroundColor){SolidBrush brush = new SolidBrush(backGroundColor);g.FillRectangle(brush, origion.X, origion.Y, WIDTH, HEIGHT);}}这是对豆的定义,是由Block派生而来的,在系统开始时,使豆产生,它的出现位置为随机生成。

其代码如下:class Bean : Block{public static int f = 0;//吃到豆子的个数public Bean(Color _color){origion = new Point(0, 0);color = _color;}public void Creat(Graphics g, Color backGroundColor, int lawnWidth, int lawnHeight, Snake snake){Clear(g, backGroundColor);bool bGetAPosition = false; //是否找到生成豆的位置Random random = new Random();while (!bGetAPosition){origion.X = random.Next(0, lawnWidth - 1) / WIDTH * WIDTH;origion.Y = random.Next(0, lawnHeight - 1) / HEIGHT * HEIGHT;int i;for (i = 0; i < snake.Length; i++){if (origion == snake.blocks[i].Origion)break;}if (i == snake.Length)bGetAPosition = true;}Display(g);f++;}new public void Display(Graphics g){SolidBrush brush = new SolidBrush(color);g.FillRectangle(brush, origion.X, origion.Y, WIDTH, HEIGHT);Pen pen = new Pen(Color.Black);g.DrawRectangle(pen, new Rectangle(origion.X, origion.Y, WIDTH - 1, HEIGHT - 1));}//Display(g);}SnakeBlock表示蛇的一节,是由Block派生而来的。

它组成蛇身,其代码如下所示:class SnakeBlock : Block{private bool isHead;public bool IsHead{get{return isHead;}public SnakeBlock(int x, int y, Color _color, bool _isHead){origion = new Point(x, y);color = _color;isHead = _isHead;}public void ChangeHeadToBody(){if (isHead)isHead = false;}public void Display(Graphics g, Direction direction){base.Display(g);if (isHead){//绘制蛇眼SolidBrush brush = new SolidBrush(Color.Black);switch (direction){case Direction.Up:case Direction.Down:g.FillRectangle(brush, origion.X + WIDTH / 4, origion.Y + HEIGHT / 2, 2, 2);g.FillRectangle(brush, origion.X + WIDTH / 4 * 3, origion.Y + HEIGHT / 2, 2, 2);break;case Direction.Left:case Direction.Right:g.FillRectangle(brush, origion.X + WIDTH / 2, origion.Y + HEIGHT / 4, 2, 2);g.FillRectangle(brush, origion.X + WIDTH / 2, origion.Y + HEIGHT / 4 * 3, 2, 2);break;}}}}控制蛇头运动的方向public enum Direction{Down,Left,Right};对蛇的编码也是由Block派生而来的,在这里面可以定义蛇的颜色和长度。

相关文档
最新文档