- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C程序設计期中考试贪吃蛇
C++程序设计期中考试
贪吃蛇小程序:
#includevector
#includequeue
using namespace std;
#ifndef SNAKE_H
#define SNAKE_H
class snk//定义点
{
friend class csnake;
int xsign;//横坐标
int ysign;//纵坐标
public:
snk(int x,int y)
{
snkpoint(x,y);
}
snk(){}
void snkpoint(int x,int y)
{
xsign=x;
ysign=y;
}
snk operator-(const snk m)const
{
return snk(xsign-m.xsign,ysign-m.ysign);
}
snk operator+(const snk m)const
{
return snk(xsign+m.xsign,ysign+m.ysign);
}
};
const int size=5;//蛇身开始长度
class csnake
{
snk firstsign;//蛇头坐标
snk secondsign;//蛇颈坐标
snk lastsign;//蛇尾坐标
snk nextsign;//下个蛇头
int row;//列数
int line;//行数
int count;//蛇身长度
vectorvectorchar snakemap;//整个游戏界面
queuesnksnakebody;//蛇身
public:
int getdirctions()const;//方向控制
char getsymbol(const snkc)const//获取指定点坐标
{
return snakemap[c.ysign][c.xsign];
}
csnake(int n)//初始化游戏界面
{
if(n20)
line=20+2;
else
{
if(n30)
line=30+2;
else line=n+2;
}
row=line*3+2;
}
bool isdead(const snksnk)//是否死亡
{
return(getsymbol(snk)==o||snk.ysign==line-1||snk.ysign==0||snk.xsign==0||snk.xsign==row-1);
}
void instance();//初始化游戏界面大小
bool updategame();//更新游戏界面
void showgame();//显示游戏界面
};
#endif
#include windows.h
#include ctime
#include iostream
#include snake.h
using namespace std;
void csnake::instance()//初始化游戏界面大小
{
snakemap.resize(line);//snakemap 横坐标 纵坐标
for(int i=0;iline;i++)
{
snakemap[i].resize(row);
for(int j=0;jrow;j++)
{
snakemap[i][j]= ;
}
}
for(int m=1;msize+1;m++)
{
snakemap[line/2][m]=o;
snakebody.push(snk(m,(line/2)));
}
firstsign=snakebody.back();
secondsign.snkpoint(size-1,line/2);
}
int csnake::getdirctions()const
{
if(GetKeyState(VK_UP)0) return 1;//上
if(GetKeyState(VK_DOWN)0) return 2;//下
if(GetKeyState(VK_LEFT)0) return 3;//左
if(GetKeyState(VK_RIGHT)0)return 4;//右
return 0;
}
bool csnake::updategame()
{
static int score=0;
int choice;
choice=getdirctions();
coutscore : scoreendl;
int r,l;
static bool eatfood=true;
if(eatfood)
{
do//食物
文档评论(0)