# 小恐龍第四周進度 上週應該都有幫大家將 Github 上的 repository 剩下一個 main 分支 那按照步驟做即可  ## git clone - cd "預存放資料夾位置"  - git init  - git clone "儲存庫的URL"  - 這樣就完成了  ## 小恐龍第四周進度 1. srand(time(NULL)) - 產生隨機數 2. 完成 spawn_barrier 的函式 - 用於產生障礙物 'X' - 相關函式可參考 [srand函式](https://learn.microsoft.com/zh-tw/cpp/c-runtime-library/reference/srand?view=msvc-170) [rand函式](https://learn.microsoft.com/zh-tw/cpp/c-runtime-library/reference/rand?view=msvc-170) ## 對 Github 的 push  - 基本指令 - `cd "預存放資料夾位置"` - `git add .` (不用在 git init 了因為已經有執行過並有 .git 檔案了) - `git commit -m "spawn_barrier&&rand_number"` - `git push` - 可參考的資料 -[新手也能懂的Git教學](https://medium.com/@flyotlin/%E6%96%B0%E6%89%8B%E4%B9%9F%E8%83%BD%E6%87%82%E7%9A%84git%E6%95%99%E5%AD%B8-c5dc0639dd9) -[寫給 Git 初學者的入門 4 步驟](https://www.maxlist.xyz/2018/11/02/git_tutorial/) ## 課堂 Code ```c= //20240328 //標頭檔案 #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; } //判斷是否小恐龍撞到'X' bool is_bumped(Dino* MyDinoPtr) { return MyDinoPtr->jump_Time_Left == 0 && MyDinoPtr->road[DINO_PLACE] == 'X'; } //隨機產生障礙物'X' bool spawn_barrier(Dino* MyDinoPtr) { int random_Number = rand() % 100; if (random_Number < MyDinoPtr->barrier_Chance) { return true; } return false; } //主程式 int main() { //隨機產生種子 srand(time(NULL)); 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; //如果要產生障礙物'X' if (spawn_barrier(MyDinoPtr)){ MyDinoPtr->road[ROAD_LENGTH - 1] = 'X'; } //如果撞到我們要離開迴圈 if (is_bumped(MyDinoPtr)) { display(MyDinoPtr); break; } display(MyDinoPtr); MyDinoPtr->score++; Sleep(MyDinoPtr->wait_Time); } return 0; } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up