C语言课程设计-贪吃蛇游戏.docx

上传人:自*** 文档编号:124908573 上传时间:2020-03-14 格式:DOCX 页数:18 大小:138.62KB
返回 下载 相关 举报
C语言课程设计-贪吃蛇游戏.docx_第1页
第1页 / 共18页
C语言课程设计-贪吃蛇游戏.docx_第2页
第2页 / 共18页
C语言课程设计-贪吃蛇游戏.docx_第3页
第3页 / 共18页
C语言课程设计-贪吃蛇游戏.docx_第4页
第4页 / 共18页
C语言课程设计-贪吃蛇游戏.docx_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《C语言课程设计-贪吃蛇游戏.docx》由会员分享,可在线阅读,更多相关《C语言课程设计-贪吃蛇游戏.docx(18页珍藏版)》请在金锄头文库上搜索。

1、山东交通学院C语言课程设计贪吃蛇游戏 院(系)别 交通与物流工程学院 班 级 物联131 学 号 130516122 姓 名 王赛 指导教师 徐成强 时 间 2014-06-092014-06-15 课 程 设 计 任 务 书题 目 贪吃蛇游戏 学 院 交通与物流工程学院 专 业 物联网工程 班 级 物联131 学生姓名 王赛 学 号 130516122 6 月 9 日至 6 月 15 日 共 1 周指导教师(签字) 徐成强 院 长(签字) 2014年6月15日成 绩 评 定 表作品成绩报告成绩总评成绩目 录C语言课程设计报告1题目:贪吃蛇游戏1一、选题背景3二、设计思路4四、程序流程图5五、

2、原程序清单5六、程序运行结果11七、设计总结12八、教师评语14一、选题背景C语言实际上已经成为了中级语言的事实上的标准,如果你从事嵌入式开发、芯片设计等,C语言是必须懂的基础;在高级语言上,C语言的简练和精确也具备特殊的优势;VC的强大在Windows平台上其它语言更是难与之相匹敌,在Unix/Linux平台上,C语言也是最终要的语言,Linux的内核也主要是以C语言写的。当然C语言也有缺点:就是难,容易出错,因为它的数据类型需要精确,而导致不够深入理解的程序员常容易犯错。通过本学期对C语言的学习,掌握了C语言的基本语法,能编一些小程序。通过这次实习,结合C+语言,编写了著名的贪吃蛇游戏,目

3、的提高自己的编程水平。 二、设计思路程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画矩形块和覆盖矩形块。为了便于理解,定义两个结构体:食物与蛇三、

4、主要问题的解决方法和关键技术.通过随机函数产生随机数,控制游戏过程食物的出现;.定义键盘操作,控制游戏过程蛇的移动方向;. 画出边界,并判断游戏是否结束;. 统计游戏过程蛇吃的食物数量,计算并输出游戏成绩。四、程序流程图五、原程序清单#include #include #include #include #include using namespace std; #ifndef SNAKE_H #define SNAKE_H class Cmp friend class Csnake; int rSign; /横坐标 int lSign; /竖坐标 public: / friend bool

5、isDead(const Cmp& cmp); Cmp(int r,int l)setPoint(r,l); Cmp() void setPoint(int r,int l)rSign=r;lSign=l; Cmp operator-(const Cmp &m)const return Cmp(rSign-m.rSign,lSign-m.lSign); Cmp operator+(const Cmp &m)const return Cmp(rSign+m.rSign,lSign+m.lSign); ; const int maxSize = 5; /初始蛇身长度 class Csnake Cm

6、p firstSign; /蛇头坐标 Cmp secondSign;/蛇颈坐标 Cmp lastSign; /蛇尾坐标 Cmp nextSign; /预备蛇头 int row; /列数 int line; /行数 int count; /蛇身长度 vectorvector snakeMap;/整个游戏界面 queue snakeBody; /蛇身 public: int GetDirections()const; char getSymbol(const Cmp& c)const /获取指定坐标点上的字符 return snakeMapc.lSignc.rSign; Csnake(int n)

7、 /初始化游戏界面大小 if(n30)line=30+2; else line=n+2; row=line*3+2; bool isDead(const Cmp& cmp) return ( getSymbol(cmp)= | cmp.rSign = row-1 | cmp.rSign= 0 | cmp.lSign = line-1 | cmp.lSign = 0 ); void InitInstance(); /初始化游戏界面 bool UpdataGame(); /更新游戏界面 void ShowGame(); /显示游戏界面 ; #endif / SNAKE_H using namesp

8、ace std; /测试成功 void Csnake:InitInstance() snakeMap.resize(line); / snakeMap竖坐标横坐标 for(int i=0;iline;i+) snakeMapi.resize(row); for(int j=0;jrow;j+) snakeMapij= ; for(int m=1;mmaxSize+1;m+) /初始蛇身 snakeMapline/2m=; /将蛇身坐标压入队列 snakeBody.push(Cmp(m,(line/2); /snakeBody横坐标竖坐标 /链表头尾 firstSign=snakeBody.ba

9、ck(); secondSign.setPoint(maxSize-1,line/2); /测试成功 int Csnake:GetDirections()const if(GetKeyState(VK_UP)0) return 1; /1表示按下上键 if(GetKeyState(VK_DOWN)0) return 2; /2表示按下下键 if(GetKeyState(VK_LEFT)0) return 3; /3表示按下左键 if(GetKeyState(VK_RIGHT)0)return 4; /4表示按下右键 return 0; bool Csnake:UpdataGame() /- /

10、初始化得分0 static int score=0; /获取用户按键信息 int choice; choice=GetDirections(); coutTotal score: scoreendl; /随机产生食物所在坐标 int r,l; /开始初始已经吃食,产生一个食物 static bool eatFood=true; /如果吃了一个,才再出现第2个食物 if(eatFood) do /坐标范围限制在(1,1)到(line-2,row-2)对点矩型之间 srand(time(0); r=(rand()%(row-2)+1; /横坐标 l=(rand()%(line-2)+1;/竖坐标

11、/如果随机产生的坐标不是蛇身,则可行 /否则重新产生坐标 if(snakeMaplr!=) snakeMaplr=*; while (snakeMaplr=); switch (choice) case 1:/向上 /如果蛇头和社颈的横坐标不相同,执行下面操作 if(firstSign.rSign!=secondSign.rSign)nextSign.setPoint(firstSign.rSign,firstSign.lSign-1); /否则,如下在原本方向上继续移动 else nextSign=firstSign+(firstSign-secondSign); break; case 2

12、:/向下 if(firstSign.rSign!=secondSign.rSign)nextSign.setPoint(firstSign.rSign,firstSign.lSign+1); else nextSign=firstSign+(firstSign-secondSign); break; case 3:/向左 if(firstSign.lSign!=secondSign.lSign)nextSign.setPoint(firstSign.rSign-1,firstSign.lSign); else nextSign=firstSign+(firstSign-secondSign); break; case 4:/向右 if(firstSign.lSign!=secondSign.lSign)nextSign.setPoint(firstSign.rSi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 工业设计

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号