色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

用C語言,能在100行之內實現貪吃蛇嗎?

傅智翔2年前13瀏覽0評論

恕我直言貪吃蛇這個游戲雖小但涉及的方面還是不少的,想要做一個完整的貪吃蛇100行應該不好實現。

建議樓主試試這個。

#include<stdio.h>

#include<time.h>

#include<windows.h>

#include<stdlib.h>

#defineU1

#defineD2

#defineL3

#defineR4//蛇的狀態,U:上;D:下;L:左R:右

typedefstructSNAKE//蛇身的一個節點

{

intx;

inty;

structSNAKE*next;

}snake;

//全局變量//

intscore=0,add=10;//總得分與每次吃食物得分。

intstatus,sleeptime=200;//每次運行的時間間隔

snake*head,*food;//蛇頭指針,食物指針

snake*q;//遍歷蛇的時候用到的指針

intendgamestatus=0;//游戲結束的情況,1:撞到墻;2:咬到自己;3:主動退出游戲。

//聲明全部函數//

voidPos();

voidcreatMap();

voidinitsnake();

intbiteself();

voidcreatefood();

voidcantcrosswall();

voidsnakemove();

voidpause();

voidgamecircle();

voidwelcometogame();

voidendgame();

voidgamestart();

voidPos(intx,inty)//設置光標位置

{

COORDpos;

HANDLEhOutput;

pos.X=x;

pos.Y=y;

hOutput=GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleCursorPosition(hOutput,pos);

}

voidcreatMap()//創建地圖

{

inti;

for(i=0;i<58;i+=2)//打印上下邊框

{

Pos(i,0);

printf("■");

Pos(i,26);

printf("■");

}

for(i=1;i<26;i++)//打印左右邊框

{

Pos(0,i);

printf("■");

Pos(56,i);

printf("■");

}

}

voidinitsnake()//初始化蛇身

{

snake*tail;

inti;

tail=(snake*)malloc(sizeof(snake));//從蛇尾開始,頭插法,以x,y設定開始的位置//

tail->x=24;

tail->y=5;

tail->next=NULL;

for(i=1;i<=4;i++)

{

head=(snake*)malloc(sizeof(snake));

head->next=tail;

head->x=24+2*i;

head->y=5;

tail=head;

}

while(tail!=NULL)//從頭到為,輸出蛇身

{

Pos(tail->x,tail->y);

printf("■");

tail=tail->next;

}

}

intbiteself()//判斷是否咬到了自己

{

snake*self;

self=head->next;

while(self!=NULL)

{

if(self->x==head->x&&self->y==head->y)

{

return1;

}

self=self->next;

}

return0;

}

voidcreatefood()//隨機出現食物

{

snake*food_1;

srand((unsigned)time(NULL));

food_1=(snake*)malloc(sizeof(snake));

while((food_1->x%2)!=0)//保證其為偶數,使得食物能與蛇頭對其

{

food_1->x=rand()%52+2;

}

food_1->y=rand()%24+1;

q=head;

while(q->next==NULL)

{

if(q->x==food_1->x&&q->y==food_1->y)//判斷蛇身是否與食物重合

{

free(food_1);

createfood();

}

q=q->next;

}

Pos(food_1->x,food_1->y);

food=food_1;

printf("■");

}

voidcantcrosswall()//不能穿墻

{

if(head->x==0||head->x==56||head->y==0||head->y==26)

{

endgamestatus=1;

endgame();

}

}

voidsnakemove()//蛇前進,上U,下D,左L,右R

{

snake*nexthead;

cantcrosswall();

nexthead=(snake*)malloc(sizeof(snake));

if(status==U)

{

nexthead->x=head->x;

nexthead->y=head->y-1;

if(nexthead->x==food->x&&nexthead->y==food->y)//如果下一個有食物//

{

nexthead->next=head;

head=nexthead;

q=head;

while(q!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

score=score+add;

createfood();

}

else//如果沒有食物//

{

nexthead->next=head;

head=nexthead;

q=head;

while(q->next->next!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

Pos(q->next->x,q->next->y);

printf("");

free(q->next);

q->next=NULL;

}

}

if(status==D)

{

nexthead->x=head->x;

nexthead->y=head->y+1;

if(nexthead->x==food->x&&nexthead->y==food->y)//有食物

{

nexthead->next=head;

head=nexthead;

q=head;

while(q!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

score=score+add;

createfood();

}

else//沒有食物

{

nexthead->next=head;

head=nexthead;

q=head;

while(q->next->next!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

Pos(q->next->x,q->next->y);

printf("");

free(q->next);

q->next=NULL;

}

}

if(status==L)

{

nexthead->x=head->x-2;

nexthead->y=head->y;

if(nexthead->x==food->x&&nexthead->y==food->y)//有食物

{

nexthead->next=head;

head=nexthead;

q=head;

while(q!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

score=score+add;

createfood();

}

else//沒有食物

{

nexthead->next=head;

head=nexthead;

q=head;

while(q->next->next!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

Pos(q->next->x,q->next->y);

printf("");

free(q->next);

q->next=NULL;

}

}

if(status==R)

{

nexthead->x=head->x+2;

nexthead->y=head->y;

if(nexthead->x==food->x&&nexthead->y==food->y)//有食物

{

nexthead->next=head;

head=nexthead;

q=head;

while(q!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

score=score+add;

createfood();

}

else//沒有食物

{

nexthead