(完整word版)贪吃蛇暑期实训总结报告

合集下载

贪吃蛇游戏_实习报告

贪吃蛇游戏_实习报告

课程设计报告贪吃蛇游戏设计专业信息工程系学生姓名王洪松班级信息类101班学号100810518时间2011-03-28—2011-04-01课程设计任务书题目贪吃蛇系(部) 信息工程系专业信息类班级2010级1班学生姓名王洪松学号10081051803 月28 日至04 月01 日共 1 周指导教师(签字)系主任(签字)年月日贪吃蛇游戏设计摘要:贪吃蛇是一款经典的休闲游戏,操作小蛇不停的朝食物的方向前进,直到吃掉了食物。

每吃一个食物,小蛇都会长长一节,随之而来的难度加大;当小蛇的头撞到墙时或者小蛇的头与身体相撞时,小蛇就会死亡;当然,小蛇的速度越快,每一个食物的分数就越高。

进程安排3月28日:规划程序需要调用的各个函数,根据要求要实现的内容 3月29日:图形驱动函数 3月30日:开始画面函数3月31日:控制玩游戏过程的函数4月1日: 图形结束函数组装程序,及其调试020406080100第一季度第三季度东部西部北部开发环境概述Visual C++是微软公司的重要产品之一, 是一种功能强大行之有效的可视化编程工具。

它提供了MFC 类库,使用户可以方便的开发自己想实现的功能。

Visual C++6.0的主要特点:(1)自动化和宏功能。

(2)可以灵活地定制工具栏和菜单。

(3)可以直接运行和调试程序,还可以使用宏语言来自动操作调试器。

(4)支持Internet 连接。

(5)一个新的便捷的项目系统可以允许一个工作区内包含多个不同的项目类型。

(6)在工作区内可以包含多个并列的工程文件。

(7)可以在对话框中使用WizardBar 将程序同可视化元素联系起来。

(8)Find in File 命令支持两个独立的输出窗格,可以保存上一次搜索的结果。

这些新特性可以更好地利用Visual C++开发工具进行Windows 应用程序开发。

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

北邮计算机实习贪吃蛇游戏编写报告

北邮计算机实习贪吃蛇游戏编写报告

北邮计算机实习贪吃蛇游戏编写报告计算机实习报告姓名:班级:学号:⼩班序号:指导⽼师:题⽬:贪吃蛇⼩游戏邮箱:贪吃蛇⼩游戏实验报告⼀.功能说明1.1总体功能说明该软件主要实现的是贪吃蛇的基本功能,达到简单的娱乐效果。

⾸先,完成的是贪吃蛇的移动和转弯,通过上下左右四个按键来实现蛇的移动和转弯。

其次还能实现蛇的吃⾷过程,游戏过程中会在游戏区域内随即产⽣⼀个⾷物,玩家通过控制蛇的移动使蛇的头部通过⾷物,则完成进⾷过程,⾷物消失,蛇的⾝体增长⼀截,并在此随机产⽣新的⾷物。

最后还可以完成蛇的死亡过程,即游戏结束的控制过程,如果蛇的头部碰到了墙壁或是⾃⼰的⾝体就会死亡,游戏结束。

此外还在游戏中加了⾳效,使得玩家玩游戏的过程中能够更加放松。

具有操作简单,易于控制,易学易玩的特点。

1.2⽤户界⾯本图为游戏的主界⾯,其中外⾯的⼀圈紫⾊“■”为边界,边界内连成⼀串的“■”是蛇的⾝体,“●”形状的图标即为⾷物。

该界⾯⽤于玩家与计算机的交流,使玩家能够通过图形界⾯来控制蛇的⾏为,进⽽实现游戏过程。

1.3使⽤⽅法分别使⽤“↑↓←→”四个按键来实现对蛇的上下左右的控制,随着蛇的长度的增加,虽然蛇移动的速度没有变化,但是由于空间⼤⼩有限,⽽蛇的长度在逐渐增加,故使得游戏的难度组建增⼤。

