共有回帖数 0 个
-
大神帮帮忙…帮我看看蛇神身怎么转向
#include stdio.h
#include conio.h
#include stdlib.h
#define W 30
#define H 20
char *pmap, *fmap;
char *head, *tail;// 蛇头,蛇身和蛇身尾
char *belly[H*W];
char I = H / 2, J = W / 2;
int k=0, i, j, p;
int a, b;
int x = 1, y = 1;
char map[H][W];
void init_map();// 初始化地图
void put_food();// 放食物
void key_gain();// 键盘获取
void snake();// 蛇
void draw_map();// 绘制地图
void cartoon();// 动画
int main(void)
{
cartoon();
return 0;
}
void init_map()
{
for (i = 0; i H; i++)
{
for (j = 0; j W; j++)
{
if (i == 0 || i == H - 1 || j == 0 || j == W - 1)
{
map[j] = '9';
}
else
{
map[j] = '0';
}
}
}
return;
}
void put_food()
{
do
{
a = random() % (H - 2) + 1;
b = random() % (W - 2) + 1;
}
while (map[a] != '0');
fmap = &map[a];
*fmap = '4';
return;
}
void key_gain()
{
if (kbhit())
{
p = getch();
}
switch (p)
{
case '2':
I--;
break;
case '8':
I++;
break;
case '4':
J--;
break;
case '6':
J++;
break;
}
}
void snake()// 模拟蛇
{
belly[k]= &map[J];
*belly[k]= '1';
return;
}
void draw_map()
{
for (i = 0; i H; i++)
{
for (j = 0; j W; j++)
{
switch (map[j])
{
case '9':
printf(" 33[41;33m 33[40;37m");
break;
case '0':
printf(" 33[42;32m 33[40;32m");
break;
case '4':
printf(" 33[43;32m 33[40;32m");
break;
case '1':
printf(" 33[44;32m 33[44;32m");
}
}
printf("n");
}
return;
}
void cartoon()
{
init_map();
for (;;)
{
k++;
snake();
draw_map();
key_gain();
usleep(300000);
clrscr();
}
return;
}
楼主 2015-07-28 08:21 回复
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈 |
关于直线 |
版权声明 |
会员须知