#include #include #define SNAKE..._c++写一个可以几个人一起玩的贪吃蛇的代码怎么写">
当前位置:   article > 正文

C++小游戏 双人贪吃蛇_c++写一个可以几个人一起玩的贪吃蛇的代码怎么写

c++写一个可以几个人一起玩的贪吃蛇的代码怎么写

                                           C++小游戏         双人贪吃蛇

一个双人贪吃蛇的C++源代码

要使用easyX

我这里用得是VS2012版

具体内容如下:

#include <stdio.h>
#include "graphics.h"
#include <mmsystem.h>
#include <conio.h>
#include <stdlib.h>
#define SNAKE_NUM 500
#pragma comment(lib,"winmm.lib") 

void Stop();
void Eatfood();
void Huitu();
void snakeMove();
void Cushihua();
void WeiyiPD();
void Key();
void zhuangji();

enum DIR
{
  UP,
  DOWN,
  LEFT,
  RIGHT,
};
struct Snake
{
  
  int size;
  bool life;
  int dir;
  int speed;
  POINT coor[SNAKE_NUM];
}snake1,snake2;

struct FOOD
{
    int x;
    int y;
    bool flag;
    int r;
    DWORD color;
}food1,food2,food3,food4;

int main()
{
initgraph(1000,650);


Cushihua();

while(1)
{
Huitu();
snakeMove();
Key();
Eatfood();
zhuangji();
Sleep(10);
}

  return 0;
}

void Key()

   int i;
   i=0;
   int j;
   j=0;
   if(_kbhit())
{
    switch(_getch())
    {
     case 72:
           if(snake1.dir!=DOWN){
            snake1.dir=UP;}
            break;
     case 80:
           if(snake1.dir!=UP){
            snake1.dir=DOWN;}
            break;
     case 75:
           if(snake1.dir!=RIGHT){
            snake1.dir=LEFT;}
            break;
     case 77:
           if(snake1.dir!=LEFT){
            snake1.dir=RIGHT;}
            break;
     case '.':
             while(1)
             {
                Sleep(3000);i=1;
                if(i=1)return;
             }
     case 'w':
           if(snake2.dir!=DOWN){
            snake2.dir=UP;}
            break;
     case 's':
           if(snake2.dir!=UP){
            snake2.dir=DOWN;}
            break;
     case 'a':
           if(snake2.dir!=RIGHT){
            snake2.dir=LEFT;}
            break;
     case 'd':
           if(snake2.dir!=LEFT){
            snake2.dir=RIGHT;}
            break;
     case 'h':
             while(1)
             {
                Sleep(3000);j=1;
                if(j=1)return;
             }
         
     }
}
}
void Huitu()
{
   
   BeginBatchDraw();
   setbkcolor(RGB(28,115,119));
   cleardevice();
if(snake1.life)
{
   for(int i=0;i<snake1.size;i++)
   {
   solidcircle(snake1.coor[i].x,snake1.coor[i].y,5);
   }
}
if(snake2.life)
{
   for(int j=0;j<snake2.size;j++)
   {
   solidcircle(snake2.coor[j].x,snake2.coor[j].y,5);
   }
}
   if(food1.flag)
   {
     solidcircle(food1.x,food1.y,food1.r);
   }
   if(food2.flag)
   {
     solidcircle(food2.x,food2.y,food2.r);
   }
   if(food3.flag)
   {
     solidcircle(food3.x,food3.y,food3.r);
   }
   if(food4.flag)
   {
     solidcircle(food4.x,food4.y,food4.r);
   }
   EndBatchDraw();
}

