贪吃蛇计算机实习报告 北京邮电大学
北邮计算机实习贪吃蛇游戏编写报告
北邮计算机实习贪吃蛇游戏编写报告计算机实习报告姓名:班级:学号:⼩班序号:指导⽼师:题⽬:贪吃蛇⼩游戏邮箱:贪吃蛇⼩游戏实验报告⼀.功能说明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)该算法的功能是⽤来进⾏初始化实现,实现游戏边界的设计、贪吃蛇⾝体的初始化、贪吃蛇⾝体长度的初始化、在⽆输⼊的情况下蛇的移动。
贪吃蛇实训报告模板
贪吃蛇实训报告模板1. 概述本报告旨在总结本次贪吃蛇实训的学习内容、实践经验,以及对于贪吃蛇游戏开发的理解和思考,为未来的实践学习提供参考和借鉴。
2. 前置知识在进行贪吃蛇实训前,推荐学生应具备以下基本前置知识:•编程语言基础:如C++、Java等。
•数据结构:如数组、链表、队列、栈等。
•基本算法:如排序算法、查找算法等。
3. 学习内容在本次贪吃蛇实训中,我们主要学习了以下内容:1.实现基本的贪吃蛇游戏逻辑:包括贪吃蛇的移动、食物的生成、得分统计等。
2.优化游戏体验:包括界面美化、音效、计时器等。
3.处理游戏特殊情况:如蛇碰到墙壁、自身等。
我们在实践中还遇到了以下问题:1.蛇的移动:如何保证蛇能够顺利移动并避免出现卡顿现象。
2.食物的生成:如何让食物能够随机生成且不与蛇重合。
3.得分统计:如何实现得分统计功能并将得分存入文件中。
通过解决这些问题,我们不仅实现了基本的贪吃蛇游戏功能,还使游戏更加智能化、丰富化。
4. 实践经验在进行贪吃蛇实践时,我们总结了以下实践经验:1.良好的代码规范:良好的代码规范对于功能实现和代码可读性的提高有着至关重要的意义。
比如,可以采用模块化编程,减少重复代码等。
2.良好的注释习惯:良好的注释习惯能够帮助程序员快速理解代码逻辑、减少代码修改和维护的困难度。
3.利用GitHub等代码分享平台:通过GitHub等代码分享平台,开源自己的代码,不仅可以让更多的人看到自己的成果,也可以接受更多人的意见和建议。
5. 游戏开发的思考在学习贪吃蛇游戏的过程中,我们不仅仅实现了一个简单的游戏,也思考了游戏开发的一些问题。
比如,游戏中的难度控制、人机交互等问题。
在游戏开发中,除了对于程序语言掌握以外,掌握这些问题也是非常必要的。
6. 总结本次贪吃蛇实训,我们不仅仅实现了贪吃蛇的基本功能,也通过实践和学习,提高了自己的编程水平和思考能力。
希望通过这次实践,能够启迪我们更好的编程思维和创造力,为未来的学习和工作打下坚实的基础。
贪吃蛇游戏_实习报告
课程设计报告贪吃蛇游戏设计专业学生姓名班级学号指导教师完成日期盐城工学院本科生课程设计报告(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设计程序的方法首先应了解设计要求,然后按照功能设计模块,每个模块完成特定的功能,要使模块间的耦合性小,内聚性高;设计模块是相当重要的一个环节。
模块的数量不宜太多,也不宜太少,要使每个模块都能比较简单的转换成流程图。
模块设计完成后,就该给每个模块绘制流程图了。
流程图要简单,容易理解,多用中文。
不宜写过长的代码,增加理解难度。
流程图与模块枝干图均可用绘图软件绘制,可适当加些背景色,用以区分。
数电实验报告-贪吃蛇-北邮
1 / 13简易贪食蛇游戏机学院:信息与通信工程专业:班级:姓名:学号:班内序号:简易贪食蛇游戏机一.设计课题的任务要求基本任务:用一个 8×8 点阵做为基本显示屏,4 个连续移动的的发光点表示一条蛇,用任意出现的一个亮点表示老鼠,用4 个排成一条线的发光点表示“墙”,用四个按键控制蛇的运动方向,完成贪食蛇游戏,蛇撞“墙”、边或者游戏时间到,则游戏结束。
1. 老鼠出现的地方是随机的,在某个地点出现的时间是5 秒钟,如果5 秒钟之内没有被吃掉,它就会在其它地方出现;2. 用数码管显示得分情况和游戏的剩余时间,每吃掉一只老鼠就加一分;提高要求:1. 游戏时间和速度可以手动设置。
2. 增加游戏难度或自拟其它功能。
二.系统设计1.设计思路当复位键置为1时, 8*8点阵也初始化为全不亮,每来一个时钟脉冲就对8*8点阵进行一次扫描,并依次点亮四个蛇身点、一个老鼠点、四个墙点,由于扫描频率远远超出人眼所能分辨的范围,故人眼看来蛇身是连续的。
在数码管上显示得分与倒计时情况。
用四个按键分别控制蛇的运动方向“上下左右”,每次按键时通过和蛇原来的运动方向进行比较来控制蛇接下来的运动方向。
当蛇撞墙、出界、游戏时间到时游戏结束,点阵全亮。
每当蛇吃到一个老鼠时则自动加一分并重设老鼠位置。
老鼠存活5秒钟时重设老鼠位置。
用M序列发生器实现老鼠位置的随机变化。
2.总体框架图:复位开关方向输入按键3.逻辑划分框图4.6.分块电路设计⑴点阵显示模块此模块采用频率为1Mhz的时钟clk3。
每来一个时钟就对整个8*8点阵全部扫描一次,当某个点的行为低电平,列为高电平时被点亮。
由于蛇身有4个移动的点,墙有4个固定的点以及一个老鼠的亮点,那么一共有9个点需要在8*8点阵上显示。
所以我将时钟用point分成9个周期,每个周期扫描一个点。
clk3频率很高,虽然是逐点扫描,但由于视觉暂留我们看到的是9个点同时亮。
当复位信号clear置为1时,点阵全不亮。
贪吃蛇实习报告
计算机实习报告姓名:王宁班级: 2009211106学号: 09210181班内序号:31指导老师:丘广晖题目:贪吃蛇邮箱:348266485@贪吃蛇实验报告一.功能说明1.1总体功能说明概况:一条蛇在密闭的围墙内,在围墙内出现食物,通过按键控制蛇向上下左右四个方向移动,蛇撞到食物,则食物被吃掉,蛇的身体增加一节。
如果蛇在移动的过程中,撞到墙壁或身体的交叉(蛇头撞到自己的身体),则游戏结束。
特色:①暂停功能:能随时通过按键来暂停游戏,再按一次则继续游戏。
②速度调节功能:当分数达到某个值后,对蛇的移动速度进行一定的提升。
③毒果:增加另一种的毒果食物,蛇吃到该种食物后gameover。
④音效功能:吃掉食物、撞墙、在游戏结束时有不同的音效。
1.2用户界面主要是在围墙可以控制蛇吃到果实,同时分数就会升一分。
侧边栏标出了主要的功能键和等级,积分。
1.3使用方法上下左右键控制蛇的运动,还有任意键控制游戏开始,空格键控制暂停,当游戏的得分超过一定数,蛇的速度就会加快,二.程序设计说明2.1 总体设计框架2.2 关键算法描述算法一:自定义函数:void movesnake(HANDLE hOutput,int snakex[],int snakey[],int len,WORD wColors[]);移动蛇的函数,参数主要是蛇的坐标void fruit(HANDLE hOutput,int snakex[],int snakey[],int *x ,int *y,WORD wColors[]);产生水果的函数,参数主要是蛇的坐标,和水果的坐标。
使用了数组和指针void p_fruit(HANDLE hOutput,int snakex[],int snakey[],int *x ,int *y,WORD wColors[]); void put_fruit(int *x,int *y,int len,int snakex[],int snakey[]);放置果实的函数int level(HANDLE handle,int s,int p,char buf[],WORD wColors[]);等级判断函数,传递了一个存放分数的数组,速度,分数参数算法二:系统函数textout(HANDLE handle,int x,int y,WORD Wcolors[],”“)专门用来输出一些字符,图案,主要参数就是字符的横纵坐标_kbhit()检测是否有按键按下_getch()获取按键的值Sleep(n)是程序休眠n毫秒srand( (unsigned)time( NULL ));随机数的种子函数,以时间做参数rand()产生伪随机数序列,后面一般会跟%n,代表取0到n的整数。
贪吃蛇实习报告范文
一、实习背景随着计算机技术的不断发展,编程技能已经成为现代社会人才必备的能力之一。
为了提高自己的编程能力,我在某科技公司进行了为期一个月的贪吃蛇游戏开发实习。
通过这次实习,我对贪吃蛇游戏有了更深入的了解,并掌握了相关编程技能。
二、实习目的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, "■");//输出}}}实现的是按键之后的变化。
贪吃蛇游戏实习报告
课程设计报告贪吃蛇游戏设计专业信息工程系学生姓名王洪松班级信息类101班学号100810518时间2011-03-28—2011-04-01课程设计任务书题目贪吃蛇系(部) 信息工程系专业信息类班级2010级1班学生姓名王洪松学号10081051803 月28 日至04 月01 日共 1 周指导教师(签字)系主任(签字)年月日贪吃蛇游戏设计摘要:贪吃蛇是一款经典的休闲游戏,操作小蛇不停的朝食物的方向前进,直到吃掉了食物。
每吃一个食物,小蛇都会长长一节,随之而来的难度加大;当小蛇的头撞到墙时或者小蛇的头与身体相撞时,小蛇就会死亡;当然,小蛇的速度越快,每一个食物的分数就越高。
开发环境概述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设计程序的方法首先应了解设计要求,然后按照功能设计模块,每个模块完成特定的功能,要使模块间的耦合性小,内聚性高;设计模块是相当重要的一个环节。
北邮计算机实习报告
一、实习目的随着信息技术的飞速发展,计算机专业人才在社会各领域的需求日益增长。
为了将所学的理论知识与实践相结合,提高自身的综合素质和就业竞争力,我于20XX年X月X日至20XX年X月X日在北京邮电大学计算机学院进行了为期一个月的实习。
本次实习旨在:1. 巩固和深化计算机专业理论知识,提高动手能力。
2. 了解企业实际工作流程,熟悉计算机行业发展趋势。
3. 培养团队协作精神和沟通能力,为今后的职业发展奠定基础。
二、实习单位及实习内容本次实习单位为北京邮电大学计算机学院,实习内容包括:1. 参与学院科研项目,协助导师进行相关实验和数据分析。
2. 参与学院实验室的建设和维护,负责实验室设备的日常管理。
3. 参与学院举办的各类活动,如讲座、比赛等,提高自身的综合素质。
三、实习过程及收获1. 参与科研项目在实习期间,我参与了导师的科研项目,主要负责实验数据的收集、整理和分析。
通过实际操作,我对数据挖掘、机器学习等理论知识有了更深入的理解,并掌握了相关软件的使用方法。
2. 实验室建设与维护在实验室工作期间,我负责实验室设备的日常管理,包括设备的清洁、保养和故障排除。
通过这项工作,我熟悉了实验室设备的操作流程,提高了自己的动手能力。
3. 参与学院活动在实习期间,我积极参与学院举办的各类活动,如讲座、比赛等。
通过这些活动,我拓宽了视野,提高了自己的综合素质。
四、实习体会1. 理论联系实际的重要性通过本次实习,我深刻体会到理论知识与实践相结合的重要性。
在实习过程中,我发现自己所学的理论知识在实际工作中发挥了重要作用,但也暴露出自己在实际操作中的一些不足。
2. 团队协作与沟通能力在实习过程中,我学会了与团队成员沟通、协作,共同完成工作任务。
这使我认识到团队协作和沟通能力在职场中的重要性。
3. 职业规划通过本次实习,我对计算机行业有了更深入的了解,对自己的职业规划有了更明确的方向。
在今后的学习和工作中,我将努力提高自己的专业素养,为成为一名优秀的计算机专业人才而努力。
贪吃蛇游戏设计实训报告
一、摘要随着计算机技术的飞速发展,图形界面编程在计算机科学中占据着越来越重要的地位。
贪吃蛇游戏作为一款经典的益智游戏,不仅能够锻炼玩家的反应能力,还能培养编程思维。
本次实训以贪吃蛇游戏为背景,采用Java编程语言和Swing图形用户界面库进行设计,实现了游戏的基本功能,并对游戏性能进行了优化。
二、引言贪吃蛇游戏是一款简单易玩、老少皆宜的益智游戏。
玩家通过控制蛇的移动,吃掉食物使蛇身变长,同时躲避墙壁和自身,最终达到游戏目标。
本次实训旨在通过贪吃蛇游戏的设计与实现,提高学生的编程能力、图形界面设计能力和团队协作能力。
三、游戏设计1. 游戏界面设计游戏界面采用Swing图形用户界面库进行设计,主要包括以下部分:(1)游戏区域:用于显示蛇、食物和墙壁,采用JPanel组件实现。
(2)游戏菜单:包括开始游戏、重新开始、退出游戏等选项,采用JButton组件实现。
(3)游戏得分:显示当前得分,采用JLabel组件实现。
2. 游戏逻辑设计游戏逻辑主要包括以下部分:(1)蛇的移动:根据玩家输入的方向键控制蛇头的移动,实现蛇的实时更新。
(2)食物的生成:随机生成食物,当蛇头吃到食物时,蛇身变长,同时增加得分。
(3)墙壁和自身碰撞检测:当蛇头触碰到墙壁或自身时,游戏结束。
(4)游戏得分:根据蛇头吃到的食物数量计算得分。
四、关键技术实现1. 蛇的移动蛇的移动通过监听键盘事件实现。
在键盘事件监听器中,根据按键的方向更新蛇头的坐标,然后重新绘制蛇身。
2. 食物的生成食物的生成采用随机算法实现。
首先生成一个随机坐标,然后判断该坐标是否在游戏区域内,如果不在则重新生成。
3. 碰撞检测碰撞检测包括墙壁碰撞和自身碰撞。
在蛇头移动时,判断蛇头的坐标是否超出游戏区域边界,或者与自身坐标相同,若满足任一条件,则游戏结束。
4. 游戏得分游戏得分通过计算蛇头吃到的食物数量实现。
每吃到一个食物,得分加1。
五、性能优化1. 游戏速度优化:通过调整蛇的移动速度和食物生成的速度,使游戏节奏更加紧凑。
贪食蛇游戏实习报告
贪吃蛇游戏开发一、需求分析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++语言,让我对我所学习的计算机更加了解喜欢,也更加希望自己能学好计算机方面的设计,去设计更多有意思的游戏。
贪吃蛇的实习报告电信
实习报告实习单位:某电信公司实习岗位:软件开发实习生实习时间:2021年6月1日至2021年8月31日一、实习背景及目的作为一名计算机科学与技术专业的学生,为了提高自己的实践能力和理论知识,我选择了在某电信公司进行为期三个月的实习。
实习岗位为软件开发实习生,主要工作内容是参与贪吃蛇游戏的开发与优化。
通过此次实习,我希望能够深入了解软件开发流程,提高自己的编程技能和团队协作能力。
二、实习内容及收获1. 实习内容(1)需求分析:在实习初期,我们团队对贪吃蛇游戏进行了需求分析,明确了游戏的功能、界面设计和性能要求。
(2)设计阶段:我负责参与游戏的整体架构设计,包括游戏逻辑、数据结构和界面布局等。
(3)编码阶段:根据设计文档,我完成了游戏部分功能的编码工作,并对代码进行了调试和优化。
(4)测试阶段:我参与了游戏的测试工作,发现并修复了一些bug,提高了游戏的稳定性和用户体验。
(5)部署与上线:协助团队将游戏部署到服务器,并确保游戏的稳定运行。
2. 实习收获(1)编程技能:通过实习,我熟练掌握了C语言编程,提高了自己的编程速度和代码质量。
(2)团队协作:在团队项目中,我学会了与他人沟通、协作,共同完成任务。
(3)解决问题能力:在实习过程中,我遇到了许多技术难题,通过查阅资料、请教同事和自主研究,逐步解决问题,提高了自己的独立解决问题的能力。
(4)项目管理:了解了软件开发项目的整个生命周期,为今后从事软件开发工作奠定了基础。
三、实习总结通过本次实习,我对软件开发流程有了更深入的了解,锻炼了自己的编程能力和团队协作能力。
同时,我也认识到自己在某些方面的不足,如代码规范性、项目管理等方面,需要在今后的学习和工作中继续努力提高。
此次实习让我深刻体会到理论联系实际的重要性,使我更加坚定了从事计算机软件开发的信念。
在今后的学习和工作中,我将继续努力,不断提高自己的综合素质,为成为一名优秀的软件开发工程师奠定基础。
四、建议和反馈(1)希望公司能够多提供一些实习机会,让更多学生有机会参与到实际项目中,提高自己的实践能力。
关于贪吃蛇的实训报告
一、实训目的本次实训旨在通过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语言编程和程序设计有了更深入的理解,编程能力得到了显著提升。
贪吃蛇代码实训心得报告
贪吃蛇代码实训心得报告前言贪吃蛇是一款经典的游戏,其简单的玩法和上瘾的乐趣一直深受大众喜爱。
在代码实训中,我选择了贪吃蛇作为我的项目,通过编写贪吃蛇的代码,我在实训过程中收获了很多知识和经验,本报告旨在总结我在实训中的收获和心得体会。
项目介绍我的贪吃蛇项目基于Python语言开发,通过使用Pygame库来实现游戏的图形界面。
在实现贪吃蛇游戏的过程中,我主要实现了以下几个功能:1. 绘制游戏界面2. 控制蛇的移动3. 检测蛇与食物的碰撞4. 判断游戏结束5. 计分系统收获与体会代码实践能力的提升通过编写贪吃蛇的代码,我对Python语言的理解更加深入了。
熟悉Python的语法和特性,对于编写代码来说是非常重要的。
通过实践,我掌握了Python程序的基本结构、函数的定义和使用、条件和循环语句等基础知识,并且能够灵活运用这些知识来解决实际问题。
另外,在代码实践中,我也意识到了代码规范的重要性。
良好的代码规范可以提高代码的可读性和可维护性,在开发过程中能够更加高效地协同工作。
因此,我在编写代码的过程中注意了命名规范、缩进格式以及注释的添加,以保证代码的可读性和可维护性。
协作能力的培养在实训中,我与同伴合作完成了这个项目。
通过合作,我学会了与人沟通协作的重要性。
我们合理分工,明确任务目标,并尽力去协调和解决问题。
通过充分的沟通和协作,我们相互之间可以更好地理解彼此的想法和意图,为项目的顺利完成做出了积极的贡献。
在项目中,通过与同伴一起编写代码,我学到了如何利用版本控制工具进行代码管理。
我们使用Git进行代码的版本管理,这样可以方便地和同伴分享和协同开发代码。
掌握了这一技能,对于今后的工作和学习都具有重要的意义。
解决问题的能力提升在项目开发过程中,我遇到了很多问题,例如蛇如何移动、如何检测碰撞等等。
通过仔细研究问题、查找资料、请教同伴和老师,我逐渐掌握了解决问题的方法和技巧。
我学会了如何分析问题、找出问题的根源,并提出解决问题的方案。
贪吃蛇实训报告
郑州轻工业学院实训报告实训名称:贪吃蛇指导教师:姓名:学号:班级:提交日期:一.实验目的通过开发一款贪吃蛇游戏程序,熟练掌握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. 需求分析在开始实习之前,我们首先对贪吃蛇游戏的需求进行了分析。
游戏需要实现基本的功能,如随机生成食物、控制蛇的移动、判断碰撞等。
此外,为了提高游戏的趣味性,我们还增加了如得分、游戏速度、游戏音乐等拓展元素。
2. 总体框架设计根据需求分析,我们制定了贪吃蛇游戏的总体框架。
游戏分为欢迎界面、游戏界面和游戏结束界面,同时设有开始键、暂停键和停止退出的选项。
为了实现双人模式,我们还在游戏中添加了得分和移动速度等拓展功能。
3. 算法学习与实现在实习过程中,我们学习了相关算法,如如何生成食物、蛇的移动、碰撞判断等。
为了实现双人模式,我们还研究了如何处理两个蛇的移动和碰撞。
通过对算法的深入理解,我们成功地将这些功能实现在游戏中。
4. 界面设计与实现为了提高游戏的用户体验,我们精心设计了游戏界面。
界面采用简洁明了的设计风格,方便玩家操作。
同时,我们还为游戏设置了丰富的音效和动画效果,增加了游戏的趣味性。
5. 拓展功能开发在完成基本功能的基础上,我们进一步开发了拓展功能。
如双人模式、得分系统、移动速度等。
这些功能的加入使得游戏更具挑战性和趣味性,让玩家在游戏中不断追求更高的分数。
三、实习收获与反思通过本次实习,我深刻体会到了游戏开发的乐趣和挑战。
在实习过程中,我学到了很多关于游戏开发的知识和技能,如算法实现、界面设计等。
同时,我还培养了团队协作精神和创新意识。
回顾实习过程,我认为自己在某些方面还有待提高。
如在开发过程中,我发现自己在代码组织和优化方面还有很大的提升空间。
此外,在团队协作方面,我也意识到沟通和交流的重要性。
贪吃蛇代码实训心得报告
一、实训背景随着计算机技术的飞速发展,编程已经成为一项非常重要的技能。
为了提高自己的编程能力,我参加了贪吃蛇代码实训。
通过这次实训,我对贪吃蛇游戏的编程有了更深入的了解,同时也锻炼了自己的编程思维和动手能力。
二、实训目标1. 熟悉C语言的基本语法和编程规范。
2. 掌握贪吃蛇游戏的设计与实现。
3. 培养团队协作和沟通能力。
三、实训内容1. 游戏设计:确定游戏规则、界面设计、功能模块划分等。
2. 代码编写:使用C语言实现游戏逻辑、图形界面、用户交互等。
3. 调试与优化:找出并修复代码中的错误,提高游戏性能。
四、实训过程1. 游戏设计在游戏设计阶段,我们首先明确了游戏规则:玩家通过键盘控制蛇的移动,吃掉食物使蛇变长,同时避免撞到墙壁和自己的身体。
游戏界面设计简洁,以蓝色背景和白色蛇身为主,食物用红色表示。
2. 代码编写在代码编写过程中,我们采用了模块化设计,将游戏分为以下几个模块:(1)主函数:初始化游戏环境,创建窗口,设置定时器等。
(2)蛇的移动:根据键盘输入控制蛇的移动方向,更新蛇的位置。
(3)食物的生成:随机生成食物位置,并在蛇吃到食物时更新食物位置。
(4)游戏结束判断:判断蛇是否撞到墙壁或自己的身体,如果发生碰撞则游戏结束。
(5)图形界面:使用图形库绘制蛇、食物和游戏界面。
3. 调试与优化在调试过程中,我们遇到了许多问题,如蛇的移动方向相反、食物生成位置不合理等。
通过查阅资料和团队合作,我们逐一解决了这些问题。
在优化方面,我们主要关注了以下两点:(1)提高游戏性能:通过减少不必要的计算和绘制,提高游戏运行速度。
(2)优化用户体验:调整游戏难度,使游戏更具挑战性。
五、实训收获1. 编程能力得到提升:通过编写贪吃蛇游戏,我熟悉了C语言的基本语法和编程规范,提高了自己的编程能力。
2. 编程思维得到锻炼:在游戏设计过程中,我学会了如何分析问题、设计算法和实现代码。
3. 团队协作能力得到提高:在实训过程中,我与团队成员共同解决问题,学会了沟通和协作。
贪吃蛇实训报告个人总结
一、实训背景随着计算机科学技术的不断发展,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. 本次实训让我认识到,编程不仅仅是编写代码,还需要考虑程序的结构、逻辑和可维护性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机实习报告姓名: xxx班级: xxx学号: xxx小班序号:xxx指导老师:xxx题目:MFC简易贪吃蛇程序邮箱:xxxMFC简易贪吃蛇程序实验报告一.功能说明1.1总体功能说明主要功能为实现MFC简易贪吃蛇游戏的运行。
具体功能:1、能够实现游戏的开始、暂停、继续和结束;2、能够显示游戏成绩;3、在贪吃蛇蛇身的加长过程中,通过改变蛇爬行的速度来改变游戏难度。
4、游戏结束可重新开始游戏;5、能够显示贪吃蛇和食物所处的坐标。
主要特色为运用MFC编程,游戏界面友好,简洁、操作简单易懂,快捷键操作使游戏的暂停和继续更为方便,使得玩家在操作过程中感到轻松愉快。
1.2用户界面游戏运行时:游戏结束时:显示鼠标处坐标:游戏主界面如上图。
实现游戏的所有功能:游戏的开始、运行、暂停、继续和退出。
显示鼠标点击处坐标1.3使用方法单击“开始游戏”,弹出对话框“3秒之后开始游戏”,点按确定之后蛇开始移动。
通过键盘的“↑”“↓”“←”“→”可控制蛇的移动,每吃一个食物增加一节蛇身长度。
游戏过程中可通过“游戏”下拉菜单中选择“暂停”暂停游戏并继续游戏。
若撞到边界或撞到蛇身游戏结束,弹出对话框提示得分情况,游戏结束。
可通过点击“开始游戏”重新开始游戏。
游戏难度通过控制蛇的移动速度来实现,随蛇身长度的增加而增加。
蛇身长度每增加三节到五节,速度增加一次。
二.程序设计说明具体模块划分:1 定义蛇类和食物类,初始化贪吃蛇各项成员变量,包括图像的出现在屏幕的初始位置,长度,以及蛇头的行走方向。
食物类的定义包括出现的初始位置,以及食物是否被吃掉的判断。
2 用数组初始化长度为3的贪吃蛇,并且默认食物未出现3 在CView类上运用MFC提供的Windows消息中WM_TIMER消息,运用OnTimer()函数让系统提供一个时钟节拍,更新游戏4 具体游戏实现,包括蛇撞到自己和围墙都将使游戏结束,判断吃豆等,其中还包括根据蛇的长度来进行游戏难度的改变。
5 具体键盘游戏操作运用到Windows消息响应中的WM_KEYDOWN,用OnKeyDown()来响应玩家的实际操作。
2.2 关键算法描述//根据蛇的长度设计游戏难度CString soure;if(Snake[0].len==3)SetTimer(1,300,NULL);if(Snake[0].len==8)SetTimer(1,250,NULL);if(Snake[0].len==13)SetTimer(1,200,NULL);if(Snake[0].len==18)SetTimer(1,150,NULL);if(Snake[0].len==23)SetTimer(1,100,NULL);if(Snake[0].len==28)SetTimer(1,95,NULL);if(Snake[0].len==33)SetTimer(1,90,NULL);if(Snake[0].len==38)SetTimer(1,80,NULL);if(Snake[0].len==45)SetTimer(1,60,NULL);if(Snake[0].len==50)SetTimer(1,55,NULL);if(Snake[0].len==55)SetTimer(1,50,NULL);if(Snake[0].len==60)SetTimer(1,45,NULL);if(Snake[0].len==65)SetTimer(1,40,NULL);if(Snake[0].len==75)SetTimer(1,35,NULL);if(Snake[0].len==100)SetTimer(1,25,NULL);if(Snake[0].len==400)SetTimer(1,10,NULL);soure.Format("Game over得分:%d!",(Snake[0].len-3)*10); //游戏结束时输出文本//撞界判断if(Snake[0].x*20<=45||Snake[0].y*20<=45||Snake[0].x*20>=630||Snake[0].y*20>=630){KillTimer(1);AfxMessageBox(soure);}//蛇身相撞判断if(Snake[0].len>3)for(int sn=Snake[0].len-1;sn>0;sn--){if(Snake[0].x*20==Snake[sn].x*20&&Snake[0].y*20==Snake[sn].y*20){KillTimer(1);AfxMessageBox(soure);}}//pDC->SelectStockObject(WHITE_PEN); //把白色的“PEN”选入设备进行画图pDC->Rectangle(Snake[Snake[0].len-1].x*20,Snake[Snake[0].len-1].y*20,(Snake[Snake[0].len-1] .x+1)*20,(Snake[Snake[0].len-1].y+1)*20); //用白色画去最后一个节点for(int i=Snake[0].len-1;i>0;i--){Snake[i].x=Snake[i-1].x;Snake[i].y=Snake[i-1].y;} //贪吃蛇移动的实现//行走方向判断(1:上2:下3:左4:右)if(Snake[0].direct==1)Snake[0].y--;if(Snake[0].direct==2)Snake[0].y++;if(Snake[0].direct==3)Snake[0].x--;if(Snake[0].direct==4)Snake[0].x++;pDC->SelectStockObject(BLACK_PEN); //把黑色的“PEN”选入设备进行画图CBrush DrawBrush=(RGB(153,51,250)); //定义画刷CBrush *Drawbrush=pDC->SelectObject(&DrawBrush); //把对象画刷显示到设备描述表中pDC->Rectangle(Snake[0].x*20,Snake[0].y*20,(Snake[0].x+1)*20,(Snake[0].y+1)*20);pDC->SelectObject(DrawBrush);//判断吃豆的条件,撞到就吃if(Snake[0].x*20==Food.x*20&&Snake[0].y*20==Food.y*20){Snake[0].len++;Food.isfood=0;Snake[Snake[0].len-1].x=Snake[Snake[0].len-2].x;Snake[Snake[0].len-1].y=Snake[Snake[0].len-2].y;}//如果食物被吃了就生成if(Food.isfood==0){srand((unsigned)time(NULL));do{Food.x=rand()%50;Food.y=rand()%50;}while(Food.x*20<65||Food.y*20<65||Food.x*20>630||Food.y*20>630);pDC->Rectangle(Food.x*20,Food.y*20,(Food.x+1)*20,(Food.y+1)*20);Food.isfood=1;}//生成蛇身之外的食物for(int k=0;k<=(Snake[0].len+1);k++){if(Food.x*20==Snake[k].x*20&&Food.y*20==Snake[k].y*20)Food.isfood=0;}…..2.3 程序设计的难点和关键点1、贪吃蛇蛇身的移动的表现;2、贪吃蛇身的加长的表现;3、食物在游戏区域的随机产生;4、蛇身速度的控制;5、游戏背景的填充以及使用画刷画出贪吃蛇以及食物。
2.4 调试的方法游戏过程中会某些时候会出现食物无法出现的情况。
经反复测试发现原因如下:蛇移动是通过将蛇尾扫过区域用画刷画成白色实现的,而食物的随机坐标若恰好出现在蛇身覆盖区域,则蛇尾扫过之后就会变成背景的白色,造成食物看不见的现象。
解决办法:增加一个if条件语句,判断食物坐标是否与蛇身坐标重合,若重合则重新产生食物坐标。
另外,游戏过程中有时会出现食物出现在游戏地图外围的情况,经测试原因为:在编程过程中,未能正确确定食物出现是横纵坐标的限制。
解决办法:严密计算食物横纵坐标与地图外围坐标的关系,正确设立食物出现的限制。
2.5 程序性能评价[从运行效果上进行分析,找出程序的优点和不足]优点:由于MFC操作的简易性以及界面的简洁性,友好型,程序的操作简单易懂,快捷键的加入更是方便了用户操作。
计分系统和重难度模式的加入增加了游戏的可玩性。
不足:鉴于对MFC了解的程度,该游戏功能过于简单,不能选择游戏难度、也没有英雄榜、背景音乐等,游戏界面不美观。
[从程序设计上进行分析,找出程序的优点和不足]优点:用于实现主要功能的代码简洁易懂,条理清晰,注释部分讲解详细缺点:鉴于对MFC的了解程度,还存在很多非必需的代码;产生蛇身之外食物的算法虽然简单易懂,但是在实际游戏操作中会有延迟现象,仍需改进。
三.心得体会在这次小学期中,最大的感受是——知识来源于实践。
这个小学期之前,我对MFC一无所知,但在一步一步摸索着应用MFC编写程序的过程中,我慢慢了解了控件、消息,学会为按键设置快捷键、设计菜单…..每一次的实践都教会我许多,而每一次探索之后得到的快乐,是比从书上获得知识更快乐的。
通过运用MFC编程,我真切地感受到了它的便捷。
它自动生成的代码省去的很多繁琐的初始化代码,自动生成一个运行程序框架,大大简化了编程。
它提供的有关图形绘制的函数以及对消息的响应都为贪吃蛇一类的图形化游戏提供了良好的编程环境。
除去MFC强大的图形绘制功能、计时器功能,程序的主体部分很多都是运用C++课堂上教授的基础知识实现的。
这也让我懂得了基础知识的重要性。
在今后学习C++的过程中,不仅要学会运用图形化编程,更要研究其中的函数原型等知识,充分运用和实践C++的基础知识,从而达到温故知新。
2012.9.9。