C語言詳細(xì)實(shí)現(xiàn)猜拳游戲流程_第1頁
C語言詳細(xì)實(shí)現(xiàn)猜拳游戲流程_第2頁
C語言詳細(xì)實(shí)現(xiàn)猜拳游戲流程_第3頁
C語言詳細(xì)實(shí)現(xiàn)猜拳游戲流程_第4頁
C語言詳細(xì)實(shí)現(xiàn)猜拳游戲流程_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論