# 專案-小恐龍 ![image](https://hackmd.io/_uploads/SyRMck8pa.png) 程式設計三,我們將利用所學的 C 語言實作出一個小恐龍 類似`chrome://dino` ## 小恐龍需求 下面會列出專案需要的函式以及物件(結構)及參數等,由各位實作出來 ## define define 一些經常會用到的數字,藉由 define 增加程式碼的可讀性 ```c= #define ROAD_LENGTH 50 //路面長度 #define DINO_PLACE 6 //小恐龍在路面上的第幾格 ``` ## 結構(物件) 一個經常會使用到的物件 ```c= struct dino { char road[ROAD_LENGTH + 1]; //字串結尾需要'\0' int jump_Time_Left; //小恐龍掉到地面的時間 int score; //得到的分數 int wait_Time; //每次迴圈等待的時間 int barrier_Chance; //放置障礙物的機率 //剩下看各位有需要甚麼 }; typedef struct dino Dino; ``` ## init 這邊將會運用到 malloc ,將可以避免當我們離開函式時,物件的記憶體被清除掉 因為動態配置的記憶體是由我們去控制他的生命週期。 ```c= Dino* init(void) ``` [可參考](https://learn.microsoft.com/zh-tw/cpp/c-runtime-library/reference/malloc?view=msvc-170) ## display 呈現出小恐龍的畫面 ```c= void display(Dino* MyDino) ``` ## main 進入 main 首先做初始化 -> 進入迴圈 [邏輯運算(是否有撞到、是否有按跳躍) -> 呈現畫面] ```c= int main() { /*初始化*/ while (true) { /* 邏輯運算 */ /* 渲染呈現 */ } return 0; } ``` ## move 實際上在移動的是路面,因此我們要寫一個移動路面的函式 ```c= void move(Dino *MyDino) ``` ## space_pressed 判斷鍵盤是否有按下跳躍 ```c= bool space_pressed(void) ``` ## is_bumped 判斷小恐龍是否撞到'X' ```c= bool is_bumped(Dino* MyDinoPtr) ``` ## spawn_barrier 隨機產生障礙物'X' ```c= bool spawn_barrier(Dino* MyDinoPtr) ```