移動(dòng)網(wǎng)站開發(fā)教程下載重慶seo報(bào)價(jià)
目錄
Everyday English
前言
實(shí)戰(zhàn)1——猜數(shù)游戲
綜合指標(biāo)
游玩方法
代碼實(shí)現(xiàn)
最終代碼
試玩時(shí)間?
必勝策略
具體演示
結(jié)尾
Everyday English
All good things come to those who wait.
時(shí)間不負(fù)有心人
前言
今天是2024年的第一天,新一年,新氣象,新起點(diǎn),在這也祝愿大家:
工作順利,身體健康。好好學(xué)習(xí),天天向上!
實(shí)戰(zhàn)1——猜數(shù)游戲
綜合指標(biāo)
學(xué)了10天左右,是不是很想做一款小游戲,那么今天它來了!
猜數(shù)游戲是初學(xué)者很好的一個(gè)實(shí)戰(zhàn)項(xiàng)目,下面是它的全面分析:
編程難度:★★
有趣程度:★★
游戲難度:★★★
編程時(shí)間:推薦5min~12min
游玩方法
首先電腦會(huì)在1-100中隨機(jī)生成一個(gè)整數(shù),玩家需在1-100中猜一個(gè)數(shù)字,分三種情況討論。
1.玩家猜的數(shù)字>目標(biāo)數(shù)字,電腦說:“大了”
2.玩家猜的數(shù)字<目標(biāo)數(shù)字,電腦說:“小了”
3.玩家猜的數(shù)字=目標(biāo)數(shù)字,電腦說:“恭喜您,猜對(duì)啦!”
這時(shí)你可能會(huì)問:“這么簡單的游戲難度為什么是3顆星呢?”
真相只有一個(gè),那就是:
你只有7次猜的機(jī)會(huì)!
這下你可能就慌了,啊,100個(gè)數(shù)呢!就7次哪夠啊!!!
到底夠不夠呢,我們稍后揭曉。
代碼實(shí)現(xiàn)
原神,啟動(dòng)!Bi----------------
搞錯(cuò)了,重來!
代碼,啟動(dòng)!這下對(duì)了。
首先,電腦需要隨機(jī)生成一個(gè)1-100以內(nèi)的整數(shù),我們用key來保存這個(gè)隨機(jī)整數(shù):
srand(time(NULL));
int key=rand()%100+1;
大家可能還不知道隨機(jī)數(shù)是怎么用的,我來教大家一下。程序中的第一行是播隨機(jī)數(shù)種子,也稱“播種”,每次生成隨機(jī)數(shù)時(shí)帶上他就好了。
第二行中的rand就是一個(gè)隨機(jī)函數(shù),我們想一想一個(gè)數(shù)對(duì)100取余,結(jié)果只可能是:0,1,2......,99。
可我們想要的是1-100,所以我們可以讓每項(xiàng)都加一即可。
接著我們來分析一下如何實(shí)現(xiàn)玩家能猜7次數(shù),這里需要用到我們的for循環(huán)語句:
for(int i=1;i<=7;i++)
{//當(dāng)猜的數(shù)小于key時(shí)//當(dāng)猜的數(shù)大于key時(shí)//當(dāng)猜的數(shù)等于key時(shí)
}
每循環(huán)一次,玩家首先要去猜一個(gè)數(shù),我們說的三種情況都可以用簡單的if語句實(shí)現(xiàn):?
for(int i=1;i<=7;i++)
{int x;cin>>x;//當(dāng)猜的數(shù)小于key時(shí)if(x<key){cout<<"小了"<<endl;} //當(dāng)猜的數(shù)大于key時(shí)if(x>key){cout<<"大了"<<endl;} //當(dāng)猜的數(shù)等于key時(shí)if(x==key){cout<<"恭喜您,猜對(duì)啦!"<<endl;}
}
?最后加上7次內(nèi)沒猜對(duì)的提示語,并把代碼拼在一起,得到了以下程序:
#include<bits/stdc++.h>
using namespace std;
int main()
{srand(time(NULL));int key=rand()%100+1;for(int i=1;i<=7;i++){int x;cin>>x;//當(dāng)猜的數(shù)小于key時(shí)if(x<key){cout<<"小了"<<endl;} //當(dāng)猜的數(shù)大于key時(shí)if(x>key){cout<<"大了"<<endl;} //當(dāng)猜的數(shù)等于key時(shí)if(x==key){cout<<"恭喜您,猜對(duì)啦!"<<endl;return 0; } }cout<<"7次機(jī)會(huì)已用完,很遺憾,未猜對(duì)!"<<endl;
}
最終代碼
當(dāng)然我們還可以優(yōu)化一下提示語,便得到了最終代碼:
#include<bits/stdc++.h>
using namespace std;
int main()
{cout<<"猜數(shù)游戲(1-100)"<<endl;srand(time(NULL));int key=rand()%100+1;for(int i=1;i<=7;i++){int x;cout<<"請(qǐng)輸入一個(gè)數(shù)字:";cin>>x;//當(dāng)猜的數(shù)小于key時(shí)if(x<key){cout<<"小了"<<endl;} //當(dāng)猜的數(shù)大于key時(shí)if(x>key){cout<<"大了"<<endl;} //當(dāng)猜的數(shù)等于key時(shí)if(x==key){cout<<"恭喜您,猜對(duì)啦!"<<endl;return 0; } }cout<<"7次機(jī)會(huì)已用完,很遺憾,未猜對(duì)!"<<endl;cout<<"正確數(shù)字是:"<<key<<endl;return 0;
}
試玩時(shí)間?
做完程序大家一定要自己玩一玩看看有沒有什么錯(cuò)誤。
我的運(yùn)氣有億點(diǎn)點(diǎn)“好”,大家趕緊去試試吧!
必勝策略
悄悄告訴你,這個(gè)游戲也有必勝策略哦!
這個(gè)策略有個(gè)好聽的名字叫——二分法
顧名思義,每次猜區(qū)間的一半,那我們先計(jì)算一下,利用二分法第一次該猜幾呢?
對(duì)了是50!如果計(jì)算機(jī)說小了又該猜幾呢?
對(duì)了是75!(100-50)÷2+50=75!
注意:除不盡的話四舍五入!
具體演示
?
所以,如果你想有趣一點(diǎn),加點(diǎn)運(yùn)氣成分的話,
你可以把猜的次數(shù)調(diào)成6次,或者更少!
結(jié)尾
想不到吧,一個(gè)小小的猜數(shù)游戲都被我們玩得那么細(xì),如果你不介意的話,能否給我點(diǎn)一個(gè)小小的贊或者評(píng)論支持一下呢?
最后認(rèn)識(shí)一下,我是愛編程的小芒果,一個(gè)愛編程的小學(xué)生,我們2024年見!