1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 用easyx图形库做一个简单的c++小游戏---贪吃蛇

用easyx图形库做一个简单的c++小游戏---贪吃蛇

时间:2020-06-27 13:04:53

相关推荐

用easyx图形库做一个简单的c++小游戏---贪吃蛇

用easyx图形库做一个简单的c++小游戏———贪吃蛇

贪吃蛇游戏博客链接:(方法一样,语言不一样)

c++贪吃蛇:/weixin_46791942/article/details/106850986

python贪吃蛇:/weixin_46791942/article/details/110383746

java贪吃蛇:/weixin_46791942/article/details/112095059

正文开始

开发环境:visual c++6.0

库:easyx图形库 下载地址>>> (/downloads/)

我把游戏分成三个界面,第一个是初始界面,第二个是游戏界面,第三个就是死亡界面。分别写到3个函数里去调用。

成果展示:

初始界面:

游戏界面:

死亡界面:

附上代码:

#include <easyx.h>//图形库graphics.h#include <iostream>//cpp头文件#include <conio.h>//按键操作的头文件#include <time.h>//提取时间,用来生成随机数using namespace std;void area1();//开始界面void area2();//游戏界面void area3();//结束界面int main(){initgraph(500,500);//初始一个图形区域(宽500,长500)BeginBatchDraw();//开始绘图area1();//开始界面area2();//游戏界面area3();//死亡界面return 0;}void area1(){//开始界面的函数do{setbkmode(TRANSPARENT);setfillcolor(WHITE);//设置背景颜色solidrectangle(0,0,500,500);settextcolor(GREEN);//设置字体颜色settextstyle(50,0,"楷体");//设置字体样式;outtextxy(110,100,"贪吃蛇游戏");//输出字体settextcolor(BLACK);settextstyle(30,0,"楷体");outtextxy(200,200,"START");settextstyle(20,0,"楷体");outtextxy(150,230,"(按回车进入下一步)");settextcolor(LIGHTGRAY);outtextxy(150,250,"A代表左 D代表右");outtextxy(150,270,"W代表上 S代表下");FlushBatchDraw();//输出绘图getch();//停止,等待操作}while(GetKeyState(13)>=0);//回车判断}void area2(){//游戏界面的函数int s[52][52];int lon=3;//蛇的长度int way=1;//蛇的方向int x=25,y=25;//蛇的初始位置srand(int(time(0)));int rx=1+rand()%49;//食物的横坐标int ry=1+rand()%49;//食物的纵坐标for(int i=1;i<=50;i++)for(int j=1;j<=50;j++)s[i][j]=0;//空地的值为0while(s[rx][ry]!=0){rx=1+rand()%49;ry=1+rand()%49;}s[rx][ry]=-1;//食物的值为-1while(1){//主循环开头Sleep(100);setfillcolor(WHITE);//设置背景颜色solidrectangle(0,0,500,500);if(GetKeyState(65)<0&&way!=2)//a,向左,同时确保不反向自杀way=1;if(GetKeyState(68)<0&&way!=1)//d,向右,同时确保不反向自杀way=2;if(GetKeyState(83)<0&&way!=4)//s,向下,同时确保不反向自杀way=3;if(GetKeyState(87)<0&&way!=3)//w,向上,同时确保不反向自杀way=4;if(way==1)x--;if(way==2)x++;if(way==3)y++;if(way==4)y--;if(x<=0||x>50||y<=0||y>50||s[x][y]>0)//撞墙或自食则游戏结束break;s[x][y]=lon;//蛇的值为正数for(int i=1;i<=50;i++){for(int j=1;j<=50;j++){if(s[i][j]>0){s[i][j]--;setfillcolor(GREEN);//设置当前颜色为绿色(蛇)solidrectangle((i-1)*10,(j-1)*10,i*10,j*10);//形成无边框矩形}if(s[i][j]==-1){setfillcolor(RED);//设置当前颜色为红色(食物)solidrectangle((i-1)*10,(j-1)*10,i*10,j*10);//形成无边框矩形}if(x==rx&&y==ry){//蛇吃到食物lon++;while(s[rx][ry]!=0){rx=1+rand()%49;ry=1+rand()%49;}//whiles[rx][ry]=-1;}//if}//for}//forFlushBatchDraw();//输出绘图}//主循环结尾}void area3(){//死亡界面的函数setbkmode(TRANSPARENT);setfillcolor(WHITE);//设置背景颜色solidrectangle(0,0,500,500);settextcolor(BLACK);//设置字体颜色settextstyle(50,0,"楷体");//设置字体样式;outtextxy(120,200,"有待提高!");//输出字体settextstyle(20,0,"楷体");;outtextxy(150,270,"(3秒后自动关闭)");FlushBatchDraw();//输出绘图Sleep(3000);//单位以毫秒计算getch();closegraph();}

做得比较简易,但基本功能都能实现。(这是我之前写的代码,或许有点乱,但基本上我都有写上注释)。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。