c语言贪吃蛇重新开始释放内存,求助,自己写的贪吃蛇运行久了就堆栈溢出咋办...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#include

#include

#include

#include

short body[50][2];//最长长度为50

short length,frame=10;

short cas1=0,j=1;

short i,ii,iii,i4;

short ran[2];

char key='d';

short timer=25;

int autochange(){

for(i=length-1;i>0;i--){

body[i][0]=body[i-1][0];

body[i][1]=body[i-1][1];

}

return 0;

}

int println(){

while(1){

system("cls");

while(ran[0]==body[0][0]&&ran[1]==body[0][1]){

randomw();

length++;

timer=timer-1;

body[length-1][0]=frame;

body[length-1][1]=frame;

}

for(i=0;i

for(ii=0;ii

for(iii=0;iii

if(body[iii+1][1]==i&&body[iii+1][0]==ii){

printf(" *");

cas1=1;

}

}

if(body[0][0]==ii&&body[0][1]==i){

printf(" @");

}else if(ran[0]==ii&&ran[1]==i){

printf(" Q");

}else if(ii==frame){

printf(" #");

}else if(cas1==1){

cas1=0;

}else{

printf(" ");

}

}

printf("\n");

}

for(i4=0;i4

printf(" #");

}

printf("\n");

getkey();

autochange();

keywalk();

if(body[0][0]==-1||body[0][0]==frame||body[0][1]==-1||body[0][1]==frame){

printf("you died\nyou guard is %d\n",length-3);

break;

}

for(i=1;i

if(body[0][0]==body[i][0]&&body[0][1]==body[i][1]){

j=0;

break;

}else{

j=1;

}

}

if(j==0){

printf("you died\nyou guard is %d\n",length-3);

break;

}

}

return 0;

}

int randomw(){

srand(time(NULL));

ran[0]=rand()%frame;

ran[1]=rand()%frame;

for(i=0;i

if(body[i][0]==ran[0]&&body[i][1]==ran[1]){

randomw();

}

}

return 0;

}

int getkey(){//获取键盘码

char ch=0,k=0;

while(ch!='w'&&ch!='s'&&ch!='a'&&ch!='d'&&ch==0){

if(kbhit()){

ch=getch();

}

Sleep(timer);

k++;

if(k>=15){

ch=0;

break;

}

}

while(k<15){

Sleep(timer);

k++;

}

if(ch!=0&&(ch=='w'||ch=='s'||ch=='a'||ch=='d')){

if(key=='w'&&ch!='s'){

key=ch;

}else if(key=='a'&&ch!='d'){

key=ch;

}else if(key=='s'&&ch!='w'){

key=ch;

}else if(key=='d'&&ch!='a'){

key=ch;

}

}

return 0;

}

int keywalk(){//控制走向

switch(key){

case 'w':

body[0][1]--;

break;

case 's':

body[0][1]++;

break;

case 'a':

body[0][0]--;

break;

case 'd':

body[0][0]++;

break;

}

return 0;

}

int again(){//控制再试一次

char b;

printf("start(y \\ n)?\n");

scanf("%c",&b);

while(b=='y'){

snake();

printf("are you went try again(y \\ n)?\n");

scanf(" %c",&b);

key='d';

timer=25;

}

return 0;

}

int snake(){//定义函数

length=3;

body[0][0]=2;

body[0][1]=frame/2;

body[1][0]=1;

body[1][1]=frame/2;

body[2][0]=0;

body[2][1]=frame/2;

randomw();

println();

return 0;

}

int main(){

again();

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值