如何用C语言写贪吃蛇

#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#include<window... #include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <windows.h>
#include <time.h>
#include <math.h>

#define H 25
#define W 40
void map();
int move(struct snake * p);
void key(char key, int * direction);

struct snake//蛇的结构体
{
int * x, * y;
int joint;//蛇的长度
int direction;//蛇的方向
int life;
}play;

void gotoxy(int x, int y)
{
COORD c;
c.X = 2 * x, c.Y = y; //本游戏只使用双字节符号
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
}

void main()
{

int i,j;
struct snake * p;
p=(struct snake *)malloc(sizeof(struct snake));
p->x=(int *)malloc(sizeof(int));
p->y=(int *)malloc(sizeof(int));

p->x[0] = 15;
p->y[0] = 12;

p->x[1] = 15;
p->y[1] = 13;

p->x[2] = 15;
p->y[2] = 14;

p->x[3] = 15;
p->y[3] = 15;
p->direction=1;
p->joint=4;
printf("%d %d %d %d ",p->x[0],p->y[0],p->direction);
char ch;
while(1)
{
if(kbhit())
{
ch = getch();
key(ch,&p->direction);
p->joint++;//在这里我想测试下蛇的长度是否会增加
}
move(p);
Sleep(200);

}
getch();
}

void key(char key, int * direction)
{
if(key == 'w'&& (*direction)!=2)
(*direction)=1;
else if(key == 's'&& (*direction)!=1)
(*direction)=2;
else if(key == 'a'&& (*direction)!=4)
(*direction)=3;
else if(key == 'd'&& (*direction)!=3)
(*direction)=4;
}

int move(struct snake * p)
{
int i;
int food = 0;
if(p->direction == 1)
p->y[0]=p->y[0]-1;
else if(p->direction == 2)
p->y[0]=p->y[0]+1;
else if(p->direction == 3)
p->x[0]=p->x[0]-1;
else if(p->direction == 4)
p->x[0]=p->x[0]+1;

p->x[p->joint] = p->x[p->joint-1];
p->y[p->joint] = p->y[p->joint-1];
gotoxy(p->x[p->joint],p->y[p->joint]);
printf(" ");
for(i = (p->joint-1);i > 0;--i)
{
p->x[i] = p->x[i-1];
p->y[i] = p->y[i-1];
}
gotoxy(p->x[i],p->y[i]);
printf("■");
return 0;
}

我定义了蛇的长度是4,但是显示出来的蛇长度只有3、这个问题要怎么解决、
对于迟到食物蛇的长度就增加、这个要怎么实现、我原本只是通过改变长度来解决,但是在运行的时候蛇刚开始的时候可以正常增加长度,但是到达一定长度就会出现问题
不要一来就复制一堆代码让我看、我要的是帮我找出这个程序的错误并修正
展开
 我来答
彦红表弟
2013-09-16
知道答主
回答量:27
采纳率:0%
帮助的人:3.5万
展开全部
百度。。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaobomo
2013-09-13 · TA获得超过523个赞
知道小有建树答主
回答量:533
采纳率:100%
帮助的人:363万
展开全部
mark一下呢,回去看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式