版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第C語言詳細(xì)實(shí)現(xiàn)猜拳游戲流程目錄一、游戲邏輯二、思維導(dǎo)圖三、游戲過程四、代碼分析1.設(shè)置隨機(jī)數(shù)的方法2.設(shè)置計(jì)算機(jī)出拳的方法3.判斷輸贏的方法4.玩家猜拳五、完整代碼
一、游戲邏輯
1.打印選擇菜單(1.play,0.exit)
2.提示玩家0、1、2分別代表石頭、剪刀、布
3.設(shè)置與計(jì)算機(jī)博弈次數(shù)
4.為計(jì)算機(jī)設(shè)置出拳(調(diào)用rand()函數(shù)生成0、1、2其中一個(gè)隨機(jī)數(shù))
5.玩家出拳
6.判斷輸贏
7.展示玩家和計(jì)算機(jī)出的拳
8.若退出游戲展示玩家勝負(fù)與平局信息
二、思維導(dǎo)圖
三、游戲過程
四、代碼分析
1.設(shè)置隨機(jī)數(shù)的方法
僅僅使用rand()函數(shù)來生成隨機(jī)數(shù)是不行的,因?yàn)樗客嬉淮紊傻碾S機(jī)數(shù)都是相同的,即隨機(jī)數(shù)不隨機(jī),所以要通過srand()函數(shù),種下一個(gè)隨機(jī)種子,來產(chǎn)生隨機(jī)數(shù)。根據(jù)時(shí)間每時(shí)每刻都是變化的,可以用time()時(shí)間函數(shù)來產(chǎn)生種子。
這里time_t的類型就是在C語言中被定義為長整型,而srand()函數(shù)的參數(shù)類型unsignedint(無符號(hào)整形),所以使用時(shí)要強(qiáng)制類型轉(zhuǎn)換,而且**time()**函數(shù),不需要設(shè)置參數(shù),故用NULL代替。
2.設(shè)置計(jì)算機(jī)出拳的方法
comp=rand()%3;
調(diào)用rand()函數(shù)%3就可以得到有個(gè)0~2之間的數(shù)值
3.判斷輸贏的方法
據(jù)圖可以看出只需要判斷(human-comp+3)%3的值是0、1還是2就可以判斷是平局、計(jì)算機(jī)贏還是電腦贏。
代碼示例:
voiddisp_result(is_winer)
switch(is_winer)
case0:
printf("平局\n");
draw++;//平局次數(shù)加1
break;
case1:
printf("計(jì)算機(jī)贏\n");
lose++;//失敗次數(shù)加1
break;
case2:
printf("玩家贏\n");
win++;//獲勝次數(shù)加1
break;
}
is_winer中存放的是(human-comp+3)%3的值,利用switch語句判斷其結(jié)果,再輸出對(duì)應(yīng)的語句。變量draw、lose、win是用來統(tǒng)計(jì)玩家戰(zhàn)績信息。
4.玩家猜拳
控制玩家輸入的范圍是0~2之間的數(shù)值
倘若玩家輸入的數(shù)值不是0~2之間的,程序就無法正常運(yùn)行了,所以要控制范圍。
可以利用dowhile循環(huán)來達(dá)到此目的。
代碼示例:
do
scanf("%d",human);//玩家出拳
printf("\n");
if(human0||human2)
printf("輸入錯(cuò)誤,重新輸入\n");
is_winer=(human-comp+3)%3;
disp_result(is_winer);//判斷輸贏的函數(shù)
Dishumanplayer(human);//展示玩家出的拳
Discomplayer(comp);//展示計(jì)算機(jī)出拳
}while(human0||human//控制玩家輸出范圍是0~2
if語句的作用是用來當(dāng)玩家輸入的數(shù)值超過了范圍時(shí),對(duì)其進(jìn)行提示輸入錯(cuò)誤。
五、完整代碼
#includestdio.h
#includetime.h
#includestdlib.h
intdraw=0;//統(tǒng)計(jì)平局?jǐn)?shù)
intlose=0;//統(tǒng)計(jì)失敗數(shù)
intwin=0;//統(tǒng)計(jì)獲勝數(shù)
inthuman=0;//玩家手勢(shì)
intcomp=0;//計(jì)算機(jī)手勢(shì)
intis_winer=0;//判斷勝負(fù)
voidmenu()
printf("****************************************\n");
printf("***************猜拳游戲***************\n");
printf("****************************************\n");
printf("***************1.play****************\n");
printf("***************0.exit****************\n");
printf("****************************************\n");
voidDisplayer(intcomp,inthuman)//展示計(jì)算機(jī)和玩家出拳的函數(shù)
printf("計(jì)算機(jī)出的是:");
switch(comp)
case0:
printf("石頭\n");
break;
case1:
printf("剪刀\n");
break;
case2:
printf("布\n");
break;
printf("玩家出的是:");
switch(human)
case0:
printf("石頭\n");
break;
case1:
printf("剪刀\n");
break;
case2:
printf("布\n");
break;
//判斷輸贏
voiddisp_result(is_winer)
switch(is_winer)
case0:
printf("平局\n");
draw++;//平局次數(shù)加1
break;
case1:
printf("計(jì)算機(jī)贏\n");
lose++;//失敗次數(shù)加1
break;
case2:
printf("玩家贏\n");
win++;//獲勝次數(shù)加1
break;
voidgame()
printf("(0)-石頭,(1)-剪刀,(2)-布\n");
printf("猜拳游戲開始!!!\n");
intnumber=0;//猜拳次數(shù)
printf("請(qǐng)選擇猜拳次數(shù):");
scanf("%d",number);
while(number)
comp=rand()%3;//計(jì)算機(jī)出拳
printf("玩家出拳:");
scanf("%d",human);//玩家出拳
printf("-----------猜拳游戲-------------\n");
if(human0||human2)
printf("輸入錯(cuò)誤,重新輸入\n");
is_winer=(human-comp+3)%3;
disp_result(is_winer);//判斷輸贏的函數(shù)
Displayer(comp,human);//展示出拳
}while(human0||human//控制玩家輸出范圍是0~2
number--;
intmain()
srand((int)time(NULL));
intinput=0;
menu();
printf("選擇玩游戲還是退出游戲!!!\n");
printf("請(qǐng)選擇:");
scanf("%d",input);
switch(input)
case1:
game();
break;
case0:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生產(chǎn)科科長考試題及答案
- 生理學(xué)輸血試題及答案
- 瑞昌小學(xué)畢業(yè)考試題目及答案
- 輔警制度培訓(xùn)課件
- 2026 年初中英語《語法填空》專項(xiàng)練習(xí)與答案 (100 題)
- 2026年深圳中考語文閱讀提分專項(xiàng)試卷(附答案可下載)
- 游戲題目及答案大全
- 2026年深圳中考數(shù)學(xué)中等生提分試卷(附答案可下載)
- 基本邏輯考題題庫及答案
- 2026年深圳中考?xì)v史考場實(shí)戰(zhàn)模擬試卷(附答案可下載)
- 型鋼斜拋撐支護(hù)方案
- 高一下學(xué)期期中語文試題匯編:寫作
- 高中期末家長會(huì)
- 2023年度國家社科基金一般項(xiàng)目申請(qǐng)書(語言學(xué))立項(xiàng)成功范本,特珍貴
- 風(fēng)機(jī)系統(tǒng)巡檢內(nèi)容及標(biāo)準(zhǔn)
- 新生兒高血糖護(hù)理課件
- 熱食類食品制售管理制度
- 香精概論第四章-芳香療法課件
- 車輛考核制度6篇
- JJF 1487-2014超聲波探傷試塊校準(zhǔn)規(guī)范
- GB/T 39253-2020增材制造金屬材料定向能量沉積工藝規(guī)范
評(píng)論
0/150
提交評(píng)論