c語(yǔ)言輕松實(shí)現(xiàn)猜數(shù)字小游戲
一、前言
在學(xué)習(xí)了循環(huán)、分支、和函數(shù)之后,可以寫(xiě)一些簡(jiǎn)單的小游戲來(lái)給自己的編程之路增添一份樂(lè)趣。不僅提升了編碼能力,還可以邊學(xué)邊玩,簡(jiǎn)直妙哉妙哉!
二、游戲邏輯
1.打印選擇菜單(1.play、0.exit)
2.調(diào)用rand()函數(shù)生成隨機(jī)數(shù)
3.設(shè)置隨機(jī)數(shù)范圍
4.猜數(shù)字
5.判斷猜的大小
三、思維導(dǎo)圖
四、游戲過(guò)程
五、代碼分析
1.生成隨機(jī)數(shù)的方法
僅僅使用rand() 函數(shù)來(lái)生成隨機(jī)數(shù)是不行的,因?yàn)樗客嬉淮紊傻碾S機(jī)數(shù)都是相同的,即隨機(jī)數(shù)不隨機(jī),所以要通過(guò)srand()函數(shù),種下一個(gè)隨機(jī)種子,來(lái)產(chǎn)生隨機(jī)數(shù)。根據(jù)時(shí)間每時(shí)每刻都是變化的,可以用time()時(shí)間函數(shù)來(lái)產(chǎn)生種子。
這里time_t的類型就是 在C語(yǔ)言中被定義為長(zhǎng)整型,而srand()函數(shù)的參數(shù)類型為unsigned int (無(wú)符號(hào)整形),所以使用時(shí)要強(qiáng)制類型轉(zhuǎn)換,而且**time()**函數(shù),不需要設(shè)置參數(shù),故用NULL代替。
2.設(shè)置隨機(jī)數(shù)范圍的方法
我們已經(jīng)讓系統(tǒng)隨機(jī)生成了一個(gè)隨機(jī)數(shù),因?yàn)橄到y(tǒng)生成的隨機(jī)數(shù)范圍太大,猜起來(lái)比較耗時(shí),我們先確定一個(gè)隨機(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ù)返回了一個(gè)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("請(qǐng)猜數(shù)字:"); scanf("%d", &guess); if (guess < ret) { printf("猜小了\n"); } else if (guess > ret) { printf("猜大了\n"); } else { printf("恭喜你,猜對(duì)了\n"); break; } } } int main() { int input = 0; srand((unsigned int)time(NULL)); do { menu();//打印菜單 printf("請(qǐng)選擇:"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("退出游戲\n"); break; default: printf("選擇錯(cuò)誤,重新選擇\n"); break; } } while (input); return 0; }
到此這篇關(guān)于c語(yǔ)言輕松實(shí)現(xiàn)猜數(shù)字小游戲的文章就介紹到這了,更多相關(guān)c語(yǔ)言猜數(shù)字游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++實(shí)現(xiàn)基于EASYX庫(kù)掃描線算法
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)基于EASYX庫(kù)掃描線算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02C語(yǔ)言求解最長(zhǎng)公共子字符串問(wèn)題及相關(guān)的算法分析
最長(zhǎng)公共子字符串問(wèn)題即是求一個(gè)字符串在另一個(gè)字符串中出現(xiàn)的連續(xù)最多字符,這里我們來(lái)看一下面試中經(jīng)常出現(xiàn)的C語(yǔ)言求解最長(zhǎng)公共子字符串問(wèn)題及相關(guān)的算法分析2016-06-06純C語(yǔ)言:貪心Prim算法生成樹(shù)問(wèn)題源碼分享
這篇文章主要介紹了貪心Prim算法生成樹(shù)問(wèn)題源碼,有需要的朋友可以參考一下2014-01-01Matlab實(shí)現(xiàn)極坐標(biāo)堆疊柱狀圖的繪制
極坐標(biāo)堆疊圖也是風(fēng)玫瑰圖的常用形式,MATLAB的bar繪制的條形圖可以繪制成堆疊形式,但是并沒(méi)有一個(gè)自帶函數(shù)可以繪制極坐標(biāo)堆疊圖。本文將為大家提供Matlab繪制極坐標(biāo)堆疊柱狀圖的示例代碼,需要的可以參考一下2022-08-08C++string中的insert()插入函數(shù)詳解
這篇文章主要介紹了C++string中的insert()插入函數(shù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03