C语言贪吃蛇源程序代码双人对抗
C语言贪吃蛇源程序代码双人对抗
#include
#include
#include
#include
#include
#include
#include
#define LEFT 100
#define TOP 30
#define RIGHT 538
#define BOTTOM 468
#define SIZE 20
#define SL 100 /*SL表示产生食物的个数*/
typedef struct Snake/*表示蛇的结点*/
{
int bx,by;
struct Snake *next;
}Snake,*SnakeList;
SnakeList createsnake(int cx,int cy)/*创建一个蛇头。*/
{
SnakeList l;
l=(SnakeList)malloc(sizeof(Snake));
l->next=NULL;
l->bx=cx;
l->by=cy;
return l;
}
void paintsnake(SnakeList l,int scoler,int tcoler)/*输出蛇身的函数,也可作为消去蛇身的函数。*/
{
SnakeList p;
int x,y;
p=l;
setfillstyle(SOLID_FILL,scoler);
for(;p->next;)
{
p=p->next;
x=p->bx;
y=p->by;
bar(x,y,x+SIZE,y+SIZE);
}
if(scoler==2)
setfillstyle(SOLID_FILL,scoler);
else
setfillstyle(SOLID_FILL,tcoler);
x=l->bx;
y=l->by;
bar(x,y,x+SIZE,y+SIZE);
}
void changsnake(SnakeList l,int fx,int fy,int s) /*fx,fy表示蛇头移动方向,分别取值为1,-1;s表示是否吃到食物,1表示吃到,0表示没有。*/
{
SnakeList p=l;
int x,y,t;
x=p->bx;
y=p->by;
p->bx=x+fx*(SIZE+2);
p->by=y+fy*(SIZE+2);
for(;p->next;)
{
p=p->next;
t=p->bx;
p->bx=x;
x=t;
t=p->by;
p->by=y;
y=t;
}
if(s)
{
p->next=(SnakeList)malloc(sizeof(Snake));
p->next->bx=x;
p->next->by=y;
p->next->next=NULL;
}
}
void setfood(int *fx,int *fy,SnakeList al,SnakeList bl)/*设置随机食物*/
{
int a,b,s=1,s2;
SnakeList slist1;
SnakeList slist2;
setfillstyle(SOLID_FILL,6);
srand(time(NULL));
for(;s;)
{