C語言實作猜數字小游戲及偽亂數簡述
- 簡介
- 1.用戶互動界面的設計
- 2.游戲程式的設計
- 3.主函式的實作
簡介
- 猜數字小游戲定義
猜數字小游戲就是小程式自動生成一個給定范圍內的數字,用戶根據系統的提示(猜高了、猜低了)來完成對亂數字的成功輸入, - 猜數字小游戲的實作
猜數字小游戲是利用c語言的分支回圈知識所撰寫的具有簡單的用戶互動界面、運用簡單函式結合的小程式, - 猜數字小游戲的邏輯結構
1.系統根據給定的條件生成亂數;
2.用戶輸入一個給定范圍的數字;
3.系統根據生成的亂數和用戶輸入的數字進行比較來進一步運行程式,
1.用戶互動界面的設計
為了有一個完整的"游戲"體驗,我們會進行一個小游戲界面的列印:
在主函式main()中會對這里輸入的choice來進入不同的階段,
int menu() {
printf("=============================\n");
printf("==========1. 開始游戲========\n");
printf("==========0. 退出游戲========\n");
printf("=============================\n");
printf(" 請輸入您的選擇: ");
int choice = 0;
scanf("%d", &choice);
return choice;
}
2.游戲程式的設計
程式在這里會生成一個亂數,我們利用庫函式中的rand函式來實作這個功能(注意這里的亂數是偽亂數),
偽亂數是用確定性的演算法計算出來自[0,1]均勻分布的亂數序列,并不真正的隨機,但具有類似于亂數的統計特征,如均勻性、獨立性等,在計算偽亂數時,若使用的初值(種子)不變,那么偽亂數的數序也不變,(百度百科)
亂數的取值和使用的種子有關,為了實作真正的亂數,我們可以在程式中加一個替換種子的方法,(下文有利用時間戳做種子的方法)
Generate random number生成亂數;
int rand (void);為參考方法;
在c中頭檔案為:
#include<stdlib.h>
下圖為函式呼叫不同亂數范圍的方法:
我們可以按照他的例子來指定亂數的范圍,我這里給了1-100的例子,你可以自己來指定別的范圍,
void game() {
int toGuess = rand() % 100 + 1;// 1. 程式自動生成一個 1-100 的隨機整數.
while (1) {
printf("請輸入要猜的數字: ");
int input = 0;
scanf("%d", &input);
// 3. 比較用戶輸入的數字和系統生成的數字之間的關系, 并給用戶提示.
if (input < toGuess) {
printf("低了!\n");
}
else if (input > toGuess) {
printf("高了!\n");
}
else {
printf("猜對了!\n");
break;
}
}
}
3.主函式的實作
時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數,通俗的講, 時間戳是一份能夠表示一份資料在一個特定時間點已經存在的完整的可驗證的資料,我們利用時間戳的特點可以實作隨機種子的輸入,
具體的方法是:
srand(time(0));
頭檔案為:
#include<time.h>
主函式如下:
int main()
{
srand(time(0));
//將現在的時間戳作為亂數種子
while (1) {
int choice = menu();//給用戶一個互動的選單
if (choice == 1) {//用戶開始游戲
game();
} else if (choice == 0) {
printf("程式退出, 再見!\n");
break;
} else {
// 寫程式一定要考慮到用戶的非法輸入的情況.
printf("您的輸入有誤, 請重新輸入!\n");
}
}
system("pause");
return 0;
}
如圖為一個輸出結果,
你可以直接復制我的代碼來試一試,QAQ
記得加頭檔案:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/188003.html
標籤:AI
下一篇:美團點評面經
