C語言版貪吃蛇 第四部分

2021-07-29 09:28:30 字數 3105 閱讀 3774

「馬上就要結束了!」

本章學習:

判斷是否吃到食物並增長身體

判斷是否撞牆或吃到自己

定義乙個變數 life 表示是否活著

life=1表示活著,life=0表示掛掉

記得在 init( ) 裡給 life 初始值1

主函式的while條件裡要加life

判斷撞牆

判斷蛇頭座標與牆是否重合

判斷吃到自己

依次判斷蛇頭座標是否與每節蛇身重合

記得要在move()函式的最後加上check_life( )

每移動一次都要判斷是否活著

參考**如下

// 判斷蛇是否還活著

void check_life()

}

直接判斷蛇頭座標與食物是否重合

若重合,則增長

增長分為水平和豎直增長

具體可參考**

參考**如下

// 判斷是否吃到食物

void check_food()

// 豎直增長,將上面的 x 變成 y 即可

if (snake[nail].y == snake[snake[nail].pre].y)

// 放置新的食物

printfood();

}}

/*

這裡是貪吃蛇源**

chapter 1:

解釋下標頭檔案:

time.h 生成隨機數要用到

windows.h 要用到裡面的函式 gotoxy

---------

1.畫圍牆

*************************==

chapter 2:

目標:繪製蛇,食物

蛇的儲存結構:簡單的鍊錶(陣列實現功能)

食物:隨機數的生成

*************************==

chapter 3:

目標: 實現蛇的運動

判斷鍵盤輸入

改變蛇的座標

重繪圖像

*************************==

chapter 4:

目標: 判斷是否吃到食物

增長身體

判斷是否撞牆,是否吃到自己

*************************==

*/#include

#include

#include

#include

#include

#include

// 定義乙個結構體用來儲存蛇的每節身體的座標

struct snake

snake[100];

// 定義三個變數存 蛇長,蛇頭,蛇尾

int lenth, head, nail;

// 食物位置

int food_x, food_y;

// 儲存蛇的當前,和上一次的移動方向

int direation, direation_pre;

// 儲存蛇是否還活著,1活著

int life;

// 游標移動函式

void gotoxy(int x, int y)

; setconsolecursorposition(getstdhandle(std_output_handle), coord);

}// 列印蛇

void printsnake()

}// 清除蛇

void clear()

}// 遊戲結束

void game_over()

// 判斷食物是否合法

int ok_food()

// 都沒有,則返回1

return1;}

// 列印食物

void printfood()

while (!ok_food());

// ok_food()為判斷食物是否合法的函式,合法返回1,不合法返回0

gotoxy(food_x, food_y);

printf("@");

}// 判斷是否吃到食物

void check_food()

// 豎直增長,將上面的 x 變成 y 即可

if (snake[nail].y == snake[snake[nail].pre].y)

// 放置新的食物

printfood();

}}// 判斷蛇是否還活著

void check_life()

}// 實現蛇的座標改變

void move()

case

's':

case

'a':

case

'd':

}printsnake();

check_food();

check_life();

}// 繪製圍牆

void printwall()

// 繪製豎直圍牆

for (int i = 1; i <= 20; i++)

}void init()

int main()

// 有讀入則停下來改變方向

// 先記下原來的方向

direation_pre = direation;

// 讀入要改變的方向

direation = getch();

// 判斷方向是否合法,如果和上次相反,則保持原來方向

if (direation == 'w' && direation_pre == 's' || direation == 's' && direation_pre == 'w')

direation = direation_pre;

if (direation == 'a' && direation_pre == 'd' || direation == 'd' && direation_pre == 'a')

direation = direation_pre;

}system("pause");

return

0;}

C語言版貪吃蛇 第二部分

本章將學習以下內容 根據座標列印出蛇 利用隨機數生成食物 列印食物 蛇的列印 食物本章完整 運動的原理 類似動畫的原理,蛇每移動一次,重新繪製一次影象,通過不斷的重繪,形成連續的動作。如何運動 方法二 比較兩種方法,可以發現方法二更為簡便。基於方法二的特點,陣列不能滿足我們的需求 所以這裡就需要介紹...

第四部分 方法3

對employee.calculatepay方法的呼叫是問題的原因。我們需要的是晚繫結。晚繫結 latebinging 意味著編譯器到執行時才選擇要執行的方法。為了迫使編譯器呼叫向上型別轉換得到的物件的方法的正確版本。我們使用了兩個關鍵字 virtual 和override.必須在基類方法中使用vi...

第四部分 方法5

linux繼承了unix作業系統結構清晰的特點。在linux下的檔案結構非常有條理。但是,上述的優點只有在對linux相當熟悉時,才能體會到。vmlinuz 我們已經知道,每乙個linux都有乙個核心 vmlinuz 我們在這個核心上新增上可以完成各種特定功能的模組,每個模組就體現在 linux中各...