猜數字遊戲(C語言)

遊戲:猜數字
電腦將生成一個1到100之內的隨機數
玩家將猜那個隨機數的大小是多少
若猜的數要大於隨機數時將提示猜大了
猜的數要小於隨機數時將提示猜小了
直到猜對爲止,遊戲結束
可選擇再來一盤或退出遊戲
猜數字遊戲(C語言)
代碼實現:
一,首先選擇開始遊戲或退出遊戲

創建一個菜單
讓玩家能夠選擇開始或退出
猜數字遊戲(C語言)
假設玩家選擇1.play則遊戲開始
若玩家選擇0.exit則退出遊戲
選擇開始:
猜數字遊戲(C語言)
利用do while循環使代碼至少執行一次
防止玩家輸入除1.0之外的其餘值後遊戲出現bug
當玩家輸入除1.0之外的其餘值後會提示輸入錯誤將從新選擇
當玩家選擇1時提示玩家遊戲開始
當玩家選擇0時提示玩家遊戲結束,退出遊戲ide

二,實現遊戲game()函數
電腦將利用時間戳隨機生成一個會變化的隨機數
猜數字遊戲(C語言)
C語言中提供了一個函數專門用來生成隨機數
rand();
此函數將隨機生成一個0-32767之間的一個數
猜數字遊戲(C語言)
int rand(void)
rand 函數使用時不須要傳遞參數;可是會返回一個int類型的隨機值
而且因爲引用的是庫函數因此須要引有文件 #include<stdlib.h>
猜數字遊戲(C語言)
用變量ret接收rand函數的返回值,這個返回值就是這個隨機數
注意:
生成隨機數每次遊戲生成的隨機數將相同
猜數字遊戲(C語言)
在調用rand這個函數以前要先調用srand函數
猜數字遊戲(C語言)
猜數字遊戲(C語言)
void srand(unsigned int seed);用來設置一系列的隨機數
須要傳遞一個無符號的整形設置
不會產生返回值
若是隨便輸入一個不變的數字的話,每次遊戲生成隨機數都將不變
猜數字遊戲(C語言)
猜數字遊戲(C語言)
猜數字遊戲(C語言)
猜數字遊戲(C語言)
因此srand裏面須要設置一個隨機值
時間每秒都在變化
因此使用時間戳來設置隨機值
猜數字遊戲(C語言)
猜數字遊戲(C語言)
猜數字遊戲(C語言)
使用time_t time(time_t timer);函數獲取計算機時間
不過它是以time_t的形式返回的
time_t本質上是一個長整形
須要傳遞(time_t
timer)的是timer的地址
須要引頭文件#include<time.h>
猜數字遊戲(C語言)
將time函數的返回值強制類型轉化爲unsigned int
NULL爲空指針
猜數字遊戲(C語言)
注意:不要每次都設置時間起止點,時間相近時,生成的隨機數也相近
猜數字遊戲(C語言)
因此只須要在開始遊戲的時候設置一次隨機數的時間起點就能夠了
猜數字遊戲(C語言)
生成的隨機數有點太大了
建議生成一個1-100之間的隨機數
猜數字遊戲(C語言)
將生成的隨機數模上100,那麼這個隨機數將在1-99之間,而後再加1,將這個隨機數設置在1-100之間了
猜數字遊戲(C語言)
玩家開始猜數字
猜數字遊戲(C語言)
若是玩家輸入的數字比隨機數大,電腦將提示猜大了,而後接着猜
若是玩家輸入的數字比隨機數小,電腦將提示猜小了,而後接着猜
若是玩家輸入的數字與隨機數相同,將不須要繼續猜了,要退出循環,遊戲結束
來到main函數switch 中的case1:game();語句 的後面,break;跳出switch
來到do while()循環處,從新開始選擇遊戲的繼續或結束,
能夠選擇繼續遊戲或退出遊戲
代碼
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("############################\n");
printf("#### 1.play 0.exit ######\n");
printf("############################\n");
}
void game()
{
//生成一個隨機數
int ret = 0;
//拿時間戳來設置來設置隨機數
//time_t time(time_t,*timer)
//time_t
//srand(unsigned int (time_t(NULL))
ret = rand()%100+1;//生成了100之內的隨機數
//printf("%d\n", ret);
//2.開始猜數字
int guss = 0;
while ( 1 )
{
printf("請猜數字:");
scanf("%d", &guss);
if (guss > ret)
{
printf("猜大了\n");
}
else if (guss < ret)
{
printf("猜小了\n");
}
else
{
printf("恭喜,猜對了\n");
break;
}
}
}
int main()
{
srand((unsigned)time(NULL));
int input = 0;
do
{
menu();//菜單
printf("請輸入(1/0):");
scanf("%d", &input);
switch (input)
{
case 0:
{
printf("退出遊戲\n");
break;
}
case 1:
{
game();//猜數字遊戲
break;
}
default:
{
printf("選擇錯誤\n");
break;
}
}
} while (input);
return 0;
}函數

相關文章
相關標籤/搜索