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循环,因为懒‘''___'''’

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

C++小游戏 双人贪吃蛇相关推荐

  1. cocos creator开发微信小游戏(五)贪吃蛇大作战

    目录 小游戏介绍 小游戏cocos creator场景图 小游戏部分JS代码 开发中碰到的问题 工程及说明 小游戏介绍 贪吃蛇小游戏:贪吃蛇试玩(首次加载比较慢),类似贪吃蛇大作战的小游戏.当玩家的蛇 ...

  2. 基于RT-Thread实现的小游戏(贪吃蛇、俄罗斯方块)

    前言:本实现基于stm32芯片,移植RT_Thread Nano系统源码,实现两个小游戏(贪吃蛇/俄罗斯方块).本实验提供完整的IAR工程源码并且有很多注释,是一个不错的参考例程.关键知识点:OLED ...

  3. 贪吃蛇html网页小游戏,网页贪吃蛇HTML5小游戏制作

    贪吃蛇是以前我们经常在手机里玩的一个小游戏,现在要是把它搬到网页上也会让人更回味.这是一款非常有趣的HTML5响应式网页贪吃蛇小游戏.在游戏中你可以使用键盘的上下左右来控制蛇的运动方向.现在要列出的是 ...

  4. 超级详细的注释C语言简单实现童年小游戏:贪吃蛇

    引言: 记得小时候还没有现在超级高端的智能手机,当时的诺基亚类型的老人机是我的最爱,而里面的贪吃蛇小游戏我总是能玩很久,所以今天就用C语言简单实现一下贪吃蛇这一个小游戏吧. 一. 准备工作: 1.VS ...

  5. Scratch图形化编程之简单小游戏(贪吃蛇)

    目录 一.前言介绍 二.对象及其背景 三.面向对象的模块程序 3.1 贪吃蛇头 3.2 贪吃蛇身 3.3 Apple 四.成果展示 一.前言介绍 运用Scratch图像编程化编程,制作了一个能够通过按 ...

  6. Python小游戏:贪吃蛇——turtle的使用

    突然想把去年写的小游戏练习整合一下,写一个简单的教学文章吧. 该篇主要讲解利用python中turtle包制作小游戏,不涉及pygame的使用,仅用pycharm就可实现 0.理清游戏思路 要实现的效 ...

  7. C语言 小游戏之贪吃蛇

    还记得非常久曾经听群里人说做贪吃蛇什么的,那时候大一刚学了C语言,认为非常难,根本没什么思路. 前不久群里有些人又在谈论C语言贪吃蛇的事了,看着他们在做,我也打算做一个出来. 如今大三,经过了这一年半 ...

  8. JavaScript+ Canvas开发趣味小游戏《贪吃蛇》

    一.效果展示 二.<贪吃蛇>基本实现思路 蛇头部分+蛇身体部分:采用对象形式来存储坐标,并将每个坐标对象放到一个snake数组中,方便使用.设置每个方格宽度30px,高度30px,画布高度 ...

  9. python写的贪吃蛇小游戏_Python贪吃蛇小游戏

    贪吃蛇 1. 导入游戏库 # 1.导入库 import pgzrun import random 2.游戏初始化 # 2.初始化 # 窗口大小 WIDTH = 600 HEIGHT = 480 # 贪 ...

  10. C#简单小游戏之贪吃蛇

    贪吃蛇的创建 1:声明地图 通过声明一个40x40的地图 把边界都表示为墙  为55 private int[,] Map = new int[40, 40];//地图 我把0作为当前位置为空,可以行 ...

最新文章

  1. CloudCC:为企业业绩而生的CRM系统
  2. 根据id/类名/元素名称查找元素
  3. Java I/O系统学习系列三:I/O流的典型使用方式
  4. 服务器mvc提示404错误信息,解决Spring MVC提示404错误找不到JSP问题
  5. [机器学习] 分类 --- Naive Bayes(朴素贝叶斯)
  6. maven 父maven_Maven不会吮吸。 。 。 但是Maven文件会
  7. 万网m3 windows linux切换,万网主机怎么做首页内页301重定向
  8. Educational Codeforces Round 10 B. z-sort
  9. Docker实现隔离
  10. 数据切分——Mysql分区表的建立及性能分析
  11. 打字机游戏Ⅱ之手速pk
  12. 网络多人聊天室1.0 群聊
  13. Live reload
  14. win10北通手柄没反应_Win10电脑使用游戏手柄提示“无法识别”如何解决
  15. MATLAB的人工神经网络应用
  16. 推荐几本经济金融类的图书
  17. The code contains unhandled characters
  18. Gis到底可以应用在哪些方面?
  19. python环境安装 (win7)
  20. 谷粒商城笔记+踩坑(17)——【认证模块】登录,用户名密码登录+微博社交登录+SpringSession+xxl-sso单点登录

热门文章

  1. excel删除行闪退_xp系统打开excel表格就闪退怎么回事_xp打开excel表格闪退如何解决...
  2. 罗技鼠标G304驱动与讲解(其余类型驱动见文末)
  3. java做航空购票系统_基于JAVA的航空订票系统
  4. Manjaro Gnome 安装TIM
  5. esp32FreeRTOS教程——内核分配
  6. pygame实现王思聪吃热狗小游戏(双人版)
  7. HTTP请求方法及幂等性
  8. RGBA 图片格式转换 RGB 无损
  9. html里的表情,HTML 表情符号
  10. 博图v15编程手册_好消息!全套西门子plc编程软件,案例和说明书下载