C語言實現(xiàn)簡單猜數(shù)字游戲
前言
對于c語言初學(xué)者來說用c語言實現(xiàn)猜數(shù)字游戲是基本的問題,本篇文章會細致的講解如何用代碼來實現(xiàn)猜數(shù)字游戲。希望讀者在閱讀本篇博客前學(xué)習(xí)玩分支與循環(huán)和最基本的c語言語法知識。
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、預(yù)期實現(xiàn)猜數(shù)字游戲的功能
1:什么是猜數(shù)字游戲
猜數(shù)字游戲顧名思義是電腦隨機生成一個數(shù)字,讓玩家來猜。如果沒猜對,電腦會提示玩家猜大了還是猜小了,玩家可以多次嘗試,直到玩家猜對了本次游戲就結(jié)束。
2:預(yù)期效果
在實現(xiàn)猜數(shù)字的基礎(chǔ)上,玩家如果覺得不過癮可以選擇再來一次,如果玩膩了,也可以選擇退出游戲
二、具體思路講解
1.總體思路
為了實現(xiàn)游戲的基本功能,我們應(yīng)該有一個游戲菜單,通過菜單玩家可以選擇是進入游戲還是退出游戲,且為了可以使該游戲可以反復(fù)玩,這個過程應(yīng)該是一個循環(huán),選擇退出游戲時就打破這個循環(huán)。為了使代碼具有條理性我們定義唯一的主函數(shù),然后按功能寫子函數(shù),讓每一個子函數(shù)都有其意義。綜上我們需要打印菜單模塊的一個子函數(shù)和游戲?qū)崿F(xiàn)(包括電腦生成隨機數(shù)和玩家可以循環(huán)多次猜數(shù)字的功能)的子函數(shù),不妨把是否選擇進入游戲放在主函數(shù)里。
2.菜單功能的實現(xiàn)
因為我們把選擇過程放在主函數(shù)里,所以菜單功能十分簡單。代碼示例如下
void menu() { printf("*****歡迎來到猜數(shù)字游戲*****\n"); printf("********1:進入游戲*********\n"); printf("********0:退出游戲*********\n"); printf("****************************\n"); }
3.主函數(shù)部分的實現(xiàn)
因為程序從主函數(shù)開始運行,到主函數(shù)結(jié)束時結(jié)束,所以主函數(shù)應(yīng)該起到搭建整個游戲基本框架的功能。主函數(shù)不僅要實現(xiàn)是否選擇進入游戲還應(yīng)該合理引用menu()和game()使整個程序形成有機的整體。
int main() { srand((unsigned)time(NULL));//定義一個隨機生成數(shù),注意不能把它放在循環(huán)語句中,否則會使生成的數(shù)字不夠隨機 int input = 0; do { menu(); printf("請輸入你的選擇:"); scanf("%d",&input); if (input == 1) { game();//選擇玩游戲則調(diào)用game()函數(shù)進行游戲功能的實現(xiàn) } else if (input == 0) { printf("游戲已經(jīng)退出"); break;//因為while判斷條件,所以此句非必須 } else { printf("您輸入的是無效指令,請重新輸入\n");//因為只有1和0才有意義,但玩家可能輸入其它數(shù)字,此處應(yīng)給提示 } } while (input != 0); return 0; }
4.游戲game()函數(shù)的代碼實現(xiàn)
在game()中我們要實現(xiàn)兩個功能1:電腦隨機生成一個1-100之間的隨機數(shù)。2:玩家進行猜數(shù)字游戲,其中c語言實現(xiàn)生成隨機數(shù)的原理復(fù)雜,需先定義一個隨機數(shù)生成起點,再用rand()函數(shù)進行生成隨機數(shù)。
代碼如下:
void game() { //1:實現(xiàn)1-100之間的隨機數(shù)的生成 int random_num = rand()%100+1;//rand()是隨機數(shù)生成函數(shù)需要搭配srand((unsigned)time(NULL))使用 //2:進入玩家猜數(shù)字環(huán)節(jié) while (1) { int guess = 0;//guess中儲存的是玩家猜測的數(shù)字 printf("請輸入猜測的數(shù)字:"); scanf("%d", &guess); if (guess < random_num) printf("猜小了\n"); else if (guess > random_num) printf("猜大了\n"); else { printf("恭喜你猜對了\n"); break;//為了防止死循環(huán),若猜對了應(yīng)打破循環(huán) } } }
其中g(shù)ame需引用的頭文件是#include<stdlib.h>
srand((unsigned)time(NULL))需引用的頭文件是#include<time.h>
5.總程序代碼
如下:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<time.h> //游戲規(guī)則 //1:電腦隨機生成一個1-100之間的數(shù)字 //2:玩家進行猜數(shù)字 電腦會提示猜大了或者猜小了直到玩家猜對游戲結(jié)束 //3:游戲可以重復(fù)玩,即玩家玩完一把后可選擇再玩一把或者是直接退出 void menu() { int input = 0; printf("*****歡迎來到猜數(shù)字游戲*****\n"); printf("********1:進入游戲*********\n"); printf("********0:退出游戲*********\n"); printf("****************************\n"); } void game() { //1:實現(xiàn)1-100之間的隨機數(shù)的生成 int random_num = rand()%100+1;//rand()是隨機數(shù)生成函數(shù)需要搭配srand((unsigned)time(NULL))使用 //2:進入玩家猜數(shù)字環(huán)節(jié) while (1) { int guess = 0;//guess中儲存的是玩家猜測的數(shù)字 printf("請輸入猜測的數(shù)字:"); scanf("%d", &guess); if (guess < random_num) printf("猜小了\n"); else if (guess > random_num) printf("猜大了\n"); else { printf("恭喜你猜對了\n"); break;//為了防止死循環(huán),若猜對了應(yīng)打破循環(huán) } } } int main() { srand((unsigned)time(NULL)); int input = 0; do { menu(); printf("請輸入你的選擇:"); scanf("%d",&input); if (input == 1) { game(); } else if (input == 0) { printf("游戲已經(jīng)退出"); break; } else { printf("您輸入的是無效指令,請重新輸入\n"); } } while (input != 0); return 0; }
三.常見錯誤
1.再game()中把隨機數(shù)語句段放在while循環(huán)中,導(dǎo)致在游戲過程中,每猜一次隨機數(shù)變化一次,導(dǎo)致如果第一次猜不對,就一直猜不對。
2.在game()中每次猜數(shù)字后if判斷條件寫錯,導(dǎo)致原本猜大了電腦顯示猜小了,原本猜小了顯示猜大了,這樣除非第一次猜對否則永遠猜不對。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
COLORREF,COLOR,RGB,CString的轉(zhuǎn)化總結(jié)分析
實際的軟件開發(fā)過程中,常需要用到非.net平臺的代碼。這時候就可能碰到ColorRef(也就是以int類型代表的顏色值或是以DWORD值表示的顏色)。這跟.net平臺下的顏色的相互轉(zhuǎn)換MS并沒有直接實現(xiàn)2013-09-09C++?RBTree紅黑樹的性質(zhì)與實現(xiàn)
紅黑樹是一種二叉搜索樹,但在每個結(jié)點上增加一個存儲位表示結(jié)點的顏色,可以是Red或Black;通過對任何一條從根到葉子的路徑上各個結(jié)點著色方式的限制,紅黑樹確保沒有一條路徑會比其他路徑長出倆倍,因而是平衡的2023-03-03C語言中回調(diào)函數(shù)和qsort函數(shù)的用法詳解
這篇文章主要為大家詳細介紹一下C語言中回調(diào)函數(shù)和qsort函數(shù)的用法教程,文中的示例代碼講解詳細,對我們學(xué)習(xí)C語言有一定幫助,需要的可以參考一下2022-07-07Matlab控制電腦攝像實現(xiàn)實時人臉檢測和識別詳解
人臉識別過程主要由四個階段組成:人臉檢測、圖像預(yù)處理、面部特征提取和特征識別。這篇文章主要介紹了如何使用MATLAB控制筆記本電腦的攝像頭,并進行實時人臉檢測和識別,需要的可以參考一下2022-10-10利用rapidjson實現(xiàn)解析嵌套的json的方法示例
今天小編就為大家分享一篇關(guān)于利用rapidjson實現(xiàn)解析嵌套的json的方法示例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-04-04C語言菜鳥基礎(chǔ)教程之單精度浮點數(shù)與雙精度浮點數(shù)
在C語言中,單精度浮點數(shù)(float)和雙精度浮點數(shù)(double)類型都是用來儲存實數(shù)的,雙精度是用記憶較多,有效數(shù)字較多,數(shù)值范圍較大。2017-10-10