贪吃蛇
来源:互联网 发布:c语言有返回值的函数 编辑:程序博客网 时间:2024/04/26 12:36
上传一个贪吃蛇的代码。
#include<iostream>#include<windows.h>#include<conio.h>#include<ctime>using namespace std; #define N 20int snake1[400][2]; //0 代表x坐标 1代表y坐标 int tail1[2]; //蛇尾 int food[2]; int Dir1 = 0;int score1=0;void gotoxy(int x,int y) {//位置函数 COORD pos; pos.X=2*x; //一个符号两个字符 ,所以横坐标乘2 pos.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}void color(int a) {//颜色函数 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);}void drawfood(int y) {srand((unsigned)time(NULL)); food[0]=rand()%N+1; //对22取余 保证食物在墙壁之内 food[1]=rand()%N+1; gotoxy(food[0],food[1]); color(y); cout<<"●"<<endl;}int main() { int len1=3; int i,j;//初始化围墙 int wall[N+2][N+2]={{0}}; //初始化一个22*22的墙 color(11); for(i=0;i<N+2;i++) { for(j=0;j<N+2;j++) { wall[i][j]=1; if(wall[i][j]) cout<<"■"; //一个符号两个字符 } cout<<endl; } gotoxy(N+2,1); //设置下面的提示语句的位置 cout<<"按w,s,a,d和5,2,1,3控制蛇的方向"<<endl; char ch; snake1[0][0]=1; //初始化蛇的位置 snake1[1][0]=1; snake1[2][0]=1; snake1[1][1]=1; snake1[0][1]=1; snake1[0][2]=1; for(i=0;i<len1;i++) { //第一条蛇的坐标 gotoxy(snake1[i][0],snake1[i][1]); color(20); cout<<"★"<<endl; } drawfood(1); //生成食物 while(1) { // gotoxy(N+2,2); // cout << snake1[len1-1][1] << endl; tail1[0]=snake1[len1-1][0]; //蛇尾的横坐标 tail1[1]=snake1[len1-1][1]; //蛇尾的纵坐标 // cout << tail1[1] << endl; gotoxy(tail1[0],tail1[1]); // color(11); cout<<"■"<<endl; //擦除蛇尾运行图像。 for(i=len1-1;i>0;i--) { snake1[i][0]=snake1[i-1][0]; //每次把蛇头的上一个位置的坐标给蛇头的下下个位置 snake1[i][1]=snake1[i-1][1]; gotoxy(snake1[i][0],snake1[i][1]); //重新构造此时蛇的位置 color(14); cout<<"★"<<endl; } if(kbhit()) { //获取键盘输入的字符 gotoxy(N+3,2); //显示输入字符的位置 ch=getche(); } switch(Dir1) { case 5:snake1[0][1]--;break; //表示向上 case 2:snake1[0][1]++;break; //表示向下 case 1:snake1[0][0]--;break; //表示向左 case 3:snake1[0][0]++;break; //表示向右 } if(Dir1!=5&&ch=='s') //键盘输入s 表示向下 Dir1=2; else if(Dir1!=2&&ch=='w') Dir1=5; else if(Dir1!=1&&ch=='d') Dir1=3; else if(Dir1!=3&&ch=='a') Dir1=1; gotoxy(snake1[0][0],snake1[0][1]); //此时蛇头的位置 color(14); cout<<"★"<<endl; for(int j=0;j<len1;j++) { if(snake1[j][0]==food[0]&&snake1[j][1]==food[1]) { //当蛇头碰见食物时 len1++; //蛇身加长一 score1++; //分数加一 drawfood(len1); //获取新的食物 } } if(snake1[0][0]==0||snake1[0][1]==0||snake1[0][0]==N+1||snake1[0][1]==N+1) //碰墙 则跳出循环 break; gotoxy(N+3,4); //设置 输出"得分"这个字符的位置 color(12); cout<<" 得分"<<endl; //输出 gotoxy(N+5,5); // 设置 得分的 位置 color(11); cout<<score1<<endl; //输出 Sleep(300-score1); //控制蛇的速度 }return 0;}
0 0
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- struts标签之<s:select>
- Android的休眠与唤醒 && 实例
- 最详细AsyncTask视频教学
- 多线程编程之pthread_create函数应用
- 数据结构之堆栈
- 贪吃蛇
- html a 下划线
- 12款免费与开源的NoSQL数据库介绍
- 通俗解释云计算
- 结构体、类的成员变量、成员函数是如何分配内存的?
- 由实例出发看看Ext——《Property Grid》
- HDU4576 Robot
- camera 知识集锦
- 所需即所获:IDE = _plugins_ + vim