欢迎来到天天文库
浏览记录
ID:24695069
大小:318.18 KB
页数:17页
时间:2018-11-16
《贪吃蛇游戏的实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《面向对象程序设计》课程设计设计名称贪吃蛇游戏的实现姓名蒋欢指导教师张静班级15级信息管理与信息系统2016年06月18日目录第一章引言11.1研究背景11.1.1背景内容11.2研究方案1第二章概述12.1程序流程图1第三章设计的具体实现23.1InitInstance函数23.2UpdataGame函数33.3main函数33.4Csnake函数33.5getSymbol函数43.6isDead函数4第四章调试及解决方法4第五章测试结果5第六章设计新的体会7致谢8参考文献8附录9第一章引言1.1研究背景贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的
2、所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我,它的制作方法对于以前的我而言都是很神秘的[[]C++语言程序设计]。我希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我的编程能力不是很强,但是我有信心,在这次学习中我将从实践和实际的项目中提高自己的编程能力,因此我选定了这个题目。1.1.1背景内容贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇
3、头撞倒自己身体游戏结束[[]C语言附录main.cpp#include#include"snake.h"#includeusingnamespacestd;intmain(){Csnakes(20);s.InitInstance();//s.ShowGame();intnoDead;do{s.ShowGame();noDead=s.UpdataGame();}while(noDead);system("pause");return0;}snack.cpp#include#include#i
4、nclude#include"snake.h"usingnamespacestd;//测试成功voidCsnake::InitInstance(){snakeMap.resize(line);//snakeMap[竖坐标][横坐标]for(inti=0;i5、snakeBody.push(Cmp(m,(line/2)));//snakeBody[横坐标][竖坐标]}//链表头尾firstSign=snakeBody.back();secondSign.setPoint(maxSize-1,line/2);}//测试成功intCsnake::GetDirections()const{if(GetKeyState(VK_UP)<0)return1;//1表示按下上键if(GetKeyState(VK_DOWN)<0)return2;//2表示按下下键if(GetKeyState(VK_LEFT)<0)return3;//3表6、示按下左键if(GetKeyState(VK_RIGHT)<0)return4;//4表示按下右键return0;}boolCsnake::UpdataGame(){//初始化得分0staticintscore=0;//获取用户按键信息intchoice;choice=GetDirections();cout<<"Totalscore:"<7、1,1)到(line-2,row-2)对点矩型之间srand(time(0));r=(rand()%(row-2))+1;//横坐标l=(rand()%(line-2))+1;//竖坐标//如果随机产生的坐标不是蛇身,则可行//否则重新产生坐标if(snakeMap[l][r]!='@'){snakeMap[l][r]='*';}}while(snakeMap[l][r]=='@');}switch(choice){case1://向上//如果蛇头和社颈的横坐标不相同,执行下面操作if(firstSign.rSign!=secondSign.rSign)next
5、snakeBody.push(Cmp(m,(line/2)));//snakeBody[横坐标][竖坐标]}//链表头尾firstSign=snakeBody.back();secondSign.setPoint(maxSize-1,line/2);}//测试成功intCsnake::GetDirections()const{if(GetKeyState(VK_UP)<0)return1;//1表示按下上键if(GetKeyState(VK_DOWN)<0)return2;//2表示按下下键if(GetKeyState(VK_LEFT)<0)return3;//3表
6、示按下左键if(GetKeyState(VK_RIGHT)<0)return4;//4表示按下右键return0;}boolCsnake::UpdataGame(){//初始化得分0staticintscore=0;//获取用户按键信息intchoice;choice=GetDirections();cout<<"Totalscore:"<7、1,1)到(line-2,row-2)对点矩型之间srand(time(0));r=(rand()%(row-2))+1;//横坐标l=(rand()%(line-2))+1;//竖坐标//如果随机产生的坐标不是蛇身,则可行//否则重新产生坐标if(snakeMap[l][r]!='@'){snakeMap[l][r]='*';}}while(snakeMap[l][r]=='@');}switch(choice){case1://向上//如果蛇头和社颈的横坐标不相同,执行下面操作if(firstSign.rSign!=secondSign.rSign)next
7、1,1)到(line-2,row-2)对点矩型之间srand(time(0));r=(rand()%(row-2))+1;//横坐标l=(rand()%(line-2))+1;//竖坐标//如果随机产生的坐标不是蛇身,则可行//否则重新产生坐标if(snakeMap[l][r]!='@'){snakeMap[l][r]='*';}}while(snakeMap[l][r]=='@');}switch(choice){case1://向上//如果蛇头和社颈的横坐标不相同,执行下面操作if(firstSign.rSign!=secondSign.rSign)next
此文档下载收益归作者所有