剪刀 石頭 布遊戲

2021-08-26 13:54:37 字數 2867 閱讀 5924

石頭、剪刀、布遊戲

/*石頭、剪刀、布是孩子們中很流行的乙個遊戲。在這個遊戲中,孩子們用手表示石頭、剪刀、布。伸手表示布、拳頭表示石頭、伸出兩根手指表示剪刀。孩子們面對面地數到3,然後亮出各自的選擇。如果選擇是一樣的,表示平局,否則就用如下規則決定勝負。

布覆蓋石頭

石頭砸剪刀

剪刀剪碎布

現在我們把這個過程變成計算機和遊戲者之間的遊戲。遊戲的過程如下:遊戲者選擇出石頭、剪刀或布,計算機也隨機選擇乙個,評判結果,輸出結果,繼續遊戲,知道遊戲者選擇結束為止。

要解決這個問題,首先進行第一層分解。根據題意,main函式的執行過程如下:

while(使用者輸入!=退出)

顯示戰況;

從上述過程可以提取出第一層所需要的6個函式:

selection_by_play獲取使用者輸入

selection_by_machine獲取機器的選擇

compare評判結果

report報告結果

prn_game_status顯示目前戰況

prn_help顯示幫助資訊

為了提高程式的可讀性,我們定義兩個列舉型別:使用者合法輸入p_s_r和評判結果outcome.

定義如下:

enum p_s_s;

enum outcome;

模組劃分

1.主模組

2.獲取選擇模組

3.比較模組

4.輸出模組

各個模組的原始檔:

主模組(main.cpp)包括main函式

獲取選擇模組(select.cpp)包括selection_by_player和selection_bu_machine兩個函式

比較模組(compare.cpp)包括compare函式

輸出模組(print.cpp)包括所有和輸出的相關函式,有report、prn_game_status和prn_help函式

確定各函式原形:

p_r_s selection_by_player();

p_r_s selection_by_machine();

outcome compare(p_r_s, p_r_s);

void prn_help();

void report(outcome);

void prn_game_status();

包含的庫標頭檔案:

#include #include#include需要包含的標頭檔案:

為了解決一些型別的定義、符號常量和函式原形的宣告在程式中反覆出現多次,編譯器會認為某些符號被重複定義的問題。需要用到編譯預處理命令:

#ifndef 識別符號

……#endif

這個預處理命令表示,如果指定的識別符號沒有定義過,則執行後面的語句,直到#endif;

如果該識別符號已經定義過,則中間的這些語句都不執行。

標頭檔案有以下這樣的結構

#ifndef _name_h

#define _name_h

標頭檔案真正需要寫的內容

#endif

其中,_name_h是使用者選擇的代表這個標頭檔案的乙個標識。

*///**清單 石頭、剪刀、布遊戲程式的標頭檔案

//檔案:p_r_s.h

//本檔案定義了兩個列舉型別,宣告了本程式包括的所有函式原形

#ifndef p_r_s_h

#define p_r_s_h

#include#include//rand_max是符號常量定義在cstdlib庫內

#include//要用到系統時間

using namespace std;

//定義兩個列舉型別,提高可讀性

enum p_r_s ;

enum outcome ;

//所有函式的宣告

outcome compare(p_r_s player_choice,p_r_s machine_choice);//評判函式宣告

void prn_final_status(); //最終戰績

void prn_game_status(); //目前戰況

void prn_help(); //回到選擇介面

void report(outcome result); //報告結果並記錄資訊

p_r_s selection_by_machine(void);//獲取使用者輸入

p_r_s selection_by_player(void); //獲取機器選擇

#endif

//主模組的實現

#include"p_r_s.h"

int main()

prn_game_status(); //顯示目前戰況

return 0;

}//選擇模組的實現

#include"p_r_s.h"

p_r_s selection_by_machine()

return ((p_r_s)select);//返回計算機隨機選擇結果,要進行強制轉換型別為列舉型別p_r_s

}p_r_s selection_by_player() //玩家的選擇

return player_choice; //返回玩家的選擇

}//比較模組的實現

#include"p_r_s.h"

outcome compare(p_r_s player_choice,p_r_s machine_choice)

return result;

}//輸出模組的實現

#include"p_r_s.h"

int win_cnt=0,lose_cnt=0,tie_cnt=0;

void prn_game_status()

{ cout<

剪刀石頭布遊戲

結果 int rivalscore 0 對方分數 int myscore 0 本方分數 private void mainform load object sender,eventargs e private void mainform click object sender,eventargs e...

剪刀石頭布《靜態遊戲》

嘿嘿 實在是太無聊了 無聊時可以玩玩哦 自己可以把開始時的金幣重新設定或以輸入的形式 記得遊戲結束的判斷條件也改一下 include include include includeusing namespace std int wanjia,jiqi,aa,bb,con char ch 4 20 i...

石頭 剪刀 布小遊戲

先建立建立乙個遊戲規則 石頭 0 剪刀 1 布 2.贏的情況有三種,分別是 情況匹配 前減後贏差值 前減後輸差值 0贏1,1 1 1贏2,1 1 2贏0.2 2 hand input 石頭 剪刀 布,你要出哪乙個呢 if hand in 石頭 剪刀 布 if hand 石頭 hand 0 elif ...