void snakeMove()
{
if(snake1.life)
{
   for(int i=snake1.size-1;i>0;i--)
   {
       snake1.coor[i]=snake1.coor[i-1];
    }
   switch (snake1.dir)
   {
      case UP:
      snake1.coor[0].y-=snake1.speed;
      if( snake1.coor[0].y+10<=0)
      {
        snake1.coor[0].y=650;
       }
      break;
      case DOWN:
      snake1.coor[0].y+=snake1.speed;
       if( snake1.coor[0].y-10>=650)
      {
        snake1.coor[0].y=0;
       }
      break;
      case LEFT:
      snake1.coor[0].x-=snake1.speed;
      if( snake1.coor[0].x+10<=0)
      {
        snake1.coor[0].x=1000;
       }
      break;
      case RIGHT:
      snake1.coor[0].x+=snake1.speed;
      if( snake1.coor[0].x-10>=1000)
      {
        snake1.coor[0].x=0;
       }
      break;
   }
}
if(snake2.life)
{
   for(int j=snake2.size-1;j>0;j--)
   {
       snake2.coor[j]=snake2.coor[j-1];
    }
   switch (snake2.dir)
   {
      case UP:
      snake2.coor[0].y-=snake2.speed;
      if( snake2.coor[0].y+10<=0)
      {
        snake2.coor[0].y=650;
       }
      break;
      case DOWN:
      snake2.coor[0].y+=snake2.speed;
       if( snake2.coor[0].y-10>=650)
      {
        snake2.coor[0].y=0;
       }
      break;
      case LEFT:
      snake2.coor[0].x-=snake2.speed;
      if( snake2.coor[0].x+10<=0)
      {
        snake2.coor[0].x=1000;
       }
      break;
      case RIGHT:
      snake2.coor[0].x+=snake2.speed;
      if( snake2.coor[0].x-10>=1000)
      {
        snake2.coor[0].x=0;
       }
      break;
   }
}
}


void Cushihua()
{
  mciSendString("open ./音域/yy.mp3 alias BGM",0,0,0);
  mciSendString("play BGM repeat",0,0,0);

//音乐
  snake1.size=33;
  snake1.life=true;
  snake1.dir;
  snake1.speed=1;
  for(int i=0;i<snake1.size;i++)
 {
  snake1.coor[0].x=100-10*i;
  snake1.coor[0].y=10;
  }
  snake2.size=33;
  snake2.life=true;
  snake2.dir;
  snake2.speed=1;
  for(int j=0;j<snake2.size;j++)
 {
  snake2.coor[0].x=500-10*j;
  snake2.coor[0].y=10;
  }
  srand(GetTickCount());
  food1.x=rand()%1000;
  food1.y=rand()%650;
  food1.color=RGB(rand()%256,rand()%256,rand()%256);
  food1.r=rand()%10+5;
  food1.flag=true;
  food2.x=rand()%1000;
  food2.y=rand()%650;
  food2.color=RGB(rand()%256,rand()%256,rand()%256);
  food2.r=rand()%10+5;
  food2.flag=true;
  food3.x=rand()%1000;
  food3.y=rand()%650;
  food3.color=RGB(rand()%256,rand()%256,rand()%256);
  food3.r=rand()%10+5;
  food3.flag=true;
  food4.x=rand()%1000;
  food4.y=rand()%650;
  food4.color=RGB(rand()%256,rand()%256,rand()%256);
  food4.r=rand()%10+5;
  food4.flag=true;
}

