失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C++小游戏 双人贪吃蛇

C++小游戏 双人贪吃蛇

时间:2024-05-03 04:51:10

相关推荐

C++小游戏 双人贪吃蛇

C++小游戏 双人贪吃蛇

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

要使用easyX

我这里用得是VS版

具体内容如下:

#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++小游戏 双人贪吃蛇》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。