哈哈,來更新自己的博客啦:
今天給大家用C語言實作一個猜數字的游戲,雖然可能對大家來說這個猜數字游戲有點簡單的不能再簡單,但是因為本人還是處于一個菜鳥的階段嘛,感覺能實作這樣一個小程式就好開心的哈,如果哪里有什么錯誤希望大家都給指出來,我好積極的改進進步,后面的話那咱們就開始吧!
需求:
a.寫一個猜數字游戲
b.自動產生一個1-100的亂數
c.猜數字
d.猜對了,就恭喜你,游戲結束
e.猜錯了,會告訴猜大的了,還是猜小了,繼續猜,直到猜對
f.游戲可以一直玩,除非退出游戲
首先要寫出我們的主函式:

這個游戲呢我們要是想玩完一把再玩一把,并且最開始就可以玩游戲,我們就要用到do while回圈,
do while回圈

do while回圈這個結構里面怎么寫呢?首先我們需要列印一個選單,我們用一個函式來列印,這個函式叫menu(),這個函式不是庫函式,我們要自己實作這個函式,列印一個簡易的選單,那我們來實作一下,

有了選單:1叫玩游戲,0叫退出游戲,那我們肯定要玩嘛,那我們就需要讓用戶選擇(提示用戶請選擇),用print函式,讓用戶輸入一個值選擇,就要用scanf函式,這個時候用戶可能選1,也可能選0,也有可能選的不是1也不是0,那我們這邊的話要判斷一下,這就要用到swtich陳述句,那我們來實作一下,

input呢是輸入的意思,如果你選擇1呢,就會猜數字,選擇0呢就退出游戲,選擇其他值呢就重新開始,while回圈的條件為什么input呢,如果你選擇0退出游戲不玩了,input就為0,為0的話while回圈就為假就會跳出游戲,如果你選擇1,input是1為真回圈就可以再來一次,如果你選擇其他的值比如是5,就會提示你選擇錯誤請重新選擇,因為input是5,所以也可以再重新選擇,現在我們測驗一下列印的效果,

真正的猜數字不可能就是這么簡單的一個程序,不可能一句話(猜數字)就決定了,只是讓大家看一下這個程式的邏輯,接下來我們來實作真的函式,把printf(“猜數字”)刪掉,我們來用game()函式來實作這個猜數字程序,
首先我們猜數字得有數字,要先生成亂數,接下來第二部才是猜數字,怎么生成亂數呢,亂數有一個庫函式rand,它叫生成亂數,這個函式怎么用呢:rand()它的引數為無參,回傳型別是int,那它回傳的就是一個亂數了,我們來測驗一下,


但是呢,有一個問題,測驗一次后關掉我們重新在測驗一次得到的值和第一次是一樣的,這樣的話玩完一局再玩一局就和第一局出現的數字是完全一樣的了,那還怎么能重復玩呢,所以說這個方法是不對的,
RADN_MAX = ox7fff = 32767
rand函式回傳的是一個隨機整數,是0-RADN_MAX的范圍(0-32767之間的數字),
呼叫rand函式之前還要呼叫sand函式來設定亂數的生成器
sand函式的引數是一個整數
現在我呼叫這個函式看看效果



這是sand函式給的引數100 和 200的效果,所以如果我們給的是一個可變化的量,就能產生隨機的數字,這個可變化的量就是時間,我們就把時間戳傳進去,時間戳就是一個時間轉換出來的數字.這里就要用到了time函式,我們把time函式傳進去,但是不用time函式的引數給它一個空值NULL,因為sand需要一個unsigned int型別的引數,所以我們把time函式強制型別轉換,如下:

現在我們來看一下效果:

因為我們求的是1-100之間的亂數:所以我們要rand函式%100加1,因為%100得到的是0-99之間的數字,所以加1范圍就成了1-100.現在我們再來看:


亂數有了之后緊接著猜數字,這里我們用whiie回圈,while(1)就死回圈這么猜,每一次猜數字都提示一下printf,猜數字的時候需要輸入一個值csanf,猜的數字我們要存起來,所以要定義一個變數,guess,guess就是我們要猜的那個值變數,如果我們猜的guess這個值比隨機值小,我們就說猜小了,如果比隨機值大,我們就說猜大了,直到猜對數字然后恭喜你,猜對了,猜對了之后就不要猜了我們break跳出去,來看一下最后的代碼和效果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/392271.html
標籤:其他
