C语言多人对战贪吃蛇,双人对战贪吃蛇
双人对战贪吃蛇
#include
#include
#include
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define A 0x1e61
#define D 0x2064
#define S 0x1f73
#define W 0x1177
#define ESC 283
#define N 100
long movespeed[5]={40000,20000,10000,8000,5000};/*蛇移动的速度*/
struct snake
{
int x[N];
int y[N];
int knot;/*节数*/
int direction;/*移动方向*/
int live;/* 0活着,1死亡*/
}snake[2];
int food_x,food_y,food_sigh;
int i,max,key,play1score=0,play2score=0,count;
void draw(void) /*左上(47,40),右下(621,361)方框*/
{
setfillstyle(1,9);
bar(47,40,621,49);
bar(47,40,58,370);
bar(47,361,621,370);
bar(611,40,621,370);
setfillstyle(1,10);
bar(0,0,47,479);
bar(0,479,640,370);
bar(621,479,640,0);
bar(0,0,640,40);
}
void Count(void)/*级数,如果级数越高移动越快*/
{
char str[10];
setfillstyle(1,5);
bar(450,15,611,35);
setcolor(GREEN);
settextstyle(0,0,2);
sprintf(str,"count:%d",count);
outtextxy(451,20,str);
}
void printfscore(void)/*输出分数,每吃一个就加十*/
{
char str1[10];
char str2[10];
setfillstyle(9,12);
bar(250,15,400,35);
setcolor(GREEN);
settextstyle(0,0,2);
sprintf(str1,"play2:%d",play2score);/*play2的分数*/
outtextxy(250,20,str1);
setfillstyle(1,5);
bar(45,15,195,35);
setcolor(GREEN);
sprintf(str2,"play1:%d",play1score);/*play1的分数*/
outtextxy(45,20,str2);
}
void maker(void) /*作者*/
{
char str1[30]={"MAKER:"};
char str2[50]={"WJYang GuiLin!"};
char str3[30]={"Snake GAME"};
setcolor(RED);
settextstyle(0,0,2);
outtextxy(47,420,str1);
settextstyle(0,0,1);
outtextxy(150,428,str2);
settextstyle(0,0,2);
outtextxy(400,420,str3);
}
void gameover(void) /*结束函数*/
{
cleardevice();
Count();
maker();
printfscore();
setcolor(RED);
settextstyle(0,0,5);
outtextxy(150,200,"GAME OVER");
moveto(150,300);
outtextxy(150,300,"^_^^_^^_^");
settextstyle(0,0,5);
}
void gamestard(void)
{
randomize();
food_sigh=1;/*1需要出现,0已经存在*/
{/*蛇1初始*/
snake[0].live=0;/*显示*/
snake[0].direction=1;/*右*/
snake[0].x[0]=70;/*头*/
snake[0].y[0]=70;
snake[0].x[1]=80;
snake[0].y[1]=70;
snake[0].knot=3;/*节数*/
}
{/*蛇2初始*/
snake[1].live=0;/*显示*/
snake[1].direction=1;/*右*/
snake[1].x[0]=70;/*头*/
snake[1].y[0]=100;
snake[1].x[1]=80;
snake[1].y[1]=100;
snake[1].knot=3;/*节数*/
}
Count();
maker();
printfscore();
while(1)/*没按键就一直循环*/
{
while(!kbhit())
{
if(food_sigh==1)/*需要出现新食物*/
{
food_x=rand()%533+62;
food_y=rand()%294+53;/*出现的位置*/
for(i=0;(i=food_x%10)!=0;i++)/*出现必须在整数的格内,那样蛇才能吃上*/
food_x++;
for(i=0;(i=food_y%10)!=0;i++)
food_y++;
food_sigh=0;
}
if(food_sigh==0)/*画出食物*/
{
setfillstyle(1,4);
bar(food_x,food_y,food_x+10,food_y-10);
}
for(i=snake[0].knot-1;i>0;i--)/*蛇1的每个环节往前移动*/
{
snake[0].x[i]=snake[0].x[i-1];
snake[0].y[i]=snake[0].y[i-1];
}
for(i=snake[1].knot-1;i>0;i--)/*蛇2的每个环节往前移动*/
{
snake[1].x[i]=snake[1].x[i-1];
snake[1].y[i]=snake[1].y[i-1];
}
switch(snake[0].direction)/*蛇1的方向*/
{
case 1: snake[0].x[0]+=10;break;
case 2: snake[0].x[0]-=10;break;
case 3: snake[0].y[0]-=10;break;
case 4: snake[0].y[0]+=10;break;
}
switch(snake[1].direction)/*蛇2的方向*/
{
case 1: snake[1].x[0]+=10;break;
case 2: snake[1].x[0]-=10;break;
case 3: snake[1].y[0]-=10;break;
case 4: snake[1].y[0]+=10;break;
}
for(i=0;isnake[0].knot?snake[1].knot:snake[0].knot);i++)/*它们相撞就死*/
{
if((snake[0].x[0]==snake[1].x[i]&&snake[1].y[i]==snake[0].y[0])||(snake[0].x[i]==snake[1].x[0]&&snake[0].y[i]==snake[1].y[0]))
{
gameover();
snake[0].live=1;
snake[1].live=1;
break;
}
}
for(i=3;i
{
if(snake[0].x[i]==snake[0].x[0]&&snake[0].y[i]==snake[0].y[0])
{
gameover();
snake[0].live=1;
break;
}
}
for(i=3;i
{
if(snake[1].x[i]==snake[1].x[0]&&snake[1].y[i]==snake[1].y[0])
{
gameover();
snake[1].live=1;
break;
}
}
if(snake[0].x[0]<58||snake[0].x[0]>605||snake[0].y[0]<55||snake[0].y[0]>360)/*撞到墙壁*/
{
gameover();
snake[0].live=1;
}
if(snake[1].x[0]<58||snake[1].x[0]>605||snake[1].y[0]<55||snake[1].y[0]>360)/*撞到墙壁*/
{
gameover();
snake[1].live=1;
}
if(snake[0].live==1)
break;
if(snake[1].live==1)
break;
if(snake[0].x[0]==food_x&&snake[0].y[0]==food_y)/*吃到东西*/
{
setfillstyle(1,11);
bar(food_x,food_y,food_x+10,food_y-10);
snake[0].knot++;
food_sigh=1;/*需要出现新的食物*/
play1score+=10;
printfscore();
}
if(snake[1].x[0]==food_x&&snake[1].y[0]==food_y)/*吃到东西*/
{
setfillstyle(1,11);
bar(food_x,food_y,food_x+10,food_y-10);
snake[1].knot++;
food_sigh=1;/*需要出现新的食物*/
play2score+=10;
printfscore();
}
setfillstyle(1,8); /*画蛇1*/
bar(snake[0].x[0]-1,snake[0].y[0]+1,snake[0].x[0]+11,snake[0].y[0]-11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);
setcolor(8);
for(i=1;i
rectangle(snake[0].x[i],snake[0].y[i],snake[0].x[i]+10,snake[0].y[i]-10);
setfillstyle(9,4);/*画蛇2*/
bar(snake[1].x[0],snake[1].y[0],snake[1].x[0]+10,snake[1].y[0]-10);
setfillstyle(11,4);
for(i=1;i
bar(snake[1].x[i],snake[1].y[i],snake[1].x[i]+10,snake[1].y[i]-10);
if(snake[0].knot<=7)/*级数1*/
{
delay(movespeed[0]);
count=1;
}
if(snake[0].knot>7&&snake[0].knot<=11)/*级数2*/
{
delay(movespeed[1]);
count=2;
}
if(snake[0].knot>11&&snake[0].knot<=15)/*级数3*/
{
delay(movespeed[2]);
count=3;
}
if(snake[0].knot>15&&snake[0].knot<=20)/*级数4*/
{
delay(movespeed[3]);
count=4;
}
if(snake[0].knot>20&&snake[0].knot<=N)/*级数5*/
{
delay(movespeed[4]);
count=5;
}
Count();
if(snake[0].knot==8)/*当节数为8时,显示"GOOD!!"*/
{ setcolor(GREEN);
settextstyle(0,0,5);
outtextxy(230,150,"GOOD!!");
}
if(snake[0].knot==9)/*当节数为9时,除去"GOOD!!"*/
{ setcolor(LIGHTCYAN);
settextstyle(0,0,5);
outtextxy(230,150,"GOOD!!");
}
if(snake[0].knot==12)/*当节数为12时,显示"GREAD!!"*/
{ setcolor(MAGENTA);
settextstyle(0,0,5);
outtextxy(230,150,"GREAT!!");
}
if(snake[0].knot==13)/*当节数为12时,除去"GREAD!!"*/
{ setcolor(LIGHTCYAN);
settextstyle(0,0,5);
outtextxy(230,150,"GREAT!!");
}
setfillstyle(8,11);/*用背景色涂去蛇2最后一节*/
bar(snake[1].x[snake[1].knot-1],snake[1].y[snake[1].knot-1],snake[1].x[snake[1].knot-1]+10,snake[1].y[snake[1].knot-1]-10);
setfillstyle(1,11);
bar(snake[0].x[0]-1,snake[0].y[0]+1,snake[0].x[0]+11,snake[0].y[0]-11);
setcolor(11);/*用背景色涂去蛇1最后一节*/
rectangle(snake[0].x[snake[0].knot-1],snake[0].y[snake[0].knot-1],snake[0].x[snake[0].knot-1]+10,snake[0].y[snake[0].knot-1]-10);
}
/*蛇1的方向判断*/
if(snake[0].live==1)/*死了就结束*/
break;
key=bioskey(0);/*按键的控制*/
{
if(key==ESC)/*退出*/
break;
else if(key==LEFT&&snake[0].direction!=1)/*判断方向*/
snake[0].direction=2;
else if(key==DOWN&&snake[0].direction!=3)
snake[0].direction=4;
else if(key==UP&&snake[0].direction!=4)
snake[0].direction=3;
else if(key==RIGHT&&snake[0].direction!=2)
snake[0].direction=1;
}
/*蛇2的方向判断*/
if(snake[1].live==1)
break;
{
if(key==A&&snake[1].direction!=1)/*判断方向*/
snake[1].direction=2;
else if(key==S&&snake[1].direction!=3)
snake[1].direction=4;
else if(key==W&&snake[1].direction!=4)
snake[1].direction=3;
else if(key==D&&snake[1].direction!=2)
snake[1].direction=1;
}
}
}
void main(void)/*主函数*/
{
void maker(void);
void Count(void);
void draw(void);
void gameover(void);
void gamestard(void);
void printfscore(void);
int gdrive=DETECT,gmode;
initgraph(&gdrive,&gmode,"");
cleardevice();
setbkcolor(LIGHTCYAN);
draw();
gamestard();
maker();
getch();
closegraph();
}
C语言多人对战贪吃蛇,双人对战贪吃蛇相关推荐
- c语言联机游戏,C/C++ 游戏 贪吃蛇双人对战版
贪吃蛇双人对战版--C语言 最近写的,用于交最后一次结构化程序设计课的作业,闲暇之余传到网上,仅供参考,新手上路,请多指教. 话不多说,先附上下载链接.http://download.csdn.net ...
- 用javascript+jquery编写的小游戏-贪吃蛇(双人对战版)
前言 这是我在多年前初学jquery, 并结合javascript, 编写的一个小游戏.那洋洋洒洒几千行的js代码时刻提醒着我"不忘初心!". 效果演示 代码 引入文件 由于用到了 ...
- C语言实现简易三子棋,支持双人对战,电脑可拦截
在学习二维数组后我们加以应用能写出三子棋这样一个小游戏.具体实现并不复杂. 基本思路: 游戏首先打印菜单,由我们选择单人游戏,双人游戏或退出游戏. 三子棋需要一个棋盘,我们可以通过循环打印来构造一个简 ...
- Qt、C++实现五子棋人机对战与本地双人对战
1.基本介绍 软件基于Qt5.6.1,利用C++语言进行编写. 五子棋有两种游戏模式:人机对战和双人对战. 在进入游戏时玩家选择游戏模式. 选择人机对战玩家会执黑棋.电脑执白棋进行对决.选择双人对战会 ...
- c语言五子棋双人对战,tc 版双人对战的五子棋
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 map[i][j]=0; cleardevice(); setbkcolor(13); setcolor(1); setfillstyle(1,2); s ...
- C语言贪吃蛇游戏代码,贪吃蛇C语言代码实现大全
一.C语言贪吃蛇代码实现前言 设计贪吃蛇游戏的主要目的是让大家夯实C语言基础,训练编程思维,培养解决问题的思路,领略多姿多彩的C语言. 贪吃蛇是非常经典的一款游戏,本次我们模拟在控制台实现贪吃蛇游戏, ...
- C语言小项目:基于ncurses库和链表的贪吃蛇小游戏
目录 一.项目准备 二.项目步骤 (1)选择ncurses库的原因 (2)ncurses库的基本入门 (3)贪吃蛇地图的整体规划 (4)实现贪吃蛇第一个节点的显示 (5)显示贪吃蛇的完整身子 (6)实 ...
- 诺基亚3d贪吃蛇java版_3D贪吃蛇诺基亚六边形
3D贪吃蛇诺基亚六边形是一款十分经典的贪吃蛇游戏.3D贪吃蛇诺基亚六边形是曾经的手机巨头诺基亚在自己的产品上内置的一款贪吃蛇游戏,这款贪吃蛇从2D空间进化到了3D空间,玩家将在一个立体的六边形内操控贪 ...
- python制作贪吃蛇游戏下载_自动玩贪吃蛇,满屏的蛇影当然由python制作AI贪吃蛇!...
image 前提:本文实现AI贪吃蛇自行对战,加上人机对战,文章末尾附上源代码以及各位大佬的链接,还有一些实现步骤,读者可再次基础上自行添加电脑VS电脑和玩家VS玩家(其实把人机对战写完,这2个都没什 ...
- 贪吃蛇大作战html5,贪吃蛇大作战5.0.1
贪吃蛇大作战5.0.1版本是一款用心制作的休闲多人竞技手游,贪吃蛇大作战5.0.1版本游戏吃掉无数对手和食物,各种混乱任务奖励,精致的皮肤效果最为华丽,解锁新地图场景.新颖有趣的通关方式实现了您的所有 ...
最新文章
- C++迟后联编和虚函数表
- android 单选、多选弹出菜单
- 在C++中for、if...内定义的变量在其之外就失效了~
- 使用opencv作物件识别(一) —— 积分直方图加速HOG特征计算
- 平均月薪超过1万的北京人是这样上班的|大数据解读(视频)
- MAT分析android内存泄漏
- jenkins构建后脚本不执行_接口管理工具ApiPost-预(后)执行脚本常用方法集合
- 关于spark structed stream 流中的触发trigger间隔的理解
- 回溯法 —— 求解子集和问题
- python之format函数学习
- 【数据结构】图文详解Treap平衡树
- 软硬件交互 - 扫码枪
- PB 各种小技巧(二)
- [读书笔记]高效15法则 谷歌、苹果都在用的深度工作法
- 人员属性识别 PETA数据集下载
- CardView的具体使用方法
- python打印古诗_python打印古诗_python教程:利用python基础知识取出对应诗句
- ajax header请求,如何在用户登陆之后给每个页面往后台的ajax请求header都带上
- 使用fiddler代替charles将react中的axios请求重定向到本地文件,兼容谷歌浏览器chrome
- QQ日志最多添加几条HTML,在微信图文添加超过3个视频的方法,最多可加53个视频...
热门文章
- Nginx代理百度地图,实现内网访问百度地图
- Alex(ALEXANDER的简写,.亚历山大)
- GAN的后门攻击:The Devil is in the GAN: Defending Deep Generative Models Against Backdoor Attacks
- android nexus 10 刷机,谷歌Nexus 10 recovery卡刷rom 刷机教程
- idea创建的maven web工程如何修改web版本
- Python自动化办公 | 用Python自动生成数据日报
- Java格式化百分比
- 分卷压缩 C#代码实现
- 从布朗运动到Black–Scholes
- 安装protobuf可能遇到的问题