c語言輕松實(shí)現(xiàn)猜數(shù)字小游戲
一、前言
在學(xué)習(xí)了循環(huán)、分支、和函數(shù)之后,可以寫一些簡單的小游戲來給自己的編程之路增添一份樂趣。不僅提升了編碼能力,還可以邊學(xué)邊玩,簡直妙哉妙哉!
二、游戲邏輯
1.打印選擇菜單(1.play、0.exit)
2.調(diào)用rand()函數(shù)生成隨機(jī)數(shù)
3.設(shè)置隨機(jī)數(shù)范圍
4.猜數(shù)字
5.判斷猜的大小
三、思維導(dǎo)圖

四、游戲過程

五、代碼分析
1.生成隨機(jī)數(shù)的方法

僅僅使用rand() 函數(shù)來生成隨機(jī)數(shù)是不行的,因?yàn)樗客嬉淮紊傻碾S機(jī)數(shù)都是相同的,即隨機(jī)數(shù)不隨機(jī),所以要通過srand()函數(shù),種下一個隨機(jī)種子,來產(chǎn)生隨機(jī)數(shù)。根據(jù)時(shí)間每時(shí)每刻都是變化的,可以用time()時(shí)間函數(shù)來產(chǎn)生種子。


這里time_t的類型就是 在C語言中被定義為長整型,而srand()函數(shù)的參數(shù)類型為unsigned int (無符號整形),所以使用時(shí)要強(qiáng)制類型轉(zhuǎn)換,而且**time()**函數(shù),不需要設(shè)置參數(shù),故用NULL代替。
2.設(shè)置隨機(jī)數(shù)范圍的方法
我們已經(jīng)讓系統(tǒng)隨機(jī)生成了一個隨機(jī)數(shù),因?yàn)橄到y(tǒng)生成的隨機(jī)數(shù)范圍太大,猜起來比較耗時(shí),我們先確定一個隨機(jī)數(shù)的范圍,在0–100之間。rand()%100+1,就可以得到0-100之間的隨機(jī)數(shù)。rand()%100得到的是1~99之間的隨機(jī)數(shù),再加上1就是1~100之間的隨機(jī)數(shù)了。
六、完整代碼
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("**************************\n");
printf("******* 1.play *******\n");
printf("******* 2.exit *******\n");
printf("**************************\n");
}
void game()
{
//猜數(shù)字游戲的實(shí)現(xiàn)
//1.生成隨機(jī)數(shù)
//rand函數(shù)返回了一個0-32767之間的隨機(jī)值
//時(shí)間- 時(shí)間戳
int ret = rand() % 100 + 1;
//%100的余數(shù)是0-99,然后+1,范圍就是1-100
//printf("%d\n",ret);
//2.猜數(shù)字
int guess = 0;
while (1)
{
printf("請猜數(shù)字:");
scanf("%d", &guess);
if (guess < ret)
{
printf("猜小了\n");
}
else if (guess > ret)
{
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("退出游戲\n");
break;
default:
printf("選擇錯誤,重新選擇\n");
break;
}
} while (input);
return 0;
}到此這篇關(guān)于c語言輕松實(shí)現(xiàn)猜數(shù)字小游戲的文章就介紹到這了,更多相關(guān)c語言猜數(shù)字游戲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言16進(jìn)制與ASCII字符相互轉(zhuǎn)換
大家好,本篇文章主要講的是C語言16進(jìn)制與ASCII字符相互轉(zhuǎn)換,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01
OpenGL實(shí)現(xiàn)不規(guī)則區(qū)域填充算法
這篇文章主要為大家詳細(xì)介紹了OpenGL實(shí)現(xiàn)不規(guī)則區(qū)域填充算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
C語言實(shí)現(xiàn)銷售管理系統(tǒng)設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)銷售管理系統(tǒng)設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
C語言循環(huán)隊(duì)列與用隊(duì)列實(shí)現(xiàn)棧問題解析
循環(huán)隊(duì)列又叫環(huán)形隊(duì)列,是一種特殊的隊(duì)列。循環(huán)隊(duì)列解決了隊(duì)列出隊(duì)時(shí)需要將所有數(shù)據(jù)前移一位的問題,本篇帶你一起看看循環(huán)隊(duì)列的問題和怎樣用隊(duì)列實(shí)現(xiàn)棧2022-04-04

