石頭、剪刀、布遊戲
/*石頭、剪刀、布是孩子們中很流行的乙個遊戲。在這個遊戲中,孩子們用手表示石頭、剪刀、布。伸手表示布、拳頭表示石頭、伸出兩根手指表示剪刀。孩子們面對面地數到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 ...