




版權(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;//玩家手勢
intcomp=0;//計(jì)算機(jī)手勢
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海視覺藝術(shù)學(xué)院《事業(yè)啟航》2023-2024學(xué)年第一學(xué)期期末試卷
- 泰山科技學(xué)院《市場營銷學(xué)B》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津市寶坻區(qū)普通高中2025屆高三下期末質(zhì)量調(diào)研(一模)英語試題含解析
- 遼寧省沈陽市四校協(xié)作體2025年高三5月階段性教學(xué)質(zhì)量檢測試題語文試題理含解析
- 2021-2022學(xué)年甘肅省白銀市高二上學(xué)期期末語文試題
- 江西省南昌市重點(diǎn)高中2025年高三第二次月考試卷含解析
- 那曲地區(qū)聶榮縣2024-2025學(xué)年六年級(jí)下學(xué)期小升初數(shù)學(xué)試卷含解析
- 喀什理工職業(yè)技術(shù)學(xué)院《橋梁施工技術(shù)A》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年網(wǎng)絡(luò)營銷師職業(yè)資格考試試卷及答案
- 2025年醫(yī)療衛(wèi)生執(zhí)業(yè)考試試卷及答案
- 財(cái)務(wù)指標(biāo)分析試題及答案
- 2025至2030中國鴨脖子市場營銷策略與發(fā)展前景趨勢研究報(bào)告
- 山東省德州市陵城區(qū)2024-2025學(xué)年下學(xué)期期中考試七年級(jí)數(shù)學(xué)試題(含答案)
- 鄉(xiāng)村振興面試題及答案
- 2025廣東高考:歷史必考知識(shí)點(diǎn)總結(jié)
- 剪輯考試試題及答案
- 火鍋店服務(wù)員接待流程解析
- 2025年上半年福建福州廣播電視臺(tái)招聘重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解
- 高中政治經(jīng)濟(jì)主觀題材料對(duì)應(yīng)術(shù)語總結(jié)
- 2025年金融數(shù)學(xué)考試試題及答案
- 2024年安徽省公務(wù)員【申論】考試真題及答案-(A卷+B卷+C卷)三套
評(píng)論
0/150
提交評(píng)論