《c语言贪吃蛇小游戏程序课程设计.doc》由会员分享,可在线阅读,更多相关《c语言贪吃蛇小游戏程序课程设计.doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、学生课程设计报告一、 课程设计内容贪吃蛇小游戏程序设计(贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中身体交叉蛇头撞倒自己身体则游戏结束。)二、 技术路线使用VC+6.0作为开发环境,采用控制台的形式完成整个游戏的开发,没有用到MFC。加入了pcc32.h的头文件及库文件,用于对控制台打印效果的控制。同时也加入了PlaySound()函数,实现了对菜单选择,游戏开始,游戏结束的音效控制。游戏栏和输出栏的同时打印,数据的更新
2、打印效果,没有采用双线程的方法实现。接收用户键盘输入信息,实现游戏暂停,重新开始,菜单选择和进入菜单。三、 设计与实现1.游戏基本功能:游戏有开始菜单界面,并有开始游戏,游戏帮助,关于游戏,退出游戏四个选项游戏初始化后,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个方向键控制蛇移动,蛇在移动过程中撞到墙壁将不会死亡,而是穿过围墙继续行进,但是如果蛇身体交叉蛇头撞到自己的身体,则游戏结束。同时,游戏过程中可暂停游戏,并有积分系统,且积分每满一定值,蛇的运行速度也会逐步增加。2.函数定义和声明(1)头文件#include #include#include#include#inc
3、lude#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();/游戏初始化函数
4、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 Game
5、Over();/游戏结束判断函数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,
6、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)/如果游戏结束了,
7、是否重新开始。按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)调节输出的颜色给人以
8、选择光效移动的效果,事实上只是先清屏然后重新打印了而已,通过SurFace()传参来控制菜单输出结果开始开始菜单界面初始化游戏界面蛇运动蛇吃到食物?蛇长大蛇死亡继续退出界面N帮助菜单关于菜单开始游戏产生食物NYNYY6.流程图四、 测试结果1. 开始界面2. 游戏界面五、 感想和体会刚开始决定做这个游戏的时候,还是有点迷茫不知道从何做起,于是在网络上寻找了大量的资料,了解到具体有控制台的贪吃蛇,MFC写的贪吃蛇,还有其他更高级的贪吃蛇。最终开始有初步的规划。首先,由于对 面向对象 和 对类的理解不够,这里我们采用了C语言进行开发。其次,介于对QT, WIN32SDK,GDI,OPENGL,Di
9、rectX等等没有任何基础,甚至是对C+也没有很好的理解,也难以进行更高效和更好的开发。最后,我们没有采用MFC进行游戏开发,而是直接采用了 控制台 进行开发。开始我们先对最简单的程序进行分享,在充分理解了贪吃蛇核心的算法部分后,发现了完成这个项目的可行性,其他的部分就可以靠我们自己进行开发了。在完全依靠控制台的情况下,我们遇到并解决了许多问题,提高了自己,同时也收获了实践的经验。我们采用了自己想出的很多方法来解决“界面”的问题,开始菜单界面的完成,就用了比较笨的方法,原因还是知识贫乏。开发过程中,我们遇到了许多问题,在网络寻求帮助之后,我们意外的发现了PCC32库,并下载了这个库和头文件,在
10、对PCC32头文件进行深入研究之后,我们在游戏的开发中大量使用了PCC32.h头文件中的函数,使我们的开发变得更加顺利。在次非常感谢PCC32库的作者,正是他的无私奉献,才使我们的能够更好得开发。还有就是多线程的问题,在多方面询问之后,发现单线程的局限性太大,但是还是因为知识匮乏的缘故,我们对如果实现多线程没有很好的理解,最终只能使用单线程。还有就是我们对windows API了解甚少,然而Windows API包括几千个可调用的函数,这让我们在临时运用的时候,显得力不从心,很多函数并没有完全了解其功能和各参数的用法就拿来使用,希望在以后的生活中,更加努力的去学习。现在腹中的知识还非常非常有限,能够完成这个游戏,我们觉得挺开心的,不过高手看了我们的代码,没有发辫其他任何评论,直接给了三个字,烂代码,这让我们明白了,我们要走的路还很远。在以后的学习中,我们小组一定会更加努力,总有一天我们也会成为真正的高手