




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第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語言中被定義為長(zhǎng)整型,而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)績(jī)信息。
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 付費(fèi)會(huì)員特色活動(dòng)方案
- 仙桃拍照活動(dòng)方案
- 代發(fā)薪單位活動(dòng)方案
- 代表先行活動(dòng)方案
- 代賬公司轉(zhuǎn)介紹活動(dòng)方案
- 以往節(jié)日促銷活動(dòng)方案
- 企業(yè)中秋晚會(huì)活動(dòng)方案
- 企業(yè)下沉活動(dòng)方案
- 企業(yè)公司團(tuán)建策劃方案
- 企業(yè)減重達(dá)人活動(dòng)方案
- 古代武舉考試試題及答案
- 《社會(huì)保險(xiǎn)政策解讀》課件
- 兒童言語康復(fù)試題及答案
- 2025-2030中國藍(lán)莓市場(chǎng)銷售策略分析與發(fā)展前景研究研究報(bào)告
- 廣東省深圳市龍華區(qū)2024年中考道德與法治二模試卷(含答案)
- 人才梯隊(duì)建設(shè)的重要性計(jì)劃
- 行吊操作安全培訓(xùn)
- 第三代半導(dǎo)體材料的應(yīng)用現(xiàn)狀與未來展望
- 2025年云南祿勸國有資本投資開發(fā)集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- GB/T 6433-2025飼料中粗脂肪的測(cè)定
- (2025春)部編版七年級(jí)語文下冊(cè)全冊(cè)教案 (新版本)
評(píng)論
0/150
提交評(píng)論