C++贪吃蛇编程代码

提问:C++贪吃蛇编程代码

网友回答:

这个可参考的网上很多的,我收藏的一个参考:

#include
#include
#include
#include
using namespace std;
// 刷新当前屏幕
inline void Refresh(char q[][22], int grade, int gamespeed){
   system("cls");     //  清屏
int i,j;
cout << endl;
for(i=0;i<22;i++){
    cout << "t";
 for(j=0;j<22;j++)
  cout<        if(i==0) cout << "t等级为:" << grade;
       if(i==4) cout << "t自动前进时间";
       if(i==6) cout << "t间隔为:" << gamespeed << "ms";
 cout< }
}

int main(){
   char tcsQipan[22][22];     //  贪吃蛇棋盘是一个二维数组(如22*22,包括墙壁)
   int i,j;
   for(i=1;i<=20;i++)
       for(j=1;j<=20;j++)
           tcsQipan[i][j]=' ';     //     初始化贪吃蛇棋盘中间空白部分
   for(i=0;i<=21;i++)
       tcsQipan[0][i] = tcsQipan[21][i] = '-';      //初始化贪吃蛇棋盘上下墙壁
   for(i=1;i<=20;i++)
       tcsQipan[i][0] = tcsQipan[i][21] = '|';      //初始化贪吃蛇棋盘左右墙壁

   int tcsZuobiao[2][100];     //蛇的坐标数组
   for(i=0; i<4; i++){
       tcsZuobiao[0][i] = 1;
       tcsZuobiao[1][i] = i + 1;
   }
   int head = 3,tail = 0;

   for(i=1;i<=3;i++)
       tcsQipan[1][i]='*';    //蛇身
   tcsQipan[1][4]='#';       //蛇头

   int x1, y1;           // 随机出米
   srand(time(0));
   do{
 x1=rand()%20+1;
 y1=rand()%20+1;
}while(tcsQipan[x1][y1]!=' ');
tcsQipan[x1][y1]='*';

cout<<"nntt贪吃蛇游戏即将开始 !"< long start;

   int grade = 1, length = 4;
   int gamespeed = 500;  //前进时间间隔
for(i=3;i>=0;i--){
 start=clock();
 while(clock()-start<=1000);
 system("cls");
 if(i>0)
  cout << "nntt进入倒计时:" << i << endl;
 else
  Refresh(tcsQipan,grade,gamespeed);
}

   int timeover;
   char direction = 77;  // 初始情况下,向右运动
   int x,y;
   while(1){
       timeover = 1;
       start = clock();
       while((timeover=(clock()-start<=gamespeed))&&!kbhit());
            //如果有键按下或时间超过自动前进时间间隔则终止循环
       if(timeover){
           getch();direction = getch();
       }
       switch(direction){
       case 72: x= tcsZuobiao[0][head]-1; y= tcsZuobiao[1][head];break;     // 向上
       case 80: x= tcsZuobiao[0][head]+1; y= tcsZuobiao[1][head];break;      // 向下
       case 75: x= tcsZuobiao[0][head]; y= tcsZuobiao[1][head]-1;break;      // 向左
       case 77: x= tcsZuobiao[0][head]; y= tcsZuobiao[1][head]+1;           // 向右
       }
       if(!(direction==72||direction==80||direction==75 ||direction==77)){   //  按键非方向键
           cout << "tGame over!" << endl;return 0;
       }
       if(x==0 || x==21 ||y==0 || y==21){   // 碰到墙壁
           cout << "tGame over!" << endl;return 0;
       }
       if(tcsQipan[x][y]!=' '&&!(x==x1&&y==y1)){ //   蛇头碰到蛇身
           cout << "tGame over!" << endl;return 0;
       }

       if(x==x1 && y==y1){      //  吃米,长度加1
           length ++;
           if(length>=8){
               length -= 8;
               grade ++;
               if(gamespeed>=200)
                   gamespeed = 550 - grade * 50; // 改变自动前进时间间隔
           }
           tcsQipan[x][y]= '#';
           tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1][head]] = '*';
           head = (head+1)%100;
           tcsZuobiao[0][head] = x;
           tcsZuobiao[1][head] = y;
           do
           {
               x1=rand()%20+1;
               y1=rand()%20+1;
           }while(tcsQipan[x1][y1]!=' ');
           tcsQipan[x1][y1]='*';
           Refresh(tcsQipan,grade,gamespeed);
       }
       else{       //  不吃米
           tcsQipan [tcsZuobiao[0][tail]][tcsZuobiao[1][tail]]=' ';
           tail=(tail+1)%100;
           tcsQipan [tcsZuobiao[0][head]][tcsZuobiao[1][head]]='*';
           head=(head+1)%100;
           tcsZuobiao[0][head]=x;
           tcsZuobiao[1][head]=y;
           tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1][head]]='#';
           Refresh(tcsQipan,grade,gamespeed);
       }
   }
   return 0;
}


相关推荐

学不会C++怎么办

学不会C++怎么办

c++除法运算

C++中如何用for语句给多个相似的变量赋值?

c++除法运算有余数和没余数

c++除法运算有余数和没余数

c++中'a'-'A'

c++中'a'-'A'

c++怎么设定一个能检查我逻辑错误的程序

c++怎么设定一个能检查我逻辑错误的程序

C++中声明一个float类型的变量,不加后辍会被转换成double类型吗

C++中声明一个float类型的变量,不加后辍会被转换成double类型吗

C++题目,快来回答,急

C++题目,快来回答,急

C++里输出10000里9的倍数

C++里输出10000里9的倍数

C++程序题目,急需答案

C++程序题目,急需答案

c++输出: 2/1,3/1,5/2,8/3,13/5,21/8,

c++输出: 2/1,3/1,5/2,8/3,13/5,21/8,

c++ switch(a)中需要把a定义成string型

c++ switch(a)中需要把a定义成string型

c++子序列的和,结果数据溢出

c++子序列的和,结果数据溢出

c++文件操作

c++文件操作

c++输入文件apple.in包括两行数据什么意思

c++输入文件apple.in包括两行数据什么意思

盒子游戏,游戏玩家专属个性阅读社区


©CopyRight 2010- 2020 BOXUU.COM Inc All Rights Reserved

鄂公网安备 35020302000061号- 鄂ICP备2020015574号-1