不用指针,99行贪吃蛇
c4droid吧
全部回复
仅看楼主
level 11
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define H 18
#define W 51
int i, j, l = 3, g = 1, f =
2, x1, y1,x[(W - 2) * (H - 2)], y[(W - 2) * (H - 2)];
char kz, map[W][H];
void start();
void draw();
void move();
void control();
void getfood();
void over();
int main() {
LOOP:
start();
while (g == 1) {
usleep(180000);
clrscr();
control();
move();
draw();
} printf("游戏结束!按任意键再来一次!\n");
kz = getch();
goto LOOP;
return 0;
}
void draw() {
for (j = 0; j < H; j++) {
for (i = 0; i < W; i++)
printf("%c", map[i][j]);
printf("\n");
}
printf("得分:%d\n", l - 3);
}
void start() {
l = 3;
g = 1;
f = 2;
for (j = 0; j < H; j++) {
for (i = 0; i < W; i++) {
if (i == 0 || i == W - 1 || j == 0 || j == H - 1)
map[i][j] = '#';
else
map[i][j] = ' ';
}
}
for (i = 0; i <= 2; i++) {
x[i] = W / 2 - i;
y[i] = H / 2;
map[x[i]][y[i]] = '@';
}
getfood();
}
void move() {
for (i = l - 1; i >= 1; i--) {
if (i == l - 1&& x[i] != 0)
map[x[i]][y[i]] = ' ';
x[i] = x[i - 1 ];
y[i] = y[i - 1];
}
if (f == 2)
y[0]--;
else if (f == 8)
y[0]++;
else if (f == 6)
x[0]++;
else if (f == 4)
x[0]--;
if (map[x[0]][y[0]] == 'O') {
getfood();
++l;
}
if (map[x[0]][y[0]] == '#' || map[x[0]][y[0]] == '@') {
g = 0;
}
map[x[0]][y[0]] = '@';
}
void control() {
if (kbhit()) {
kz = getch();
if (kz == '2' && f != 8)
f = 2;
else if (kz == '8' && f != 2)
f = 8;
else if (kz == '6' && f != 4)
f = 6;
else if (kz == '4' && f != 6)
f = 4;
}
}
void getfood() {
do {
x1 = random() % (W - 2) + 1;
y1= random() % (H - 2) + 1;
} while (map[x1][y1] != ' ');
map[x1][y1] = 'O';
}
2015年01月31日 07点01分 1
level 11
下午闲着没事又把上次的代码进一步优化了一下改变了算法减少了变量,修复了一些bug代码竟然还少了十行[酷]
2015年01月31日 07点01分 2
不错
2015年02月16日 16点02分
level 10
路过帮顶
2015年01月31日 07点01分 3
刚才试了一下stdlib可以不包含,所以又变成98行了[吐舌]
2015年01月31日 07点01分
level 13
执子之手,共度此生——曾经以为所有的爱情都一定要惊天动地;曾经以为每个人的爱情都一定要轰轰烈烈;曾经以为所有的爱情都有花前月下,海誓山盟;曾经无限向往九千九百九十九朵玫瑰的浪漫……然而平平淡淡同样震撼人心,执手之时,冷暖两心知;执手之时,悲喜两忘。
2015年01月31日 08点01分 4
level 11
路过,我写了个两百行的,感觉我的好臃肿
2015年01月31日 08点01分 5
用指针了么
2015年01月31日 08点01分
回复
ǿ�Ƴ���δ��
:没有用
2015年01月31日 09点01分
level 12
我怎么不记得有 random() 这个函数?![喷]
2015年01月31日 08点01分 6
有啊
2015年01月31日 08点01分
很好,static __inline__ long random(void) { return lrand48(); }
2015年01月31日 08点01分
回复 强制初音未来 :返回的是 long。
2015年01月31日 08点01分
回复
��һ���ľ���
:不懂
2015年01月31日 08点01分
level 12
感觉我的260行的太臃肿了[惊哭]
/*
---------
这不是无脑水,这是。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。有脑水!
     --------对我不敬皆sb
*/
2015年01月31日 23点01分 7
佩服,我怎么想写多点都不行[委屈]
2015年01月31日 23点01分
回复 强制初音未来 :我把它封今了类里,用链表做的,预备以后做ai方便     -----------||||||||→_→谁家的层主啊!有人要吗?没人要我可掐死了啊!←_←
2015年02月01日 05点02分
2015年02月01日 09点02分
level 10
怎么拐弯?
2015年02月01日 01点02分 8
2486吗?
2015年02月01日 01点02分

2015年02月01日 06点02分
level 6
为什么电脑上运行不了。。。
2015年02月01日 01点02分 9
手机的安卓基于linux系统和windows头文件有些不同
2015年02月01日 06点02分
level 13
2015年02月01日 01点02分 10
level 11
over没有用,97
2015年02月01日 09点02分 11
对诶,我还没发现,谢了
2015年02月01日 09点02分
楼上
2015年02月01日 14点02分
level 10
变向存在bug
2015年02月01日 14点02分 12
啥意思
2015年02月01日 15点02分
回复
ǿ�Ƴ���δ��
:蛇一变向 蛇头位置会跑到中间
2015年02月01日 15点02分
回复
��ϸ����������
:没啊
2015年02月01日 15点02分
回复
ǿ�Ƴ���δ��
:真心有。。
2015年02月01日 16点02分
level 10
conio.h是干啥滴
2015年02月04日 05点02分 14
头文件,包含了清屏函数clrscr();
2015年02月04日 05点02分
回复 强制初音未来 :为毛我木有 是不是不在标准库里头
2015年02月04日 07点02分
@🍗羊头 这是安卓版的c4,不知道你的手机系统是win还是ios?
2015年02月04日 09点02分
level 7
楼主,求问usleep函数怎么用,我用VS运行不了啊???
2015年02月16日 12点02分 15
括号里加一个数字数字越大休眠越久
2015年02月16日 20点02分
level 14
大神,为什么H和W要定义为18和51这两个数字啊?有什么特殊的含义么?另外,开头的定义x,y的数组为什么是-2而不是别的,求大神解说一下啊。[蹭][蹭][蹭]
2015年02月18日 11点02分 18
大神就免了,你学一个月就到我这水平了
2015年02月19日 13点02分
18和51是地图的高和长,设成这个是为了适应我的手机屏幕
2015年02月19日 13点02分
回复 强制初音未来 :哦哦哦哦,原来是介样。[蹭]
2015年02月19日 13点02分
回复 强制初音未来 :不会,c都学一个学期了。
2015年02月19日 13点02分
level 13
帮顶大佬
2017年08月03日 16点08分 19
level 6
66666
2017年08月03日 22点08分 20
level 10
话说...如果提前编译好一个贪吃蛇程序,然后把下载到本地部署的代码发出来算不算最短的[滑稽]
2017年08月04日 01点08分 21
1 2 尾页