# 小恐龍第二周進度 ## git clone - cd "預存放資料夾位置" ![image](https://hackmd.io/_uploads/HJgGhTNkCp.png) - git init ![image](https://hackmd.io/_uploads/rJ2iaNk0p.png) - git clone "儲存庫的URL" ![image](https://hackmd.io/_uploads/B1DsaNJCp.png) - 這樣就完成了 ![image](https://hackmd.io/_uploads/SJgsa41Ra.png) [clone && pull](https://ithelp.ithome.com.tw/m/articles/10272256) [clone && pull差別可參考](https://gitbook.tw/chapters/github/clone-vs-pull) ## 第二周進度 1. 完成 move - 讓road的每個字元向前一格,這樣看起來會像是小恐龍在動 2. 在 init 中新增障礙物 'X' - X 當作障礙物 4. 完成 space_pressed - 判斷鍵盤是否有按下 space 鍵 6. 放入 main中使用 7. 加上註解 ### 本周使用的函式 怕各位對於用到的函式不知道是做甚麼用的,而提供可參考的相關資料 1. [_kbhit()](https://learn.microsoft.com/zh-tw/cpp/c-runtime-library/reference/kbhit?view=msvc-170) 2. [_getch()](https://learn.microsoft.com/zh-tw/cpp/c-runtime-library/reference/getch-getwch?view=msvc-170) 3. [ASCII](https://zh.wikipedia.org/zh-tw/ASCII) ## 對 Github 的 push 參考之前的講義自行 push 上去看看 ![image](https://hackmd.io/_uploads/Syu5aE1Rp.png) ## 課堂 Code ``` c= #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <Windows.h> #include <time.h> #define ROAD_LENGTH 50 //路面長度 #define DINO_PLACE 6 //小恐龍在路面上的第幾格 struct dino { char road[ROAD_LENGTH + 1]; //字串結尾需要'\0' int jump_Time_Left; //小恐龍掉到地面的時間 int score; //得到的分數 int wait_Time; //每次迴圈等待的時間 int barrier_Chance; //放置障礙物的機率 //剩下看各位有需要甚麼 }; typedef struct dino Dino; Dino* init(void) { //Dino MyDino; //Dino* MyDinoPtr = &MyDino; Dino* MyDinoPtr = (Dino*)malloc(sizeof(Dino)); if (MyDinoPtr != NULL) { MyDinoPtr->jump_Time_Left = 0; MyDinoPtr->barrier_Chance = 10; MyDinoPtr->score = 0; MyDinoPtr->wait_Time = 150; for (int i = 0; i < ROAD_LENGTH; i++) { MyDinoPtr->road[i] = '_'; } MyDinoPtr->road[ROAD_LENGTH - 1] = 'X'; MyDinoPtr->road[ROAD_LENGTH] = '\0'; } return MyDinoPtr; } void display(Dino* MyDinoPtr) { system("cls"); printf("\n\n\t"); for (int i = 0; i < ROAD_LENGTH; i++) { if (i == DINO_PLACE && MyDinoPtr->jump_Time_Left > 0) printf("o"); else printf(" "); } printf("\n\t"); //地面 for (int i = 0; i < ROAD_LENGTH; i++) { if (i == DINO_PLACE && MyDinoPtr->jump_Time_Left == 0) printf("o"); else printf("%c", MyDinoPtr->road[i]); } printf("\n\n\n"); printf("\t\tyour socre is: %d", MyDinoPtr->score); return; } void move(Dino* MyDinoPtr) { for (int i = 0; i < ROAD_LENGTH - 1; i++) { MyDinoPtr->road[i] = MyDinoPtr->road[i + 1]; } MyDinoPtr->road[ROAD_LENGTH - 1] = '_'; } bool space_pressed(void) { return _kbhit() != 0 && _getch() == 32; } int main() { Dino* MyDinoPtr = init(); display(MyDinoPtr); while (true) { if (space_pressed() && MyDinoPtr->jump_Time_Left == 0) MyDinoPtr->jump_Time_Left = 7; move(MyDinoPtr); if (MyDinoPtr->jump_Time_Left > 0) MyDinoPtr->jump_Time_Left -= 1; display(MyDinoPtr); Sleep(MyDinoPtr->wait_Time); } return 0; } ```