關于猜數字游戲,本篇博客著重介紹猜數字游戲的流程以及rand、srand函式的講解,
一. 猜數字游戲流程框架
1.1 創建目錄函式
1.2 創建游戲函式與玩家進行互動
1.3 main函式中參考上面兩個函式,并由目錄選擇決定游戲走向
二. rand和srand函式
由于猜數字游戲需要引入亂數字,所以我們先后引入了rand函式與srand函式,分別設定在了游戲函式、main函式中,接下來進行具體講解,
-
2.1 rand函式:
用法舉例:
v1 = rand() % 100; //生成0-99中亂數
v2 = rand() % 100 + 1;//生成0-100中亂數
v3 = rand() % 30 + 1985; //生成1985-2014中亂數
頭檔案:<stdlib.h>
注:詳情見www.cplusplus.com—查找rand,了解更多rand函式功能與用法, -
2.2 srand函式:
srand函式引入的原因:-
由rand在猜數字函式中生成的那組數為偽隨機(由復雜的演算法生成的數字,并非真正的隨機),沒有srand時,生成的是一組固定順序的亂數列,相當于每次執行程式猜的數字是一樣的,
-
所以需要引入srand函式,srand的引數seed是rand()的種子,用來初始化rand()的起始值,將srand函式放在main中,這時候直接令seed每一次呼叫時都不一樣,那么隨著初始值的改變rand生成不同的亂數列,
-
怎么令seed每次呼叫都不同呢? 這時候我們用到了時間戳,
時間戳(time):以1970年1月1日0分0秒為基準時刻,計算當前時刻與基準數之間之差,單位為秒,在正常情況下時間總是在變化的,使得seed每次呼叫都不同,從而rand初始值也每次都不同,從而生成亂數列!
函式用法:
void srand (unsigned int seed);
頭檔案: <time.h>
注:詳情見www.cplusplus.com—查找srand,了解更多srand函式功能與用法, -
三.代碼實作
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include <time.h>
#include <stdlib.h>
//1.創建目錄函式
int menu(){
printf("+++++++++++++++++++++++++++\n");
printf("+++++++++++++++++++++++++++\n");
printf("+++ 歡迎來到猜數字游戲!+++\n");
printf("+++++++ 1.開始游戲 ++++++++\n");
printf("+++++++ 0.退出游戲 ++++++++\n");
printf("+++++++++++++++++++++++++++\n");
printf("+++++++++++++++++++++++++++\n");
printf("請輸入您的選擇:");
int choice = 0;
scanf("%d", &choice);
return choice;
}
//2.創建游戲函式(注意:此處不需要回傳值!所以默認回傳值為空,用void)
void game(){
//2.1 生成一組[1,100]隨機整數數字
int toGuess = rand() % 100 + 1;// rand函式,見上面的解釋
//2.2 進入回圈,開始猜數字
while (1){
int inputNum = 0;
printf("請輸入一個[1,100]之間您猜出來的的整數:");
scanf("%d", &inputNum);
if ((inputNum <= 100) & (inputNum >= 1)){ //確保用戶猜的數字在1到100之間
if (toGuess == inputNum){
printf("恭喜您!猜對了!!!\n");
break;
}
else if (toGuess < inputNum){
printf("不好意思,您猜大了\n");
}
else{
printf("不好意思,您猜小了\n");
}
}
else{
printf("您的輸入有誤!請輸入1到100之間的數字!\n");
}
}
}
int main(){
srand((unsigned int)time(0));// srand函式,見上面解釋
//獲取時間戳:time(0)是time(NULL)的另一種寫法,表示只通過回傳值獲取時間值
while (1){
int choice = menu();//通過目錄決定游戲走向,注意輸入錯誤形式需提醒!
if (choice == 0){
printf("您已退出猜數字游戲\n");
break;
}
else if (choice == 1){
game();
}
else{
printf("您輸入的形式有誤!請輸入0或1!!\n");
}
}
return 0;
}
以上為本次博客全部內容,歡迎大家在評論區指正探討~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/279673.html
標籤:其他
上一篇:普通大三的游戲開發實習
下一篇:微信小程式——推箱子小游戲
