日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言链表贪吃蛇教程,编《贪吃蛇》最简单的算法,链表法

發布時間:2025/3/11 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言链表贪吃蛇教程,编《贪吃蛇》最简单的算法,链表法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

該樓層疑似違規已被系統折疊?隱藏此樓查看此樓

#include

#include

#include

#include

#include

#define?ESC?0x011b

#define?UP?0x4800

#define?DOWN?0x5000

#define?LEFT?0x4b00

#define?RIGHT?0x4d00

struct?rode

{int?x;

int?y;

struct?rode?*next;

};

struct?rode?*head,food;

void?initgra()

{int?dr=DETECT,mode=0;

registerbgidriver(EGAVGA_driver);

initgraph(&dr,&mode,"");

}

int?message(char?*s)

{?char?c;

setfillstyle(1,4);

setcolor(1);

settextstyle(0,0,3);

bar(640/2-200,480/2-50,640/2+250,480/2+50);

outtextxy(640/2-200,480/2-20,s);

c=getch();

sleep(2);

if(c=='n'||?c=='N')return(0);else?return(1);

}

initgame()

{

int?i;

randomize();

cleardevice();

clear();

setbkcolor(15);

setcolor(4);

for(i=0;i<=640;i+=20)?line(i,0,i,479);

for(i=0;i<=480;i+=20)?line(0,i,639,i);

add(5,5);

add(5,6);

add(5,7);

rndfood();

getch();

}

add(int?x,int?y)

{

struct?rode?*newrode;

newrode=(struct?rode*)malloc(sizeof(struct?rode));

newrode->x=x;

newrode->y=y;

newrode->next=head;

head=newrode;

draw(x,y);

}

delete()

{struct?rode?*p1,*p2;

p1=p2=head;

while?(p1->next?!=NULL)?{

p2=p1;

p1=p1->next;

}

redraw(p1->x,p1->y);

free(p1);

p2->next=NULL;

}

long?getkey(long?oldkey)

{long?k;

if(bioskey(1)==0)?return?0;

k=bioskey(0);

if(oldkey==UP?&&?k==DOWN)?return?0;

if(oldkey==DOWN?&&k==UP)?return?0;

if(oldkey==RIGHT&&k==LEFT)?return?0;

if(oldkey==LEFT&&k==RIGHT)?return?0;

return?k;

}

clear()

{struct?rode?*p1,*p2;

p1=p2=head;

while(p1){

p2=p1->next;

free(p1);

p1=p2;

}

head=NULL;

}

draw(int?x,int?y)

{setcolor(1);

setfillstyle(1,1);

bar((x-1)*20+1,(y-1)*20+1,x*20-1,y*20-1);

}

redraw(int?x,int?y)

{int?c;

c=getbkcolor();

setcolor?;

setfillstyle(1,c);

bar((x-1)*20+1,(y-1)*20+1,x*20-1,y*20-1);

}

rndfood()

{

food.x=random(31)+1;

food.y=random(23)+1;

draw(food.x,food.y);

}

gameover()

{clear();

closegraph();

exit(1);

}

main()

{struct?time?t;

int?oldtime;

long?key,oldkey;

int?nx,ny,x,y;

long?getkey(long?oldtime);

initgra();

again:

initgame();

x=0;

y=1;

oldkey=DOWN;

key=DOWN;

gettime(&t);

oldtime=t.ti_hund;

while(key!=ESC)

{gettime(&t);

if((t.ti_hund+100-oldtime)%100<40)

{

if((key=getkey(oldkey))!=0)

{

switch(key)

{case?UP:x=0;y=-1;break;

case?DOWN:x=0;y=1;break;

case?LEFT:x=-1;y=0;break;

case?RIGHT:x=1;y=0;break;

default:continue;

}

oldkey=key;

}

}

else{

oldtime=t.ti_hund;

nx=head->x+x;

ny=head->y+y;

if(nx==food.x?&&?ny==food.y)

{

add(food.x,food.y);

rndfood();

continue;

}

if(nx>32||nx?<1?||ny?>24?||ny<1)

if?(message("Do?you?want?play?again?[Y/N]")?)?goto?again;

else

gameover();

delete();

add(nx,ny);

}

}

gameover();

}

總結

以上是生活随笔為你收集整理的c语言链表贪吃蛇教程,编《贪吃蛇》最简单的算法,链表法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。