windows下c/c++编程实现 贪吃蛇简易版
来源:互联网 发布:帝国cms系统目录 编辑:程序博客网 时间:2024/06/17 03:13
简单地实现场景、蛇的移动、食物、得分以及游戏开始、结束。
实现
头文件 stdlib.h iostream windows.h time.h conio.h vector
先定义一个位置函数,主要通过位置函数来对蛇、食物进行操作。
定义一个场景初始化函数,对场景进行描绘。
蛇的长度是会变的,所以必须使用动态空间为蛇进行定义。
其次是食物,食物是随机的,所以通过rand()、srand()获取随机位置。
最后是获取位移操作,本案例通过操作蛇的头的位置来对整条蛇进行控制。通过获取输入(w,s,a,d)来为其位置进行+、-。从而实现蛇的移动控制。
废话不多说,直接看代码吧。
代码实现
#include<iostream>#include<windows.h>#include<time.h>#include<stdlib.h>#include<conio.h>#define N 21#include <vector>using std::vector;using std::cin;using std::cout;using std::endl;using std::string;void gotoxy(int x,int y)//位置函数{ COORD pos; pos.X=2*x; pos.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}void color(int a)//颜色函数{ SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);}void init(int apple[2])//初始化函数(初始化围墙、显示信息、苹果){ int i,j;//初始化围墙 int wall[N+2][N+2]={{0}}; for(i=1;i<=N;i++) { for(j=1;j<=N;j++) wall[i][j]=1; } //wall[1][1]=0; color(11); for(i=0;i<N+2;i++) { for(j=0;j<N+2;j++) { if(wall[i][j]) cout<<" "; else cout<<"□" ; } cout<<endl; } gotoxy(N+3,1);//显示信息 color(24); cout<<"按 W S A D 移动方向"<<endl; gotoxy(N+3,2); color(20); cout<<"按任意键暂停"<<endl; gotoxy(N+3,3); color(20); cout<<"得分:"<<endl; apple[0]=rand()%N+1;//苹果 apple[1]=rand()%N+1; gotoxy(apple[0],apple[1]); color(12); cout<<"Θ"<<endl;}int main(){ int i,j; int** snake=NULL; int apple[2]; int score=0; int tail[2]; int len=3; char ch='p'; srand((unsigned)time(NULL)); init(apple); snake=(int**)realloc(snake,sizeof(int*)*len); for(i=0;i<len;i++) snake[i]=(int*)malloc(sizeof(int)*2); for(i=0;i<len;i++) { snake[i][0]=N/2; snake[i][1]=N/2+i; gotoxy(snake[i][0],snake[i][1]); color(14); cout<<"◆"<<endl; } while(1)//进入消息循环 { tail[0]=snake[len-1][0]; tail[1]=snake[len-1][1]; gotoxy(tail[0],tail[1]); color(11); cout<<" "<<endl; for(i=len-1;i>0;i--) { snake[i][0]=snake[i-1][0]; snake[i][1]=snake[i-1][1]; gotoxy(snake[i][0],snake[i][1]); color(14); cout<<"◆"<<endl; } if(kbhit()) { gotoxy(0,N+2); ch=getche(); } switch(ch) { case 'w':snake[0][1]--;break; case 's':snake[0][1]++;break; case 'a':snake[0][0]--;break; case 'd':snake[0][0]++;break; default: break; } gotoxy(snake[0][0],snake[0][1]); color(14); cout<<"◆"<<endl; Sleep(abs(200-0.5*score)); if(snake[0][0]==apple[0]&&snake[0][1]==apple[1])//吃掉苹果后蛇分数加1,蛇长加1 { score++; len++; snake=(int**)realloc(snake,sizeof(int*)*len); snake[len-1]=(int*)malloc(sizeof(int)*2); apple[0]=rand()%N+1; apple[1]=rand()%N+1; gotoxy(apple[0],apple[1]); color(12); cout<<"Θ"<<endl; gotoxy(N+5,3); color(20); cout<<score<<endl; } if(snake[0][1]==0||snake[0][1]==N||snake[0][0]==0||snake[0][0]==N)//撞到围墙后失败 { gotoxy(N/2,N/2); color(30); cout<<"失败!!!"<<endl; for(i=0;i<len;i++) free(snake[i]); while(!kbhit())//按任意键继续 Sleep(0.1); for(i=0;i<len;i++) { gotoxy(snake[i][0],snake[i][1]); color(11); cout<<" "<<endl; } for(i=0;i<len;i++) { snake[i][0]=N/2; snake[i][1]=N/2+i; gotoxy(snake[i][0],snake[i][1]); color(14); cout<<"◆"<<endl; } gotoxy(N/2,N/2); color(11); cout<<" "<<endl; continue;// Sleep(INFINITE); exit(0); } } return 0;}...
0 0
- windows下c/c++编程实现 贪吃蛇简易版
- 贪吃蛇C语言实现(简易版)
- 简易贪吃蛇 C ~
- C《贪吃蛇》简易字符版
- DOS简易版C语言贪吃蛇
- DOS简易版C语言贪吃蛇
- 贪吃蛇C实现
- 我自己写的第一个游戏--贪吃蛇(windows下c语言实现)
- C版贪吃蛇
- 贪吃蛇----C语言实现
- C语言实现贪吃蛇
- [C++]C++实现贪吃蛇
- 贪吃蛇游戏(c实现)
- Linux环境下C语言实现贪吃蛇游戏
- linux环境下C语言实现贪吃蛇游戏
- Ubuntu下C语言实现贪吃蛇游戏
- C 语言 win32 游戏编程 - 贪吃蛇
- android 贪吃蛇简易实现
- JSONP跨域原理
- 来段代码提提神-Java实现SocketServer和client链接
- 上面固定,左侧固定,右侧内容可滚动
- CAPM模型和Alpha策略
- SQL Server 用链接服务器 同步MySQL
- windows下c/c++编程实现 贪吃蛇简易版
- 内核中的kfifo的例子
- 树——一种数据结构(一)
- 【慕课笔记】2-5 数据类型与操作数据表—数据类型之字符型
- 图片自适应imageView属性
- 头部和底部固定,中间内容可滚动
- 树节点类型定义
- c++:改造cmdline用于MSVC下的命令行参数解析
- android接入原生第三方登录(微信登录、QQ登录、新浪微博登录)