已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生课程设计报告一、 课程设计内容贪吃蛇小游戏程序设计(贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中身体交叉蛇头撞倒自己身体则游戏结束。)二、 技术路线使用VC+6.0作为开发环境,采用控制台的形式完成整个游戏的开发,没有用到MFC。加入了pcc32.h的头文件及库文件,用于对控制台打印效果的控制。同时也加入了PlaySound()函数,实现了对菜单选择,游戏开始,游戏结束的音效控制。游戏栏和输出栏的同时打印,数据的更新打印效果,没有采用双线程的方法实现。接收用户键盘输入信息,实现游戏暂停,重新开始,菜单选择和进入菜单。三、 设计与实现1.游戏基本功能:游戏有开始菜单界面,并有开始游戏,游戏帮助,关于游戏,退出游戏四个选项游戏初始化后,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个方向键控制蛇移动,蛇在移动过程中撞到墙壁将不会死亡,而是穿过围墙继续行进,但是如果蛇身体交叉蛇头撞到自己的身体,则游戏结束。同时,游戏过程中可暂停游戏,并有积分系统,且积分每满一定值,蛇的运行速度也会逐步增加。2.函数定义和声明(1)头文件#include #include#include#include#include#include mmsystem.h#pragma comment(lib,winmm.lib)#includepcc32.h#pragma comment(lib, pcc32_vc6.lib)using namespace std;#define UP 72/定义上下左右常量#define DOWN 80#define LEFT 75#define RIGHT 77#define ESC 27#define SPACE 32/空格#define ENTER 13/回车(2)函数声明void GamePrint();/游戏开始画面函数void Gameinit();/游戏初始化函数void Sweep_Screem();/清屏函数void Gotoxy(int , int);/光标移动函数void Hid_Cursor();/光标隐藏函数void Snake_Move();/蛇运动函数int Create_Food();/食物产生函数void Pwall();/画墙函数void Key();/键盘操作和处理函数void Hit_Wall();/判断是否撞墙void Eat_Itself();/判断是否咬到自己void Whether_Eat();/判断蛇是否吃到食物void GameRun();/游戏运行函数void SurFace();/开始菜单界面void GameOver();/游戏结束判断函数void Pause();/游戏暂停函数void MyCount1();/统计边栏,用来做提示void MyCount2();/统计边栏,用来做一些统计void Menu( int ); /开始界面void Inti_Data();/初始化数据(3)变量声明int X, Y; /食物坐标int Map7924=0; /地图尺寸,其实有食物记为1int over = 0; /用来标记游戏结束int score = 0; /记录分数int speed = 130; /记录速度int ColoArray15=15,1,2,3,4,5,6,7,8,9,10,11,12,13,14;/自己定义的用来控制颜色的数组int length = 3; /初始化蛇的长度为3int Key_Menu; /开始菜单界面用的零时按键3.主函数int main()int main()/主函数START:Inti_Data();fixConsoleSize(18,15);Hid_Cursor();SurFace();PlaySound(TEXT(m22.wav), NULL, SND_FILENAME | SND_ASYNC );fixConsoleSize(105,25);GamePrint();Gameinit();GameRun();while(over)/如果游戏结束了,是否重新开始。按R键为重新开始int t=getch();if(t = r|t = R)system(cls);goto START;return 0;4.界面函数Surface()SurFace()是通过接受按键信息来调用Menu();SurFace()中给出了四个菜单选项,上下键实现对菜单的选择,ENTER键实现对菜单的进入;temp用于存放按键信息,keytemp用于记录当前菜单的位置,实现了在第一个菜单选项按上方向键会走到最后一个菜单选项(keytemp+=4),在最后一个菜单选项按下方向键会走到第一个菜单选项(keytemp%4)5.菜单函数Menu(int n)调节输出的颜色给人以选择光效移动的效果,事实上只是先清屏然后重新打印了而已,通过SurFace()传参来控制菜单输出结果开始开始菜单界面初始化游戏界面蛇运动蛇吃到食物?蛇长大蛇死亡继续退出界面N帮助菜单关于菜单开始游戏产生食物NYNYY6.流程图四、 测试结果1. 开始界面2. 游戏界面五、 感想和体会刚开始决定做这个游戏的时候,还是有点迷茫不知道从何做起,于是在网络上寻找了大量的资料,了解到具体有控制台的贪吃蛇,MFC写的贪吃蛇,还有其他更高级的贪吃蛇。最终开始有初步的规划。首先,由于对 面向对象 和 对类的理解不够,这里我们采用了C语言进行开发。其次,介于对QT, WIN32SDK,GDI,OPENGL,DirectX等等没有任何基础,甚至是对C+也没有很好的理解,也难以进行更高效和更好的开发。最后,我们没有采用MFC进行游戏开发,而是直接采用了 控制台 进行开发。开始我们先对最简单的程序进行分享,在充分理解了贪吃蛇核心的算法部分后,发现了完成这个项目的可行性,其他的部分就可以靠我们自己进行开发了。在完全依靠控制台的情况下,我们遇到并解决了许多问题,提高了自己,同时也收获了实践的经验。我们采用了自己想出的很多方法来解决“界面”的问题,开始菜单界面的完成,就用了比较笨的方法,原因还是知识贫乏。开发过程中,我们遇到了许多问题,在网络寻求帮助之后,我们意外的发现了PCC32库,并下载了这个库和头文件,在对PCC32头文件进行深入研究之后,我们在游戏的开发中大量使用了PCC32.h头文件中的函数,使我们的开发变得更加顺利。在次非常感谢PCC32库的作者,正是他的无私奉献,才使我们的能够更好得开发。还有就是多线程的问题,在多方面询问之后,发现单线程的局限性太大,但是还是因为知识匮乏的缘故,我们对如果实现多线程没有很好的理解,最终只能使用单线程。还有就是我们对windows API了解甚少,然而Windows API包括几千个可调用的函数,这让我们在临时运用的时候,显得力不从心,很多函数并没有完全了解其
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年四川应用技术职业学院单招职业倾向性测试必刷测试卷及答案解析(夺冠系列)
- 2026年乌海职业技术学院单招职业适应性考试题库及答案解析(夺冠系列)
- 2026年天门职业学院单招职业技能测试题库及答案解析(名师系列)
- 多模式智能运输
- 房屋强制清场协议书
- 房屋改造报价协议书
- 房屋机械拆除协议书
- 房屋火灾社区协议书
- 房屋租赁置换协议书
- 房屋维修家具协议书
- 《外科护理学(第七版)》考试复习题库-下(多选题)
- 安徽工业大学《机械制图》2021-2022学年第一学期期末试卷
- 作业展评评分表
- Unit5MusicReadingforWriting教学设计高中英语人教版
- 员工短视频出镜协议书模板
- 中药茯苓培训课件
- QB/T 2660-2024 化妆水(正式版)
- QC技术提高隧道光面爆破合格率(建筑行业资料)
- 医疗器械可用性工程注册审查指导原则(2024年第13号)
- 中央环保督察迎战培训课件
- JJG 443-2023燃油加油机(试行)
评论
0/150
提交评论