大神看看,问题出在哪里?
c4droid吧
全部回复
仅看楼主
level 7
☞风一 楼主
大神看看,问题出在哪里?
2017年08月14日 01点08分 1
level 7
插眼
2017年08月14日 03点08分 2
level 7
上代码
2017年08月14日 04点08分 3
上了啊,运行后就结束over了,查了一晚都没搞懂,只有来求助大神了
2017年08月14日 06点08分
回复 ☞风一 :代码,不是图片
2017年08月14日 06点08分
刚学,也是才来这吧没多久,代码怎么上?是存网盘吗?
2017年08月14日 06点08分
回复 ☞风一 :复制粘贴会吗
2017年08月14日 06点08分
level 11
伸手党啊 [鄙视][鄙视][鄙视]
2017年08月14日 04点08分 5
这可是我花了一晚的结果呢,最后还是运行不了,开始就over了,只能求大神了
2017年08月14日 06点08分
level 7
☞风一 楼主
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define H 20
#define W 60
#define N 10
int a,b,i,j,l=0;
int x,y;
int x1,y1;
char *head,*tail,*belly[H*W],*food,*tt; /*头尾身子和食物,tt 是变量*/
char map[H][W]; /* 整个图 */
char left,right,front,back; /*各个方向*/
void start() /*初始化*/
{
for(i=0;i!=H;++i)
{
for(j=0;j!=W;++j)
{
if((i==0)||(i==H-1)||(j==0)||(j==W-1))
map[i][j]='9';
else map[i][j]='0'; /*图边框*/
}
}
x=W/2;
y=H/2;
head=&map[y][x+1];
belly[l]=&map[y][x];
tail=&map[y][x-1];
*head='1'; /*蛇头*/
*belly[l]='2'; /*蛇身*/
*tail='3'; /*蛇尾*/
left='2';
right='8';
front='4';
back='6';
}
/*转向*/
void turn(char direction)
{
switch (direction)
{
case '2':--y;
case '8':++y;
case '4':--x;
case '6':++x;
}
}
/*食物*/
void getfood()
{
do
{
x1=random()%(W-2)+1;
y1=random()%(H-2)+1;
}
while (map[y1][x1]!='0'); /*食物要在空处*/
food=&map[y1][x1]; /*将食物指针指向得到的坐标*/
*food='4'; /*将坐标处的值替换成'4'*/
}
/*获取转向*/
void getturn()
{
char t;
while (kbhit())
{
t=getch();
if(t==left)
{
turn(left);
left=back;
back=right;
right=front;
front=t;
goto gett;
}
else if(t==right)
{
turn(right);
right=back;;
back=left;
left=front;
front=t;
goto gett;
}
}
turn(front);
gett:;
while (kbhit())
t=getch();
}
/*移动*/
void move()
{
tt=belly[l];
for(i=l;i!=0;--i)
belly[i]=belly[i-1];
belly[0]=head; /*先移身子再移头*/
head=&map[y][x];
*belly[0]='2';
}
void over()
{
printf("Game over!!!");
printf("\t\tAgain?\n");
getch();
clrscr();
start();
}
/*移动后*/
void judge()
{
switch (*head) /*判断头部遇到什么*/
{
case '2':;
case '9':;
over(); /*蛇身与墙直接over*/
break;
case '4':;
getfood();
++l;
belly[l]=tt; /*是食物吃后身子加长*/
*head='1';
break;
case '0':;
*tail='0';
case '3':; /*是蛇尾不管,继续*/
*head='1';
tail=tt;
*tail='3';
break;
}
}
/*把游戏显示出来*/
void draw()
{
for(i=0;i!=H;++i)
{
for(j=0;j!=W;++j)
switch(map[i][j])/*坐标的值进行判断*/
{
case '0':printf(" ");break;
ca
2017年08月14日 06点08分 6
代码太长,尾巴掉了
2017年08月14日 06点08分
level 9
你设定的蛇头初始在蛇身右边,但你的初始移动方向是向左移动,所以马上咬到自己身上。游戏结束。
2017年08月15日 08点08分 9
我改了啊,还是不行,蛇只向下和右移动[汗][汗][汗]
2017年08月15日 14点08分
level 9
第二个错误turn()函数中每个case后没有break;所以移动混乱。
2017年08月16日 13点08分 10
1