




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 大型活動(dòng)安全審批制度2025年實(shí)施與責(zé)任追究流程
- 婦女節(jié)抽獎(jiǎng)集贊活動(dòng)方案
- 學(xué)校慈善游戲活動(dòng)方案
- 學(xué)校護(hù)河志愿者活動(dòng)方案
- 奔向新年活動(dòng)方案
- 學(xué)前聯(lián)盟活動(dòng)方案
- 娛樂圈公司策劃方案
- 學(xué)校三幫扶活動(dòng)方案
- 婦女節(jié)詩詞征集活動(dòng)方案
- 女神節(jié)線上推廣活動(dòng)方案
- 2023年天河區(qū)中小學(xué)生游泳比賽成績冊(cè)
- 氣功修煉十奧妙
- 可定的療效與安全性
- 電力電子技術(shù)第五版(王兆安)課件全
- QB∕T 2080-2018 高回彈軟質(zhì)聚氨酯泡沫塑料
- 工程機(jī)械設(shè)備保險(xiǎn)附加第三者責(zé)任保險(xiǎn)條款
- 醫(yī)院感染知識(shí)培訓(xùn)記錄范文(精選6篇)
- 日周月安全檢查記錄表
- 上海電動(dòng)汽車充電設(shè)施建設(shè)管理暫行規(guī)定
- 100道結(jié)構(gòu)力學(xué)彎矩圖
- 鋼結(jié)構(gòu)設(shè)計(jì)圖中的焊接符號(hào)標(biāo)注大全(圖)
評(píng)論
0/150
提交評(píng)論