c语言贪吃蛇小游戏程序课程设计.docx
- 文档编号:22839094
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:10
- 大小:272.55KB
c语言贪吃蛇小游戏程序课程设计.docx
《c语言贪吃蛇小游戏程序课程设计.docx》由会员分享,可在线阅读,更多相关《c语言贪吃蛇小游戏程序课程设计.docx(10页珍藏版)》请在冰豆网上搜索。
c语言贪吃蛇小游戏程序课程设计
学生课程设计报告
一、课程设计内容
贪吃蛇小游戏程序设计
(贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中身体交叉蛇头撞倒自己身体则游戏结束。
)
二、技术路线
使用VC++6.0作为开发环境,
采用控制台的形式完成整个游戏的开发,没有用到MFC。
加入了pcc32.h的头文件及库文件,用于对控制台打印效果的控制。
同时也加入了PlaySound()函数,实现了对菜单选择,游戏开始,游戏结束的音效控制。
游戏栏和输出栏的同时打印,数据的更新打印效果,没有采用双线程的方法实现。
接收用户键盘输入信息,实现游戏暂停,重新开始,菜单选择和进入菜单。
三、设计与实现
1.游戏基本功能:
游戏有开始菜单界面,并有开始游戏,游戏帮助,关于游戏,退出游戏四个选项
游戏初始化后,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,
通过按键盘上的四个方向键控制蛇移动,
蛇在移动过程中撞到墙壁将不会死亡,而是穿过围墙继续行进,
但是如果蛇身体交叉蛇头撞到自己的身体,则游戏结束。
同时,游戏过程中可暂停游戏,并有积分系统,
且积分每满一定值,蛇的运行速度也会逐步增加。
2.函数定义和声明
(1)头文件
#include
#include
#include
#include
#include
#include"mmsystem.h"
#pragmacomment
(lib,"winmm.lib")
#include"pcc32.h"
#pragmacomment
(lib,"pcc32_vc6.lib")
usingnamespacestd;
#defineUP72
//定义上下左右常量
#defineDOWN80
#defineLEFT75
#defineRIGHT77
#defineESC27
#defineSPACE32
//空格
#defineENTER13
//回车
(2)函数声明
voidGamePrint();
//游戏开始画面函数
voidGameinit();
//游戏初始化函数
voidSweep_Screem();
//清屏函数
voidGotoxy(int,int);
//光标移动函数
voidHid_Cursor();
//光标隐藏函数
voidSnake_Move();
//蛇运动函数
intCreate_Food();
//食物产生函数
voidPwall();
//画墙函数
voidKey();
//键盘操作和处理函数
voidHit_Wall();
//判断是否撞墙
voidEat_Itself();
//判断是否咬到自己
voidWhether_Eat();
//判断蛇是否吃到食物
voidGameRun();
//游戏运行函数
voidSurFace();
//开始菜单界面
voidGameOver();
//游戏结束判断函数
voidPause();
//游戏暂停函数
voidMyCount1();
//统计边栏,用来做提示
voidMyCount2();
//统计边栏,用来做一些统计
voidMenu(int);
//开始界面
voidInti_Data();
//初始化数据
(3)变量声明
intX,Y;
//食物坐标
intMap[79][24]={{0}};
//地图尺寸,其实有食物记为1
intover=0;
//用来标记游戏结束
intscore=0;
//记录分数
intspeed=130;
//记录速度
intColoArray[15]=
{15,1,2,3,4,5,6,7,8,9,10,11,12,13,14};
//自己定义的用来控制颜色的数组
intlength=3;
//初始化蛇的长度为3
intKey_Menu;
//开始菜单界面用的零时按键
3.主函数intmain()
intmain()//主函数
{
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键为重新开始
{
intt=getch();
if(t=='r'||t=='R')
{
system("cls");
gotoSTART;
}
}
return0;
}
4.界面函数Surface()
SurFace()是通过接受按键信息来调用Menu();
SurFace()中给出了四个菜单选项,
上下键实现对菜单的选择,
ENTER键实现对菜单的进入;
temp用于存放按键信息,
keytemp用于记录当前菜单的位置,
实现了在第一个菜单选项按上方向键会走到最后一个菜单选项(keytemp+=4),
在最后一个菜单选项按下方向键会走到第一个菜单选项(keytemp%4)
5.菜单函数Menu(intn)
调节输出的颜色给人以选择光效移动的效果,事实上只是先清屏然后重新打印了而已,通过SurFace()传参来控制菜单输出结果
6.流程图
四、
测试结果
1.开始界面
2.游戏界面
五、感想和体会
刚开始决定做这个游戏的时候,还是有点迷茫不知道从何做起,于是在网络上寻找了大量的资料,了解到具体有控制台的贪吃蛇,MFC写的贪吃蛇,还有其他更高级的贪吃蛇。
最终开始有初步的规划。
首先,由于对面向对象和对类的理解不够,这里我们采用了C语言进行开发。
其次,介于对QT,WIN32SDK,GDI,OPENGL,DirectX等等没有任何基础,甚至是对C++也没有很好的理解,也难以进行更高效和更好的开发。
最后,我们没有采用MFC进行游戏开发,
而是直接采用了控制台进行开发。
开始我们先对最简单的程序进行分享,在充分理解了贪吃蛇核心的算法部分后,发现了完成这个项目的可行性,其他的部分就可以靠我们自己进行开发了。
在完全依靠控制台的情况下,
我们遇到并解决了许多问题,提高了自己,同时也收获了实践的经验。
我们采用了自己想出的很多方法来解决“界面”的问题,
开始菜单界面的完成,就用了比较笨的方法,原因还是知识贫乏。
开发过程中,我们遇到了许多问题,在网络寻求帮助之后,我们意外的发现了PCC32库,并下载了这个库和头文件,在对PCC32头文件进行深入研究之后,我们在游戏的开发中大量使用了PCC32.h头文件中的函数,使我们的开发变得更加顺利。
在次非常感谢PCC32库的作者,正是他的无私奉献,才使我们的能够更好得开发。
还有就是多线程的问题,在多方面询问之后,发现单线程的局限性太大,但是还是因为知识匮乏的缘故,,我们对如果实现多线程没有很好的理解,最终只能使用单线程。
还有就是我们对windowsAPI了解甚少,然而WindowsAPI包括几千个可调用的函数,
这让我们在临时运用的时候,显得力不从心,很多函数并没有完全了解其功能和各参数的用法就拿来使用,希望在以后的生活中,更加努力的去学习。
现在腹中的知识还非常非常有限,能够完成这个游戏,我们觉得挺开心的,不过高手看了我们的代码,没有发辫其他任何评论,直接给了三个字,烂代码,这让我们明白了,我们要走的路还很远。
在以后的学习中,我们小组一定会更加努力,总有一天我们也会成为真正的高手
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 贪吃 小游戏 程序 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)