void Eatfood()
{
   if(food1.flag&&snake1.coor[0].x>=food1.x-food1.r&&snake1.coor[0].x<=food1.x+food1.r&&
      snake1.coor[0].y>=food1.y-food1.r&&snake1.coor[0].y<=food1.y+food1.r)
   {
     food1.flag=false;
     snake1.size+=11;
   }
   if(!food1.flag)
   {
  food1.x=rand()%1000;
  food1.y=rand()%650;
  food1.color=RGB(rand()%256,rand()%256,rand()%256);
  food1.r=rand()%10+5;
  food1.flag=true;
  }
   if(food2.flag&&snake1.coor[0].x>=food2.x-food2.r&&snake1.coor[0].x<=food2.x+food2.r&&
      snake1.coor[0].y>=food2.y-food2.r&&snake1.coor[0].y<=food2.y+food2.r)
   {
     food2.flag=false;
     snake1.size+=11;
   }
   if(!food2.flag)
   {
  food2.x=rand()%1000;
  food2.y=rand()%650;
  food2.color=RGB(rand()%256,rand()%256,rand()%256);
  food2.r=rand()%10+5;
  food2.flag=true;
  }
   if(food3.flag&&snake1.coor[0].x>=food3.x-food3.r&&snake1.coor[0].x<=food3.x+food3.r&&
      snake1.coor[0].y>=food3.y-food3.r&&snake1.coor[0].y<=food3.y+food3.r)
   {
     food3.flag=false;
     snake1.size+=11;
   }
   if(!food3.flag)
   {
  food3.x=rand()%1000;
  food3.y=rand()%650;
  food3.color=RGB(rand()%256,rand()%256,rand()%256);
  food3.r=rand()%10+5;
  food3.flag=true;
  }
   if(food4.flag&&snake1.coor[0].x>=food4.x-food4.r&&snake1.coor[0].x<=food4.x+food4.r&&
      snake1.coor[0].y>=food4.y-food4.r&&snake1.coor[0].y<=food4.y+food4.r)
   {
     food4.flag=false;
     snake1.size+=11;
   }
   if(!food4.flag)
   {
  food4.x=rand()%1000;
  food4.y=rand()%650;
  food4.color=RGB(rand()%256,rand()%256,rand()%256);
  food4.r=rand()%10+5;
  food4.flag=true;
  }

if(food1.flag&&snake2.coor[0].x>=food1.x-food1.r&&snake2.coor[0].x<=food1.x+food1.r&&
      snake2.coor[0].y>=food1.y-food1.r&&snake2.coor[0].y<=food1.y+food1.r)
   {
     food1.flag=false;
     snake2.size+=11;
   }
   if(!food1.flag)
   {
  food1.x=rand()%1000;
  food1.y=rand()%650;
  food1.color=RGB(rand()%256,rand()%256,rand()%256);
  food1.r=rand()%10+5;
  food1.flag=true;
  }
   if(food2.flag&&snake2.coor[0].x>=food2.x-food2.r&&snake2.coor[0].x<=food2.x+food2.r&&
      snake2.coor[0].y>=food2.y-food2.r&&snake2.coor[0].y<=food2.y+food2.r)
   {
     food2.flag=false;
     snake2.size+=11;
   }
   if(!food2.flag)
   {
  food2.x=rand()%1000;
  food2.y=rand()%650;
  food2.color=RGB(rand()%256,rand()%256,rand()%256);
  food2.r=rand()%10+5;
  food2.flag=true;
  }
   if(food3.flag&&snake2.coor[0].x>=food3.x-food3.r&&snake2.coor[0].x<=food3.x+food3.r&&
      snake2.coor[0].y>=food3.y-food3.r&&snake2.coor[0].y<=food3.y+food3.r)
   {
     food3.flag=false;
     snake2.size+=11;
   }
   if(!food3.flag)
   {
  food3.x=rand()%1000;
  food3.y=rand()%650;
  food3.color=RGB(rand()%256,rand()%256,rand()%256);
  food3.r=rand()%10+5;
  food3.flag=true;
  }
   if(food4.flag&&snake2.coor[0].x>=food4.x-food4.r&&snake2.coor[0].x<=food4.x+food4.r&&
      snake2.coor[0].y>=food4.y-food4.r&&snake2.coor[0].y<=food4.y+food4.r)
   {
     food4.flag=false;
     snake2.size+=11;
   }
   if(!food4.flag)
   {
  food4.x=rand()%1000;
  food4.y=rand()%650;
  food4.color=RGB(rand()%256,rand()%256,rand()%256);
  food4.r=rand()%10+5;
  food4.flag=true;
  }
}


void zhuangji()
{
int i,j;
for(i=0;i<=snake2.size-1;i++)
{
if(snake1.life&&snake1.coor[0].x>=snake2.coor[i].x-5&&snake1.coor[0].x<=snake2.coor[i].x+5&&
      snake1.coor[0].y>=snake2.coor[i].y-5&&snake1.coor[0].y<=snake2.coor[i].y+5)
  snake1.life=false;
}
for(j=0;j<=snake1.size-1;j++)
{
if(snake2.life&&snake2.coor[0].x>=snake1.coor[j].x-5&&snake2.coor[0].x<=snake1.coor[j].x+5&&
      snake2.coor[0].y>=snake1.coor[j].y-5&&snake2.coor[0].y<=snake1.coor[j].y+5)
  snake2.life=false;
}
}

//有些地方没用for循环,因为懒‘''___'''’

//还有许多要优化的地方

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/750235
推荐阅读
相关标签