{
int a[30][30]={0};/*先聲明壹個30*30的數組,用於存儲屏幕上的蛇、食物的分布情況*/
int i,j,t,flag=0;
char c='d',c1='d';
struct Food food={10,16,'A'};/*初始化壹個食物對象,在10,16位置,它的另壹個參數是'A'*/
int gameover=0;/*讓遊戲狀態切換到正常*/
struct Node *head,*p,*rear,*pt;/*head存儲蛇的頭部,pt用來臨時遍歷蛇的每壹節、rear用來存儲蛇的尾部(不過妳截的這段代碼沒有使用到尾部信息的值、p是增刪結點時采用的壹個臨時變量)*/
head=(struct Node *)malloc(sizeof(struct Node));/*給蛇分配內存空間*/
head->x=10;/*蛇頭的x值為10*/
head->y=16;/*同理*/
head->pre=NULL;/*蛇頭前面沒有結點*/
head->next=NULL;/*蛇頭後面也沒有結點(空空蕩蕩的壹個大頭)*/
rear=head;/*所以~蛇的屁股就是它的腦袋……*/
srand((unsigned)time(NULL));/*初始化隨機數發生器,讓程序每壹次執行時產生的隨機數序列都不壹樣*/
while(1)
{
if(food.x==head->x && food.y==head->y)/*如果蛇頭碰到了食物*/
{
p=(struct Node *)malloc(sizeof(struct Node));/*創建壹個新的結點,並分配空間*/
pt=head;/*pt指向蛇頭,準備遍歷*/
while(pt->next!=NULL)/*只要pt指向的結點後面還有結點,即沒有遍歷到蛇尾*/
pt=pt->next ;/*pt指向下壹個結點*/
p->pre= pt;/*新增結點的上壹個結點是尾部(此時pt已經指向了蛇尾)*/
pt->next = p;/*蛇尾的下壹個結點變為新增結點,鏈表被鏈接在壹起了*/
p->next=NULL;/*新增結點的下壹個結點設為沒有,即下壹次遍歷時,它默認為尾部*/
rear=p;/*蛇尾變成新增結點*/
food.x=rand()%15;/*初始化下壹個食物位置(0-14,0-14)範圍內*/
food.y=rand()%15;
food.c=65+rand()%26;/*食物的另壹個參數隨機分配為某壹個英文字母*/
flag=1;/*讓旗標變為1,旗標的作用在這段被截斷的代碼中未知,下同*/
t=0;