vc++6.0貪喫蛇

vc++6.0貪喫蛇

 圖片

#include<stdio.h>

#include<stdlib.h>
#include<time.h>
#include<conio.h>
#include<dos.h>
#include<math.h>
//
int m=0;
//int flag=0;
char ch = 's', di;
int score = 0;  //分數
long gamespeed =100 ;//遊戲速度
int a[400][400];//蛇身長度
struct Food    //食物
{
    int X;     //食物座標
    int Y;
    int yes;   //判斷食物是否被幹掉
}food;
struct Snake   //定義蛇的結構體
{
    int fx[205];//蛇身子數組儲存各節所在的座標
    int fy[205];
    int node;  //蛇的節數
    int life;  //設置蛇的死活
}snake;
//
int map();
void gamePlay();
//
int map()
{
 system("cls");
 int i,j,k=0;

 for(i=0;i<20;i++)
 { 
  printf("/t/t");
  for(j=0;j<20;j++)
  {
   int flag = 0;
   //flag
   
  
   
    for(int z=0;z<snake.node;z++)
    {
     if(i==snake.fx[z]&&j==snake.fy[z])
     {
      if(z==0)
       printf("¤");
      else
       printf("Θ");
      flag = 1;
      break;
     }
    } 
   
  
   if (flag == 1)
   {
    continue;
   }
   if(i==0)
   {
    printf("劉");
   }
   else if(i==19)
   {
    printf("澎");
   }
   else if(i!=0&&i!=19&&j==0)
    printf("鑄");
   else if(i!=0&&i!=19&&j==19)
    printf("鑄");//▕
   else if(i==food.X&&j==food.Y&&food.yes==0)
    printf("★");
   else
    printf("  ");
  }
  printf("/n");
 }
 _sleep(gamespeed);
 printf("/t/t/t/t/t/t/t得分:%d/n",score);
 return 0;
}
void gamePlay()

 int n;
 food.yes = 1;
 snake.life = 0; //蛇是活着的
    snake.fx[0] = 10;//前三節蛇的座標
    snake.fy[0] = 10;
    snake.fx[1] = 11;
    snake.fy[1] = 10;
    snake.fx[2] = 12;
    snake.fy[2] = 10;
 snake.node = 3;
 srand((int)time(NULL));;
  
 while(1)
 { 
   if(food.yes==1)//食物出現隨機出現位置
   {  
    m=0;
    while (m==0)
    {
     food.X=rand()%(18-1+1)+1; 
     food.Y=rand()%(18-1+1)+1;
     for(int f=0;f<snake.node;f++)//判斷食物是否出現在蛇身,有則返回從先產生隨機
     {
      if(food.X==snake.fx[f]&&food.Y==snake.fy[f])
      {
       m=0;
       break;
      }
      else
      {
       m=1;
      }
     }
    }
    food.yes = 0;
   }
   di = ch;
   if(kbhit())//控制 接受
   ch = getch();//接受 方向鍵 
   if(di =='w' && ch == 's' )
    ch = 'w';
   else if(di == 'a'&&ch == 'd')
    ch = 'a';
   else if(di == 'd'&&ch == 'a')
    ch = 'd';
   else if(di == 's'&&ch == 'w')
    ch = 's';
   else if(di =='W' && ch == 'S' )
    ch = 'W';
   else if(di == 'A'&&ch == 'D')
    ch = 'A';
   else if(di == 'D'&&ch == 'A')
    ch = 'D';
   else if(di == 'S'&&ch == 'W')
    ch = 'S';
   else if(di == 's'&&ch == 'S')
    ch = 's';     //以上是控制蛇不能走相反的方向
   
   if(ch=='w'||ch=='W')
   {
    snake.fx[0] = (snake.fx[0]-1);
   }
   if(ch=='s'||ch == 'S')
   {
    snake.fx[0] = (snake.fx[0]+1);
   }
   if(ch=='a'||ch == 'A')
   {
    snake.fy[0] = (snake.fy[0]-1);

   }
   if(ch=='d'||ch == 'D')
   {
    snake.fy[0] = (snake.fy[0]+1);
   }          //蛇轉彎的控制
   if(snake.fx[0]==0||snake.fx[0]==19||snake.fy[0]==0||snake.fy[0]==19)//是否撞牆
   {
    snake.life=1; //蛇死
    
   }
         for(int i=3;i<snake.node;i++)//判斷蛇是否撞到自己
   {
    if(snake.fx[i]==snake.fx[0]&&snake.fy[i]==snake.fy[0])
    {
     snake.life=1;
     break;
    }
    }
   if(snake.fx[0]==food.X && snake.fy[0]==food.Y)
   {
    snake.node++;  //蛇增加一節                      
    food.yes=1;  //食物沒有了
    score+=5;//分數增加
    if(gamespeed>=0)
    {
     gamespeed-=2;//速度提高兩個單位
    }
   }
   if(snake.life==1)
   {
    printf("/n/t/t/t/t遊戲結束!!!/n/t/t/t/t 得分爲%d/n",score);
    break;
   }
   map();
   for(n=snake.node;n>0;n--) //控制蛇身總體前進一步
   {
    snake.fx[n]=snake.fx[n-1];
    snake.fy[n]=snake.fy[n-1];
   }
 }
}
int main()
{
 system("title 貪喫蛇 Powered by 劉鑄澎");//標題
 system("color fd");//顏色 紅
 food.yes = 0;
 gamePlay();
 return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章