⼆.程序设计说明2.1 总体设计框架int main(){ 播放声⾳定义数组记录蛇的横纵坐标定义变量记录蛇的长度定义变量记录⾷物⽬标的位置定义变量判定游戏是否结束init(snakeLocation_x,snakeLocation_y,snakeLength); createObject(object_x,object_y); //初始化while(select为真){ switch(choice){case KEY_UP:do {将蛇的末尾擦除后⼀节赋值给前⼀节判断游戏是否结束蛇头转向转弯后的位置}case KEY_DOWN:{将蛇的末尾擦除后⼀节赋值给前⼀节判断游戏是否结束蛇头转向转弯后的位置}case KEY_RIGHT:{将蛇的末尾擦除后⼀节赋值给前⼀节判断游戏是否结束蛇头转向转弯后的位置}case KEY_LEFT:{将蛇的末尾擦除后⼀节赋值给前⼀节判断游戏是否结束蛇头转向转弯后的位置}case KEY_ESC :程序将会停⽌}}}2.2 关键算法描述算法1:voidinit(int* snakeLocation_x,int* snakeLocation_y,int&snakeLength)该算法的功能是⽤来进⾏初始化实现,实现游戏边界的设计、贪吃蛇⾝体的初始化、贪吃蛇⾝体长度的初始化、在⽆输⼊的情况下蛇的移动。

贪吃蛇实训报告致谢

贪吃蛇实训报告致谢

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

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

首先,我要感谢我的指导教师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设计程序的方法首先应了解设计要求,然后按照功能设计模块,每个模块完成特定的功能,要使模块间的耦合性小,内聚性高;设计模块是相当重要的一个环节。

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

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

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

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

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

贪吃蛇暑期实训总结报告

贪吃蛇暑期实训总结报告

贪吃蛇暑期实训总结报告实训报告实训题⽬:贪吃蛇游戏程序设计院系:计算机科学与⼯程学院专业:⽹络⼯程班级:⽹络⼯程131学号:090213128姓名:指导教师:肖微实训地点:九章楼N6-101开课时间:2013 ⾄2014学年第 2 学期常熟理⼯学院计算机科学与⼯程学院制学⽣姓名周豪实训报告成绩评语:指导教师(签名)年⽉⽇说明:指导教师评分后,实训报告交院办公室保存。

⽬录1实训的⽬的和任务 (5)实训的⽬的: (5)实训的任务: (6)2.开发环境(软件开发环境和硬件开发环境) (6)3.界⾯设计 (6)3.1设计思路 (6)3.2实现原理 (7)4.算法设计 (9)5.程序流程 (30)6.总结 (31)1实训的⽬的和任务实训的⽬的:1.巩固和加深对C语⾔课程基本知识的理解和掌握2.掌握C语⾔编程和程序调试的基本技能3.利⽤C语⾔进⾏基本的程序设计4.掌握书写程序设计说明⽂档的能⼒5.提⾼运⽤C语⾔解决实际问题的能⼒6. 进⼀步理解和运⽤结构化程设计的思想和⽅法7.独⽴完成⼀个游戏的设计应⽤实训的任务:1.分析实训题⽬要求2.了解实训要求内容3.掌握实训要求代码4.编写程序代码,调试程序使其能正确运⾏5.设计完成的软件要便于操作和使⽤6.完成课程设计报告,并进⾏答辩2.开发环境(软件开发环境和硬件开发环境)1、⼀台能正常运⾏的计算机电脑2、Windows XP3、Microsoft Visual Studio20104、Microsoft Word20103.界⾯设计3.1设计思路:⼤家在运⾏这个游戏的时候,开始界⾯能够出现⼀只蛇,这样的图案⽐较符合游戏的内容。

⾸先是蛇图形的绘画,我们可以运⽤搜狗输⼊法轻松的绘出蛇的⼤致图像,但是值得⼤家注意的是搜狗直接⽣成的图形,在⾥⾯出现了“\”的符号,是Visual Studio不能识别的字符,应该改成“\\”,否则程序不能运⾏。

除此之外,⼀个简单的游戏介绍也是必不可少的,使⽤QQ拼⾳输⼊法中的符号⼯具栏,再加上⾃⼰制定的游戏规则,可以⽣成各种我们需要的游戏简介画⾯。

C语言贪吃蛇实验报告

C语言贪吃蛇实验报告

C语言程序设计实训报告姓名专业班级指导教师2011 年7月14日目录一.实训目的和要求....................................................................... 1二.实训任务内容........................................................................... 1三.详细设计说明........................................................................... 1四.软件使用说明........................................................................... 3五.实训心得与体会....................................................................... 3六.参考文献................................................................................... 5七.部分程序清单(带有详细的注释)....................................... 6八.程序结果............................................................................... 10一.实训目的和要求1.实训目的本实训是软件技术专业重要的实践性环节之一,是在学生学习完《C语言程序设计》课程后进行的一次全面的综合练习。

本实训的目的和任务:(1). 巩固和加深学生对C语言课程的基本知识的理解和掌握(2). 掌握C语言编程和程序调试的基本技能(3). 利用C语言进行基本的软件设计(4). 掌握书写程序设计说明文档的能力(5). 提高运用C语言解决实际问题的能力2.实训要求(1). 分析实训题目的要求(2). 写出详细设计说明(3). 编写程序代码,调试程序使其能正确运行(4). 设计完成的软件要便于操作和使用(5). 设计完成后提交实训报告二.实训任务内容设计贪吃蛇游戏玩家通过键盘控制蛇在地图上寻找食物,蛇吃下食物,可以加分,碰到四壁游戏结束。

贪吃蛇实习报告范文

贪吃蛇实习报告范文

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

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

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

二、实习目的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. 培养了团队合作和沟通能力。

贪吃蛇实习报告总结

贪吃蛇实习报告总结

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

北京邮电大学小学期贪食蛇计算机实习报告

北京邮电大学小学期贪食蛇计算机实习报告

计算机实习报告姓名:班级:学号:小班序号:指导老师:夏海轮题目:贪吃蛇游戏邮箱:贪吃蛇游戏实验报告一.功能说明1.1总体功能说明贪吃蛇游戏主要实现的功能是蛇的移动,转向。

产生水果,吃水果增加蛇身的长度。

撞到自己,墙壁,障碍死亡,另外还有暂停,音乐和排除错误按键干扰等功能。

1.2用户界面一、游戏的主界面:进入游戏首先进入游戏的主界面。

上面有游戏说明,然后会有1,2,3三个选项。

分别用于选择游戏的难度。

按其他键默认选择容易级别。

二、游戏界面:游戏界面下方会及时显示游戏难度、得分和吃水果数。

三、死亡界面:此界面给出重新玩游戏或者结束游戏的选择。

1.3使用方法控制游戏的按键为:上:↑下:↓左:←右:→按空格键暂停,然后按空格键开始。

在游戏过程中按其他键无效。

游戏有三种等级可以选。

易,中,难。

区别是蛇的移动速度的不同。

二.程序设计说明2.1 总体设计框架游戏开始界面选择难度易中难游戏界面选择重新开始死亡游戏结束,退出与增长产生置是否正确移动产生水果2.2 关键算法描述算法:算法输入参数和输出参数,算法功能,使用什么存储结构,在主程序中起什么作用,可以使用框图或伪代码表示。

算法1:if(ch1==224)//按了方向键{int ch2=_getch();//从缓冲区再获得一个字符if (ch2==72)//向上{if(coordinate[(hx-2)/2][hy]==2)//不能反向地走,忽略,继续自动走{Automatic( );//使用自动移动的函数}else{coordinate[(hx-2)/2][hy]=1;//留下移动方向的标记,让身体能够跟上蛇头的轨迹hy=hy-1;//蛇头高度减一//判断有没有撞墙if(coordinate[(hx-2)/2][hy]>0)// 撞到了自身或者栅栏{textout(handle,35,17,head,1, " Game Over!");//输出break;}else if(coordinate[(hx-2)/2][hy]<0)//吃到水果{marks=marks+600/speed;//加分fs=0;//标志重置tailFlag = false;/***/coordinate[(hx-2)/2][hy]=1;//留下标记textout(handle,hx,hy,head,1, "■");//输出fruiteat(handle);//使用吃到水果后的函数}else if(coordinate[(hx-2)/2][hy]==0)//走到空地上{coordinate[(hx-2)/2][hy]=1;//留下标记textout(handle,hx,hy,head,1, "■");//输出}}}实现的是按键之后的变化。

贪吃蛇实训报告

贪吃蛇实训报告

时间:二O二一年七月二十九日郑州轻产业学院之马矢奏春创作实训陈述实训名称:贪吃蛇指导教师:姓名:学号:班级:提交日期:一.实验目的经由过程开拓一款贪吃蛇游戏程序,闇练掌握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{publicpartialclassMainForm : Form{int a = 200;//定义初速度为200privateGame game;//DateTime c;public MainForm(){InitializeComponent();game = newGame(lawn.Width, lawn.Height);timer1.Enabled = true;timer1.Interval = a;timer1.Enabled = false;Velocity.Text = a.ToString();}Block是用来组成Bean(豆)和Snake(蛇)还有Stone(石块)的最底子的单位,是Bean和SnakeBlock的基类.Block类的参考代码如下.classBlock{protectedPoint origion; //Block的左上顶点publicconstint WIDTH = 10; //Block的宽度publicconstint HEIGHT = 10; //Block的高度protectedColor color; //Block的颜色public Block(){origion = newPoint(0, 0);color = newColor();}public Block(int x, int y, Color _color){origion = newPoint(x, y);color = _color;}publicPoint Origion{get{return origion;}}publicvoid Display(Graphics g){SolidBrush brush = newSolidBrush(color);g.FillRectangle(brush, origion.X, origion.Y, WIDTH, HEIGHT);Pen pen = newPen(Color.Black);g.DrawRectangle(pen,newRectangle(origion.X, origion.Y, WIDTH - 1, HEIGHT - 1)); }publicvoid Clear(Graphics g, Color backGroundColor){SolidBrush brush = newSolidBrush(backGroundColor);g.FillRectangle(brush, origion.X, origion.Y, WIDTH, HEIGHT);}}这是对豆的定义,是由Block派生而来的,在系统开始时,使豆产生,它的消掉地位为随机生成.其代码如下:classBean : Block{publicstaticint f = 0;//吃到豆子的个数public Bean(Color _color){origion = newPoint(0, 0);color = _color;}publicvoid Creat(Graphics g, Color backGroundColor, int lawnWidth, int lawnHeight, Snake snake){Clear(g, backGroundColor);bool bGetAPosition = false; //是否找到生成豆的地位Random random = newRandom();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++;}newpublicvoid Display(Graphics g){SolidBrush brush = newSolidBrush(color);g.FillRectangle(brush, origion.X, origion.Y, WIDTH, HEIGHT);Pen pen = newPen(Color.Black);g.DrawRectangle(pen, newRectangle(origion.X, origion.Y, WIDTH - 1, HEIGHT - 1));}//Display(g);}SnakeBlock暗示蛇的一节,是由Block派生而来的.它组成蛇身,其代码如下所示:classSnakeBlock : Block{privatebool isHead;publicbool IsHead{get{return isHead;}}public SnakeBlock(int x, int y, Color _color, bool _isHead) {origion = newPoint(x, y);color = _color;isHead = _isHead;}publicvoid ChangeHeadToBody(){if (isHead)isHead = false;}publicvoid Display(Graphics g, Direction direction){base.Display(g);if (isHead){//绘制蛇眼SolidBrush brush = newSolidBrush(Color.Black);switch (direction){caseDirection.Up:caseDirection.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;caseDirection.Left:caseDirection.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;}}}}掌握蛇头运动的标的目的publicenumDirection{Up,Down,Left,Right};对蛇的编码也是由Block派生而来的,在这里面可以定义蛇的颜色和长度.classSnake{publicstaticbool eatebean;privateint length;publicDirection direction;privateColor color;publicList<SnakeBlock> blocks;privateconstint INIT_LENGTH = 10;publicint Length{get{return length;}}public Snake(Color _color, Direction _direction){direction = _direction;color = _color;blocks = newList<SnakeBlock>();}publicvoid Creat(Graphics g, Color backGroundColor, int lawnWidth, int lawnHeight){Clear(g, backGroundColor);blocks.Clear();length = INIT_LENGTH;int x;int y;Random random = newRandom();x = random.Next(lawnWidth / 4, lawnWidth / 4 * 3) / Block.WIDTH * Block.WIDTH;y = random.Next(lawnHeight / 4 - 1, lawnHeight / 4 * 3) / Block.HEIGHT * Block.HEIGHT;blocks.Add(newSnakeBlock(x, y, color, true));蛇运动的标的目的掌握switch (direction){caseDirection.Up:for (int i = 1; i < length; i++){blocks.Add(newSnakeBlock(x, y + Block.HEIGHT * i, color, false));}break;caseDirection.Down:for (int i = 1; i < length; i++){blocks.Add(newSnakeBlock(x, y - Block.HEIGHT * i, color, false));}break;caseDirection.Left:for (int i = 1; i < length; i++){blocks.Add(newSnakeBlock(x + Block.WIDTH * i, y, color, false));}break;caseDirection.Right:for (int i = 1; i < length; i++){blocks.Add(newSnakeBlock(x - Block.WIDTH * i, y, color, false));}break;}Display(g);}publicvoid Grow(){int x = 2 * blocks[blocks.Count - 1].Origion.X -blocks[blocks.Count - 2].Origion.X;int y = 2 * blocks[blocks.Count - 1].Origion.Y -blocks[blocks.Count - 2].Origion.Y;blocks.Insert(length, newSnakeBlock(x, y, color, false));length++;}publicvoid Move(){int x = 0;int y = 0;blocks[0].ChangeHeadToBody();switch (direction){caseDirection.Up:x = blocks[0].Origion.X;y = blocks[0].Origion.Y -Block.HEIGHT;break;caseDirection.Down:x = blocks[0].Origion.X;y = blocks[0].Origion.Y +Block.HEIGHT;break;caseDirection.Left:x = blocks[0].Origion.X -Block.WIDTH;y = blocks[0].Origion.Y;break;caseDirection.Right:x = blocks[0].Origion.X +Block.WIDTH;y = blocks[0].Origion.Y;break;}blocks.Insert(0, newSnakeBlock(x, y, color, true));blocks.RemoveAt(blocks.Count - 1);}publicvoid Display(Graphics g){for (int i = 0; i < length; i++){blocks[i].Display(g, direction);}}publicvoid Clear(Graphics g, Color backGroundColor){for (int i = 0; i < length; i++){blocks[i].Clear(g, backGroundColor); }}publicvoid RemoveAfter(Graphics g, Color backGroundColor, int blockNum){for (int i = length - 1; i > blockNum - 1; i--){blocks[i].Clear(g, backGroundColor); blocks.RemoveAt(i);length = blockNum;}}石块的定义定义如下,在空白区域中定义一个地位(坐标),使之固定不动,在蛇头撞到这个坐标的时刻,参数传到判断蛇去世活的函数,时蛇去世亡,游戏停止.publicbool MeetStone(Point origion){if ((blocks[0].Origion.X == (origion.X + 40) &&blocks[0].Origion.Y == (origion.Y + 40)) ||(blocks[0].Origion.X == (origion.X + 300) &&blocks[0].Origion.Y == (origion.Y + 80)) || (blocks[0].Origion.X == (origion.X + 150) &&blocks[0].Origion.Y == (origion.Y + 200))||(blocks[0].Origion.X == (origion.X + 100) && blocks[0].Origion.Y == (origion.Y + 400))) returntrue;elsereturnfalse;}当蛇碰着一个豆时,使豆成为蛇体的一部分,其颜色和大小跟蛇一样,蛇身增加.publicbool CanEatBean(Bean bean){if (blocks[0].Origion == bean.Origion)returntrue;elsereturnfalse;}publicint CanEatSnake(){for (int i = 3; i < blocks.Count; i++){if (blocks[0].Origion == blocks[i].Origion)return i;}return 0;}publicvoid EatBean(Bean bean, Graphics g, Color backGroundColor, int lawnWidth, int lawnHeight){bean.Clear(g, backGroundColor);Grow();bean.Creat(g, backGroundColor, lawnWidth, lawnHeight, this);eatebean = true;}publicbool IsAlive(int lawnWidth, int lawnHeight){if (blocks[0].Origion.X < 0)returnfalse;if (blocks[0].Origion.Y < 0)returnfalse;if (blocks[0].Origion.X + Block.WIDTH > lawnWidth) returnfalse;if (blocks[0].Origion.Y + Block.HEIGHT > lawnHeight) returnfalse;elsereturntrue;}}Game掌握游戏的运行,担任在游戏开始时生成Bean、Stone和Snake,以及担任在游戏运行中Snake的移动、Snake的成长、Bean 的更生和石块的分娩.并随时检测Snake的去世活状态.Game类的参考代码如下:classGame{Point origion;publicSnake snake;publicBean bean;publicbool isSnakeAlive;publicint lawnWidth;publicint lawnHeight;public Game(int _lawnWidth, int _lawnHeight){Random random = newRandom();int x = random.Next(0, _lawnWidth - 1) / Block.WIDTH * Block.WIDTH;int y = random.Next(0, _lawnHeight - 1) / Block.HEIGHT * Block.HEIGHT;Direction direction = (Direction)random.Next(1, 4);snake = newSnake(Color.Red, direction);bean = newBean(Color.Red);isSnakeAlive = false;lawnWidth = _lawnWidth;lawnHeight = _lawnHeight;}publicvoid Begin(Graphics g, Color backGroundColor, int lawnWidth, int lawnHeight){isSnakeAlive = true;snake.Clear(g, backGroundColor);snake.Creat(g, backGroundColor, lawnWidth, lawnHeight);bean.Creat(g, backGroundColor, lawnWidth,lawnHeight, snake);游戏中石块的填充,可以按照本身制定的坐标来固定石块,可以修改其颜色.SolidBrush brush = newSolidBrush(Color.DarkViolet); Pen pen = newPen(Color.DarkViolet);g.FillRectangle(brush, origion.X + 40, origion.Y + 40, 10, 10);g.DrawRectangle(pen,newRectangle(origion.X + 40, origion.Y + 40, 10, 10));g.FillRectangle(brush, origion.X + 300, origion.Y + 80, 10, 10);g.DrawRectangle(pen,newRectangle(origion.X + 300, origion.Y + 80, 10, 10)); g.FillRectangle(brush, origion.X + 150, origion.Y + 200, 10, 10);g.DrawRectangle(pen,newRectangle(origion.X + 150, origion.Y + 200, 10, 10));g.FillRectangle(brush, origion.X + 100, origion.Y + 400, 10, 10);g.DrawRectangle(pen,newRectangle(origion.X + 100, origion.Y + 400, 10, 10)); }publicvoid OnTime(Graphics g, Color backGroundColor, int lawnWidth, int lawnHeight){if (isSnakeAlive){snake.Clear(g, backGroundColor);snake.Move();snake.Display(g);bean.Display(g);if (snake.CanEatBean(bean)){bean.Clear(g, backGroundColor); snake.EatBean(bean, g, backGroundColor, lawnWidth, lawnHeight);bean.Display(g);}int blockNum = snake.CanEatSnake();if (blockNum > 0){snake.RemoveAfter(g, backGroundColor, blockNum);isSnakeAlive = false;MessageBox.Show("就算再饿也不克不及咬本身啊,去世了吧!"); }if (!snake.IsAlive(lawnWidth,lawnHeight)||snake.MeetStone(origion))isSnakeAlive = false;}}}Timer组件用于在用户定义的时间距离激发事宜.在游戏的运行过程中,经由过程时间函数可以判断蛇的去世活,蛇吃豆子的若干.还有日期的显示,时间的显示.统计蛇吃豆子的若干.当吃够规定的豆的时刻,级别增加,游戏的速度增加,蛇运动速度增加.privatevoid timer1_Tick(object sender, EventArgs e) {Date.Text = DateTime.Today.ToLongDateString(); time.Text = DateTime.Now.ToLongTimeString(); Success.Text = (Bean.f *10).ToString();if (Bean.f == 5){jibie.Text = (1 + (Bean.f + 1) %5).ToString();timer1.Enabled = true;timer1.Interval = 100;Velocity.Text = (a + 100).ToString(); }if (Bean.f == 10 ){jibie.Text = (2 + (Bean.f + 1) % 10).ToString();timer1.Enabled = true;timer1.Interval = 80;Velocity.Text = (a + 150).ToString(); }if (Bean.f == 20){jibie.Text = (3 + (Bean.f + 1) % 20).ToString();timer1.Enabled = true;timer1.Interval = 70;Velocity.Text = (a + 200).ToString(); }if (Bean.f == 30){jibie.Text = (3 + (Bean.f + 1) %30).ToString();timer1.Enabled = true;timer1.Interval = 60;Velocity.Text = (a + 250).ToString(); }if (Bean.f == 40){jibie.Text = (3 + (Bean.f + 1) % 40).ToString();timer1.Enabled = true;timer1.Interval = 50;Velocity.Text = (a + 300).ToString(); }if (Bean.f == 50 ){MessageBox.Show("闯关成功!");}判断蛇的去世活if (game.isSnakeAlive){Graphics g;g = lawn.CreateGraphics();game.OnTime(g, lawn.BackColor, lawn.Width, lawn.Height);if (!game.isSnakeAlive){MessageBox.Show("去世翘翘!");jibie.Text = 1.ToString();}}}游戏的开始按钮,游戏开始,对的数据都初始化,个中有timer函数,以及级别,分数都初始化,蛇的运行速度也初始到本来的速度.豆的统计清零.privatevoid ToolStripMenuItemStart_Click(object sender, EventArgs e){Graphics g;g = lawn.CreateGraphics();game.Begin(g, lawn.BackColor, lawn.Width, lawn.Height);timer1.Enabled = true;ToolStripMenuItemPause.Enabled = true;ToolStripMenuItemContinue.Enabled = false;Bean.f = 0;timer1.Interval = 200;Velocity.Text = a.ToString();c= DateTime.Now;}privatevoid ToolStripMenuItemPause_Click(object sender, EventArgs e){timer1.Enabled = false;ToolStripMenuItemPause.Enabled = false;ToolStripMenuItemContinue.Enabled = true;}privatevoid ToolStripMenuItemContinue_Click(object sender, EventArgs e){timer1.Enabled = true;ToolStripMenuItemPause.Enabled = true;ToolStripMenuItemContinue.Enabled = false;}KeyDown 事宜.在贪吃蛇游戏中,运用“↑”、“↓”、“←”和“→”四个标的目的键修改蛇的移动标的目的.KeyDown 事宜用于在用户按键时,供应修改蛇移动标的目的的成效.privatevoid MainForm_KeyDown(object sender, KeyEventArgs e) {if (game.snake.direction == Direction.Down|| game.snake.direction == Direction.Up){switch (e.KeyCode){caseKeys.Left:game.snake.direction = Direction.Left;break;caseKeys.Right:game.snake.direction = Direction.Right;break;}}else{switch (e.KeyCode){caseKeys.Up:game.snake.direction = Direction.Up;break;caseKeys.Down:game.snake.direction = Direction.Down;break;}}快捷键成效,在游戏过程中,可以经由过程Space键使游戏暂停.if (e.KeyCode == Keys.Space){this.timer1.Enabled = false;ToolStripMenuItemPause.Enabled = false; ToolStripMenuItemContinue.Enabled = true; }}游戏帮忙按钮,当单击“帮忙”时,系统会弹出一个窗口,显示游戏的弄法.privatevoid ToolStripMenuItemHelp_Click(object sender, EventArgs e){timer1.Enabled = false;ToolStripMenuItemPause.Enabled = false;ToolStripMenuItemContinue.Enabled = true; MessageBox.Show("凹凸旁边键掌握蛇移动的标的目的,引导蛇头去吃豆子,吃一个豆子可以增加蛇的长度,\n当蛇头撞到墙壁上时,或者蛇头咬到蛇尾时,游戏停止.");}游戏的减速,单击时,游戏的Interval会增加20,显示的速度会随之削减50,蛇运动速度减慢.privatevoid ToolStripMenuItemLow_Click(object sender, EventArgs e){timer1.Enabled = true;timer1.Interval += 20;Velocity.Text = (int.Parse(Velocity.Text) - 50).ToString();ToolStripMenuItemPause.Enabled = false;ToolStripMenuItemContinue.Enabled = true;}游戏的加速,单击时,游戏的Interval会削减20,显示的速度会随之增加50,蛇运动的速度加速privatevoid ToolStripMenuItemQuick_Click(object sender,EventArgs e){timer1.Enabled = true;timer1.Interval -= 20;Velocity.Text = (int.Parse(Velocity.Text) + 50).ToString();ToolStripMenuItemPause.Enabled = false;ToolStripMenuItemContinue.Enabled = true;七.测试陈述1)测试用例2)测试过程①、拟定测试筹划.按照游戏的总体情况,仔细阐发游戏各个步调的运行可能消掉的状态,对各类情况进行汇总,然后拟定出一份具体测试步调.②、初步测试.按照拟定好的筹划进行游戏调试,消掉不测情况时及时记录.测试完后对所记录的不测情况进行阐发,然后提出改进的筹划,再进行修改.③、深度测试.对游戏进行最后的修改确认没有马脚后再进行测试,从各个方面进行一次整体的排查,知道不再消掉猜想之外的情况.3)测试成果程序能够正常运行.八.心得体会经由过程此次课程设计,我对游戏编程有了初步熟习,对游戏算法有了必定理解.从游戏的需求阐发,系统设计,再到游戏代码实现每一步都对本身是一个寻衅,当然参考了网上的一些材料,但是真的感到传染到游戏编程的快乐,也进修到很多器械.不知不觉中C#已经伴我们走了半年的时间了,当然在进修的过程中感应很是的难学,都有保持的念头了,但是在此次的实验中我成功的完成了实验,感应有些自满感.也增加了我对C#的好感,我们的教材并没有学完,在大二还要中断进修,在往后的进修中,必定要努力进修这个课程.它可以编写一个小游戏,等学的多了,一些新的游戏本身照样可以编出来,一想到本身可以编程写游戏了,就感应很自满,所以我对未来充满了欲望.。

贪吃蛇实训报告个人总结

贪吃蛇实训报告个人总结

一、实训背景随着计算机科学技术的不断发展,C语言作为一种基础编程语言,在各个领域都有着广泛的应用。

为了巩固和加深对C语言课程的基本知识的理解和掌握,提高运用C语言解决实际问题的能力,我们进行了贪吃蛇实训。

二、实训目的1. 巩固和加深对C语言课程的基本知识的理解和掌握;2. 掌握C语言编程和程序调试的基本技能;3. 利用C语言进行基本的软件设计;4. 提高独立自主设计程序、编写代码的能力;5. 学会调试一个较长程序的基本方法;6. 掌握书写程序设计说明文档的能力。

三、实训内容1. 游戏规则:通过键盘方向键控制蛇的移动,吃掉随机出现的食物,蛇的长度会随之增加。

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

2. 程序设计:使用C语言进行贪吃蛇游戏的设计与实现,包括以下几个模块:(1)初始化模块:初始化游戏界面、蛇的位置、食物的位置等。

(2)绘图模块:使用图形库函数绘制蛇、食物、墙壁等元素。

(3)控制模块:根据键盘输入,控制蛇的移动方向。

(4)碰撞检测模块:判断蛇是否撞到墙壁或自己的身体。

(5)游戏逻辑模块:更新蛇的位置、食物的位置、蛇的长度等。

四、实训过程1. 理解游戏规则,明确程序设计思路。

2. 分析C语言基础知识,为编程做准备。

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

4. 调试程序,解决出现的问题。

5. 优化程序,提高程序运行效率。

6. 编写程序设计说明文档,总结实训经验。

五、实训心得与体会1. 通过本次实训,我对C语言的基本知识有了更深入的理解,掌握了C语言编程和程序调试的基本技能。

2. 在实训过程中,我学会了如何运用C语言进行基本的软件设计,提高了独立自主设计程序、编写代码的能力。

3. 通过调试程序,我学会了如何解决程序中出现的问题,提高了程序调试能力。

4. 编写程序设计说明文档,让我更加注重程序设计的规范性和可读性。

5. 本次实训让我认识到,编程不仅仅是编写代码,还需要考虑程序的结构、逻辑和可维护性。

拓展训练贪吃蛇心得体会

拓展训练贪吃蛇心得体会

户外拓展训练感想2012年5月26日,天气晴,公司一行青年在团委的带领下前往长寿进行为期一天的户外拓展训练。

每次的拓展训练总会和恐怖联系在一起,然而,这次的训练结束之后,却全然没有之前的恐惧,取而代之的是无尽的回味与感受。

一、仔细聆听,明确目标在训练开始,教官让我们用手指比划个“人”字给他看,看似简单的事情,但最终只有几个人做正确了,原因是大部分人都没有听清楚是给教官看,而是从自己的角度来看的。

由此可以看出,在一个团队中,如果大家不能明确主要目标,急于站在自己的立场发表自己的意见,忽略聆听别人的想法,那么这个团队就很难创造出优秀的成绩。

二、凝聚力在每一个游戏中,我们都不能忽略大家是一个整体,如果每个人各行其是、我行我素、势必一盘散沙,工作就是难成功,甚至导致失败,只有团结大家才能心往一处想,劲往一处使,才能使团队成为完美的团队。

在每个团队里,都必须有一个领导,这个领导的选择很重要,必须具备良好的分析能力、判断能力、决策能力、大局意识与团队意识,能够引导团队的方向与大局,将团队里的每个人都凝聚成一个整体。

依据团队每一个个体的特点,合理的安排每个人的分工,做到人力资源的有效整合和最大利用,这样才能更高效的完成任务。

三、信任第二个类似贪吃蛇的游戏,团队中除一个人外大家都必须蒙着眼睛排成一列,站在队伍最后的可以看见目标的队员只能通过肢体语言来引导大家来完成任务。

在这个任务里,就要求大家做到对队员百分之一百的信任,将自己接收到的信号准确无误的传递给前一位,如果有一位队员凭着自己的感觉走,那就会导致这个任务的失败。

四、计划性计划性是一个团队取得成功不可忽视因素。

比如在翻纸牌的游戏中,谁先翻,翻哪个,如何记牌的位置都必须在事先有一个整体的构思,只有这样才会起到事半功倍的效果;相反,很有可能做无用工,浪费时间,重复工作,事倍功半。

我们在工作中也是如此,既要知道自己应该做什么,又要思考怎样做好,做事要先做计划,再开展行动。

贪吃蛇实验报告实验心得(3篇)

贪吃蛇实验报告实验心得(3篇)

第1篇一、实验背景随着科技的不断发展,计算机编程已成为现代教育的重要组成部分。

贪吃蛇游戏作为一款经典的编程学习项目,不仅能够帮助学生掌握编程基础,还能提高学生的逻辑思维能力和编程实践能力。

本次实验,我选择了使用C语言编写贪吃蛇游戏,通过实验过程,我收获颇丰。

二、实验目的1. 熟悉C语言编程环境,掌握基本的语法和编程技巧。

2. 学习并应用数组和结构体等数据结构,提高编程能力。

3. 理解并实现贪吃蛇游戏的算法,提高逻辑思维能力。

4. 掌握游戏开发的基本流程,提高编程实践能力。

三、实验过程1. 需求分析:在实验开始前,我首先对贪吃蛇游戏进行了需求分析,明确了游戏的基本规则和功能。

游戏规则包括:蛇的移动、食物的生成、蛇的吃食、蛇的生长、游戏结束等。

2. 设计思路:根据需求分析,我制定了以下设计思路:- 使用二维数组表示游戏界面,数组中的每个元素代表一个格子,蛇、食物、墙壁等都在数组中用特定的值表示。

- 使用结构体表示蛇的各个部分,包括蛇头的位置、方向、长度等。

- 通过键盘输入控制蛇的移动方向。

- 使用循环和条件语句实现蛇的移动、食物的生成、蛇的吃食、蛇的生长等功能。

- 判断游戏结束的条件,如蛇头撞墙、撞到自己等。

3. 编程实现:在确定了设计思路后,我开始编写代码。

首先,我定义了二维数组表示游戏界面,并初始化蛇和食物的位置。

然后,编写了蛇的移动、食物的生成、蛇的吃食、蛇的生长等功能。

最后,编写了游戏结束的判断条件。

4. 调试与优化:在编程过程中,我遇到了一些问题,如数组越界、蛇头移动方向错误等。

通过查阅资料和调试,我逐步解决了这些问题。

在实验过程中,我还对代码进行了优化,提高了程序的运行效率。

四、实验心得1. 编程基础的重要性:通过本次实验,我深刻体会到编程基础的重要性。

只有掌握了基本的语法和编程技巧,才能在编程过程中游刃有余。

2. 逻辑思维能力:在编写贪吃蛇游戏的过程中,我需要不断思考如何实现游戏的各个功能,这锻炼了我的逻辑思维能力。

(完整word版)贪吃蛇实验报告

(完整word版)贪吃蛇实验报告

《计算机程序设计》课程设计报告课题名称贪吃蛇游戏_____________ 班级_________________学号__________________姓名______________指导教师 ______________设计时间 _________ 至_______设计地点 __________________常熟理工学院计算机科学与工程学院常熟理工学院计算机科学与工程学院目录1需求分析 (1)2系统分析和设计 (1)2.1数据结构的设计和选择的理由 (1)2.2系统模块划分和模块结构 (2)2.3流程图 (2)2.4数据类型、全局变量和函数说明 (3)3程序测试和运行结果 (4)4课程报告小结 (5)4.1分数重叠显示 (5)4.2速度太快 (5)4.3食物可能出现在蛇身上 (5)附录A :程序源代码 (6)« C程序设计》课程设计1需求分析【阐述课程设计应该完成的功能】使用键盘的上下左右,来控制蛇的运动方向,ESC键退出,并显示得分。

2系统分析和设计2.1数据结构的设计和选择的理由本游戏中涉及的主要数据结构是如何表示运动的蛇、食物状态等问题。

2.1.1从游戏参考画面中我们可以看到,贪吃蛇的身体是一节节的,由一个个大小相同的方块组成,那么我们可以用一个(x,y)坐标为左上角的、固定宽度的正方形来表示一节蛇身。

为表示连续的多节身体,那么我们可以采用数组(或链表,或线性表)等数据结构来表示。

下面以数组方式为例:struct Point {int x, y;}struct Poi nt n odes[MAX_LENGTH]; // 蛇身数组,MAX_LENGTH 为最大蛇长贪吃蛇是在不断的运动的,我们研究蛇的运动可以发现这样的特点:1. 蛇头由键盘控制,键盘不操作时,保持原有方向运动;(用int direction;表示)2. 运动时,蛇身后面一节移动到前面一节的位置。

当我们用nodes[0]表示蛇头的时候,nodes[1]运动到nodes[0]处;nodes[2]运动到nodes[1]处…。

贪食蛇(实训报告)

贪食蛇(实训报告)
color = _color;
isHead = _isHead;
}
publicvoidChangeHeadToBody()
{
if(isHead)
isHead =false;
}
publicvoidDisplay(Graphicsg,Directiondirection)
{
base.Display(g);
}
}
publicvoidDisplay(Graphicsg)
{
SolidBrushbrush =newSolidBrush(color);
g.FillRectangle(brush, origion.X, origion.Y, WIDTH, HEIGHT);
Penpen =newPen(Color.Black);
2.实训题目
使用 C#语言在 VS平台上编程实现贪食蛇小游戏的运行,如下图所示:
3.功能描述
游戏基本功能描述如下:
1)游戏场地是一片矩形透明的区域。
2)蛇由蛇头和蛇身组成。
3) 当进入游戏时,任务栏出现如图所示的提示:
4)玩家可以点击鼠标来控制游戏的开始,暂停,继续,退出。也可以使用快捷键:“Q”控制游戏的开始,“W”控制游戏的暂停,“E”控制游戏的继续,“R”控制游戏的退出。
color = _color;
blocks =newList<SnakeBlock>();
}
publicvoidCreat(Graphicsg,ColorbackGroundColor,intlawnWidth,intlawnHeight)
{
Clear(g, backGroundColor);
blocks.Clear();

小学生贪吃蛇活动总结(3篇)

小学生贪吃蛇活动总结(3篇)

第1篇一、活动背景随着科技的发展,电子游戏已经成为孩子们生活中不可或缺的一部分。

为了丰富小学生的课余生活,提高他们的动手能力和团队协作精神,我校于近期举办了一场别开生面的“小学生贪吃蛇”活动。

本次活动旨在通过游戏的形式,让孩子们在轻松愉快的氛围中锻炼身体,培养良好的生活习惯。

二、活动目的1. 培养小学生对电子游戏的正确认识,让他们在游戏中学会合作与竞争。

2. 锻炼小学生的动手能力、反应速度和策略思维。

3. 增强班级凝聚力,促进同学之间的友谊。

4. 培养小学生良好的生活习惯,提高他们的身体素质。

三、活动准备1. 确定活动时间、地点和参与对象。

2. 准备游戏设备,如电脑、投影仪等。

3. 设计活动流程,包括热身、游戏、颁奖等环节。

4. 制定比赛规则,确保比赛的公平公正。

5. 邀请家长、老师参与活动,共同见证孩子们的成长。

四、活动过程1. 热身环节活动开始前,主持人带领全体同学进行简单的热身运动,让同学们充分活动身体,为接下来的比赛做好准备。

2. 游戏环节(1)分组:将参加活动的学生分成若干小组,每组5-6人。

(2)抽签:每组随机抽取一名代表参加比赛。

(3)比赛规则:比赛采用积分制,每个小组的代表轮流进行贪吃蛇游戏,每次成功吃到食物得1分,失败不得分。

在规定时间内,积分最高的小组获胜。

(4)游戏进行:各小组代表按照规则进行游戏,比赛过程中,同学们积极参与,互相鼓励,展现出良好的精神风貌。

3. 颁奖环节根据比赛结果,评选出前三名,并为获奖者颁发奖品和荣誉证书。

同时,对积极参与活动的同学给予表扬。

五、活动总结1. 活动效果本次“小学生贪吃蛇”活动取得了圆满成功,达到了预期目的。

同学们在游戏中锻炼了身体,提高了反应速度和策略思维,同时也培养了良好的生活习惯。

活动过程中,同学们积极参与,互相帮助,展现了良好的团队精神。

2. 活动亮点(1)游戏形式新颖,吸引了同学们的广泛关注。

(2)比赛规则简单易懂,公平公正。

(3)活动组织有序,保证了比赛的顺利进行。

贪食蛇游戏实习报告

贪食蛇游戏实习报告

贪吃蛇游戏开发一、需求分析1、该贪吃蛇设计主要具有吃食、暂停、开始以及重新开始游戏。

2、主要目标:本游戏实现贪吃蛇在制定空间去吃随机出现的方块。

游戏可以暂停,如不满意这一次游戏的成果还能重新开始游戏。

二、项目设计1、流程设计程序流程图2、游戏具体设计:(1) 蛇移动的实现蛇的移动方向主要受头结点控制,所以每次画蛇时只要把前一结点的值赋给后一节点即可。

当蛇头的移动方向向右时,y 值不变x 的值不断增加。

当蛇头的移动方向向左时,y 值不变x 的值不断减少。

当蛇头的移动方向向下时,y 值增加x 的值不变。

当蛇头的移动方向向上时,y 值减小x 的值不变。

(2) 蛇死亡的判断当蛇头的值与蛇身或与墙的值相等时,蛇即算死亡.(3)蛇到达边框时从另一端出现和传送的实现当蛇头的x 或y 值达到边框的最大或最小位置时相应的给x 或y 赋以边框的最小或最大值以实现当蛇到达边框时能从另一端出来,同理当蛇头的x,y 值等于传送点位置的值时将蛇头x,y 的值赋以被传送到位置的值,这样将实现蛇的传送功能。

三、项目实现①蛇身颜色、最大长度及速度int speed;//设置蛇的速度int maxLen;//设置蛇的最大长度②随机生成食物产生随机种子:qsrand(QTime().currentTime().msec());定义食物的坐标、形状及颜色:int mx = (qrand()%(w/20))*20;int my = (qrand()%(h/20))*20;food = new QLabel(this);food->move(mx,my);food->resize(20,20);//食物大小food->setAutoFillBackground(true);//设置食物自动填充背景颜色food->setFrameShape(QFrame::Box);//设置形状food->setFrameShadow(QFrame::Sunken);food->setPalette(QPalette(QColor(qrand()%255,qrand()%110,qrand()%255)));//改变调色板的颜色return food;③方向控制及按键事件处理方向控制:switch(d){case d_up:nheady-=speed;break;case d_down:nheady+=speed;break;case d_left:nheadx-=speed;break;case d_right:nheadx+=speed;break;}按键事件处理:void snake::keyPressEvent(QKeyEvent *f){if(f->key()==Qt::Key_Up){d=d_up;}else if(f->key()==Qt::Key_Down){d=d_down;}else if(f->key()==Qt::Key_Left){d=d_left;}else if(f->key()==Qt::Key_Right){d=d_right;}}④食物的显示与蛇吃食物食物显示:data.push_back(getFood());//将吃到的食物添加在蛇身之后timer = new QTimer();//初始化时钟timer->setInterval(400);//设置时钟周期timer->start();connect(timer,SIGNAL(timeout()),this,SLOT(move()));//传递信号food = getFood();food->show();蛇吃食物:if((nheadx==foodx)&&(nheady==foody)){data.push_back(food);food = getFood();food->show();}游戏截图1游戏截图2游戏截图3游戏截图4⑤游戏结束条件if(data.size()>=10){QMessageBox msg(this);msg.setText("game over!");msg.setStandardButtons(QMessageBox::Yes|QMessageBox::No);msg.show();if(msg.exec()==QMessageBox::Yes){this->close();}}四、总结经过10天的培训,让我进一步熟悉了Linux系统下命令的使用、文件的编写与调试,更熟悉了以前所学的C++语言,让我对我所学习的计算机更加了解喜欢,也更加希望自己能学好计算机方面的设计,去设计更多有意思的游戏。

贪吃蛇游戏实验报告

贪吃蛇游戏实验报告
1.2 用户界面 [关键游戏界面,并且要说明该界面完成的功能,不用把所有界面都显示出来] 游戏开始界面:选择游戏的难度
游戏过程界面:进行游戏
2008 年 8 月 22 日 2
2008 年计算机实习报告
游戏结束界面:选择是否重新游戏
1.3 使用方法 [比如:可以是什么键控制游戏?是否可以划分那难度?游戏是否可配置,界面风格是 否可选等等] 用方向键控制蛇的移动,输入 1,2,3,选择难度,游戏中按除方向键其他键暂停,结束 界面 y 重新游戏,n 退出游戏
一个元素取代前一个位置,蛇头向前移动一,如有按键,则跳出内循环,根据按键寻则蛇的 运动
伪代码: while 循环 检测是否有按键,若有,进入相应循环 休眠 原来蛇位置变为空白 蛇身数组后一个元素取代前一个元素位置 根据按键改变蛇头位置 显示蛇身 若有按键,跳出内循环
算法 2:水果的产生 使用结构表示水果,当水果被蛇吃掉后,随机产生一个水果 伪代码:if 蛇头位置与水果位置重合
While 循环 随机产生水果的坐标 If 坐标在框图内 { If 水果坐标不与蛇每一个坐标重合 跳出循环 } 算法 3:判断蛇的死亡 While a=0 For 取遍蛇身每一个元素 { If 蛇头出了框图或蛇头与蛇身重合 a=1 }(a=1 则循环停止) 2.3 程序设计的难点和关键点 :1 随机产生水果的位置,要保证水果在框图内且水果与蛇身不重和, 2,判断蛇的死亡 3,控制蛇的颜色变换 4,对于分数的储存和导入 2.4 调试的方法
2008 年 8 月 22 日 3
2008 年计算机实习报告
二.程序设计说明
2.1 总体设计框架 [包括程序执行流程,模块划分等,需要有文字说明和框图表示] 开始
界面 界面
选择难度
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实训报告实训题目:贪吃蛇游戏程序设计院系:计算机科学与工程学院专业:网络工程班级:网络工程131学号:090213128姓名:指导教师:肖微实训地点:九章楼N6-101开课时间:2013 至2014学年第 2 学期常熟理工学院计算机科学与工程学院制学生姓名周豪实训报告成绩评语:指导教师(签名)年月日说明:指导教师评分后,实训报告交院办公室保存。

目录1实训的目的和任务 (5)实训的目的: (5)实训的任务: (6)2.开发环境(软件开发环境和硬件开发环境) (6)3.界面设计 (6)3.1设计思路 (6)3.2实现原理 (7)4.算法设计 (9)5.程序流程 (30)6.总结 (31)1实训的目的和任务实训的目的:1.巩固和加深对C语言课程基本知识的理解和掌握2.掌握C语言编程和程序调试的基本技能3.利用C语言进行基本的程序设计4.掌握书写程序设计说明文档的能力5.提高运用C语言解决实际问题的能力6. 进一步理解和运用结构化程设计的思想和方法7.独立完成一个游戏的设计应用实训的任务:1.分析实训题目要求2.了解实训要求内容3.掌握实训要求代码4.编写程序代码,调试程序使其能正确运行5.设计完成的软件要便于操作和使用6.完成课程设计报告,并进行答辩2.开发环境(软件开发环境和硬件开发环境)1、一台能正常运行的计算机电脑2、Windows XP3、Microsoft Visual Studio20104、Microsoft Word20103.界面设计3.1设计思路:大家在运行这个游戏的时候,开始界面能够出现一只蛇,这样的图案比较符合游戏的内容。

首先是蛇图形的绘画,我们可以运用搜狗输入法轻松的绘出蛇的大致图像,但是值得大家注意的是搜狗直接生成的图形,在里面出现了“\”的符号,是Visual Studio不能识别的字符,应该改成“\\”,否则程序不能运行。

除此之外,一个简单的游戏介绍也是必不可少的,使用QQ拼音输入法中的符号工具栏,再加上自己制定的游戏规则,可以生成各种我们需要的游戏简介画面。

3.2实现原理:printf("---------------------------欢迎进入贪吃蛇游戏----------------------");std::cout<<" /^\\/^\\" << endl;std::cout<<" _|0_| 0|" <<endl;std::cout<<"\/ /~ \_/ \\"<<endl;std::cout<<"\____|__________/ \\"<<endl;std::cout<<" \_______ \\"<<endl;std::cout<<" `\\ \\ \\"<<endl;std::cout<<" | | \\"<<endl;std::cout<<" / / \\"<<endl; std::cout<<" / / \\"<<endl; std::cout<<" / / \\ \\"<<endl; std::cout<<" / / \\ \\"<<endl; std::cout<<" / / _----_ \\ \\"<<endl; std::cout<<" / / _-~ ~-_ | |"<<endl; std::cout<<" ( ( _-~ _--_ ~-_ _/ |"<<endl; std::cout<<" \ ~-____-~ _-~ ~-_ ~-_-~ /"<<endl; std::cout<<" ~-_ _-~ ~-_ _-~"<<endl; std::cout<<" ~--______-~ ~-___-~"<<endl; 通过“std::cout”(向终端屏幕输出)可以将找到的蛇图形显示在屏幕上。

显示结果printf(" ---------------------游戏简介--------------------- \n");printf(" ╔════════════════════════╗\n"); printf(" ║通过上下左右四个方向键可以控制贪吃蛇║\n"); printf(" ╠════════════════════════╣\n"); printf(" ║每吃掉一个虫子得分就会增加100分║\n"); printf(" ╠════════════════════════╣\n"); printf(" ║当吃的虫子多余5个时虫子的速度会增加哦║\n"); printf(" ╠════════════════════════╣\n"); printf(" ║游戏开始之前需要自己选择一下等级哦,还请量力而为║\n"); printf(" ╚════════════════════════╝\n"); printf(" 请输入您要挑战的游戏等级,1——5级,速度逐渐减慢,切记!\n"); printf(" 对了忘了说了,按回车键游戏才能开始\n"); printf(" 现在输入要选的等级吧");显示结果先在Word中设计好需要显示的内容,然后利用printf()将其输出显示在屏幕上。

不过在使用std::cout时一定要注意,std是标准库的命名空间名,cout,endl都在其中。

头文件如果是#include<iostream>下面就要这样写,或者加上using namespace std;头文件如果是#include<iostream.h>下面不用4.算法设计#include<stdio.h>#include "stdafx.h"#include <Windows.h>#include "iostream"#include"conio.h"#include<time.h>#include <stdlib.h>#define uint unsigned int上面的许多文件名都是第一次见到,但是在此编程中却是必不可少的,缺一个程序都没法顺利执行。

enum{ARROW_UP=72,ARROW_DOWN=80,ARROW_LEFT=75,ARROW_R};枚举类型,分别标出上下左右四个方向键所对应的数值,这些数值都是固定的。

typedef enum{ORIENTATION_UP,ORIENTATION_DOWN,ORIENTATION_LEFT,ORI ENTATION_RIGHT}Orientation;struct PT{int x;//横坐标int y;//纵坐标};结构体定义一个坐标。

struct Body{PT now;Body *last;Body *next;};结构体定义蛇的一节身体,为创建链表做准备。

{Orientation dir;Body *head;Body *tail;uint bodylong;};HANDLE hStdout=GetStdHandle(STD_OUTPUT_HANDLE); using namespace std;const int X=10;const int Y=5;/*pianyiliang*/const int WIDTH=60;const int HEIGHT=25;const char BRICK='H';const char snk='O';int cnt=0;int delaytime;int k;int score=0;PT foodpt;Snake snake;定义一些即将使用的全局变量,根据以前学到的知识,当全局变量在某一函数中被使用的时候,即使不返回函数值,全局变量也会改变。

因为这部分定义的结构体比较多,所以特别容易弄混,在使用的时候,花费好长时间才熟练的掌握。

void hidecursor(){CONSOLE_CURSOR_INFO cursor_info;cursor_info.bVisible =false;cursor_info.dwSize =30;SetConsoleCursorInfo(hStdout,&cursor_info);}以上代码的运行,可以隐藏运行结果界面的光标,这是我们学习c语言以来,第一次碰到类似的代码,有趣的是,其中的cursor_info.dwSize =30;改变数字不影响运行结果,起初我以为这行代码是多余的,但是将它删除之后,程序运行便出现了错误,后来我上网查了一下才知道,这行代码的作用是改变光标的大小,因为光标被隐藏,所以改变数字不会影响最终结果,然而值得注意的是,这行代码一定不能够省略。

void paintsnake(){//贪吃蛇图形}void prepare(){//游戏简介}void print_char(int x ,int y ,char ch){COORD c;c.X=x;c.Y=y;SetConsoleCursorPosition(hStdout,c);putchar(ch);}上面代码中COORD表示的是坐标,“X”和“Y”分别表示的是横坐标和纵坐标,规定好这两个后就可以很好的确定所打印的代码的位置。

通过改变x,y,以及ch就可以实现在任意位置打印任意字符的功能。

void draw_wall(){for(int i=0;i<HEIGHT;i++)for(int j=0;j<WIDTH;j++){if((i==0)||(i==HEIGHT-1)||(j==0)||(j==WIDTH-1))/*坐标从0开始的所以高和宽都要减1*/print_char(X+j,Y+i,BRICK);//通过改变全局变量BEICK可以改变墙的砖块形状}}}在这里,老师教我们通过循环可以在规定的范围内画出一道围墙,原来我自己的想法是通过printf和“\n”来画出自己所需要的墙,但是这种方法比较繁琐。

相关文档
最新文档