開始之前先推薦一篇博客:
C語言:素數求解的N種境界_碧瑤的博客呀-CSDN博客_素數求解的n種境界
然后開始今天的重頭戲:猜數字游戲,
今天需要用到兩個void函式,一個主函式,
我們先寫一個選單
void main() { printf("按下1開始游戲\n"); printf("按下2退出游戲\n"); }這就完成了一個簡易選單的設定,主函式中我們直接呼叫就行了,
緊接著我們寫主函式
#include<stdio.h> int main() { int input = 0;//定義輸入數 do { menu()//參考選單,注意選單要寫在回圈的內部這樣每次回圈才會重新呼叫選單 printf("請選擇"); scanf("%d",&input); switch(input) { case 1://這里的1和0其實是選單中說的1和0 printf("選擇正確"); break; case 0: printf("選擇錯誤"); break; default: printf("輸入錯誤"); break; } }while(input);//這里注意 do while 回圈的書寫方式 return 0; }主程式的書寫就完成了,
之后我們還要在case 1 處參考一個game,來作為游戲的主要部分,
void game() { //首先我們要一個亂數,在C語言中如何產生亂數呢?我們可以用rand函式 int r = rand; }
打開MSDN,我們在這里看到rand使用之前還需要加一個srand來對它進行定義,怎么定義呢,直接srand加上括號就行了,
void game() { srand(1) int r = rand; }可是這樣會發現只有隨著srand的變化,rand的值才會發生變化,如何將srand隨機化呢?我們這里就要用到時間戳這一概念了,時間戳是當前時間與計算機起始時間之間的差值,我們在此參考時間戳,
void game() { srand(time(NULL)) int r = rand; }MSDN上面寫道,time_t * 說明這是一個指標,讓其回傳空值那么就可以輸出一個數字,
型別轉換后,代碼變成
srand((unsigned int)time(NULL));為了避免每一次都要重新同步時間戳,把這行代碼放進主函式里面,這樣子就可以讓產生的數字真正隨機,
之后的游戲部分就十分簡單
int guess = 0; while (1) { printf("猜數字"); scanf("%d", &guess); if (guess > r) { printf("大了\n"); } else if (guess < r) { printf("小了\n"); } else { printf("恭喜恭喜你猜中了 (*^▽^*) \n"); break;
整個程式就完成了
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("按下 1 開始游戲 \n");
printf("按下 0 結束游戲 \n");
}
void game()
{
int r = rand() % 100 + 1;//rand max 為0-32767
int guess = 0;
while (1)
{
printf("猜數字");
scanf("%d", &guess);
if (guess > r)
{
printf("大了\n");
}
else if (guess < r)
{
printf("小了\n");
}
else
{
printf("恭喜恭喜你猜中了 (*^▽^*) \n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
menu();
printf("請選擇:");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戲");
break;
default:
printf("選擇錯誤");
break;
}
} while (input);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/351121.html
標籤:其他
上一篇:<2021SC@SDUSC>開源游戲引擎Overload代碼分析五:OvEditor——RawShaders.cpp

