剪刀石頭布說明書
摘要:本文主要介紹利用C++高級(jí)語言實(shí)現(xiàn)石頭剪子布游戲的編輯和運(yùn)行。通過 Visual Studio 2017 軟件進(jìn)行石頭剪子布游戲程序的編譯,確定模塊之間關(guān)系及各模塊功能,設(shè)計(jì)一個(gè)簡(jiǎn)單的操作界面實(shí)現(xiàn)石頭剪子布游戲,。
石頭剪子布游戲系統(tǒng)通過C++高級(jí)語言進(jìn)行編程,并設(shè)計(jì)了簡(jiǎn)單明了的操作界面,為用戶提供更好的操作體驗(yàn),更直接而充分的掌握本程序的一些應(yīng)用和功能。通過直觀的方式,最終實(shí)現(xiàn)C++設(shè)計(jì)的應(yīng)用程序——石頭剪子布游戲。本次課設(shè)所做程序雖然只是一個(gè)簡(jiǎn)單的C++手石頭剪子布游戲程序,但是基本的應(yīng)用功能都已具備,可以更好的用在實(shí)際應(yīng)用中。
第1章 軟件設(shè)計(jì)內(nèi)容
1.1設(shè)計(jì)內(nèi)容
1.2 軟件功能說明
1.2.1 功能分析說明圖
1.2.2 各項(xiàng)功能說明
第2章 軟件設(shè)計(jì)環(huán)境與原理
2.1 設(shè)計(jì)環(huán)境與模塊的劃分
2.1.1 軟件設(shè)計(jì)環(huán)境
2.1.2 軟件模塊的劃分
2.2 軟件設(shè)計(jì)主要原理
2.2.1 采用的主要數(shù)據(jù)結(jié)構(gòu)類型
2.2.2 各個(gè)模塊之間的調(diào)用關(guān)系和數(shù)據(jù)儲(chǔ)存格式說明
2.2.3 主要流程圖
第3章 軟件的設(shè)計(jì)過程
3.1 各軟件模塊之間的調(diào)用方式
3.2 軟件中實(shí)現(xiàn)各項(xiàng)功能的函數(shù)與程序代碼
第4章 設(shè)計(jì)結(jié)果與分析
4.1軟件使用結(jié)果
總結(jié)
致謝
附錄
第1章 軟件設(shè)計(jì)內(nèi)容
1.1 設(shè)計(jì)內(nèi)容完成一個(gè)經(jīng)典的小游戲設(shè)計(jì):錘頭剪刀和布。設(shè)計(jì)內(nèi)容如下: 1、玩家通過鍵盤輸入字符h、s、c. h表示錘子,s表示剪刀,c表示布。如果玩家輸入的字符和電腦隨機(jī)選擇的字符一致,則表示平局。如果不一致,則按照錘子勝剪刀、剪刀勝布、布勝錘子的規(guī)則決出勝負(fù)。 2、如果是兩個(gè)游戲玩家對(duì)戰(zhàn),則先出的玩家,其輸入的符號(hào)需要隱藏。 然后決出勝負(fù)。 3、有局?jǐn)?shù)選擇功能: 三局兩勝、五局三勝等。 4、統(tǒng)計(jì)輸贏的次數(shù)
1.2 軟件功能說明
1.2.1 功能分析說明圖該軟件功能分析說明圖如1-2-1所示:
0.png (6.47 KB, 下載次數(shù): 85)
下載附件
2018-12-13 04:14 上傳
圖:1-2-1 1.2.2 各項(xiàng)功能說明(1)游戲運(yùn)行入口: 這部分的功能主要包括游戲規(guī)則及操作說明、選擇游戲模式和進(jìn)行游戲。 (2)游戲規(guī)則及操作說明: 游戲規(guī)則:在這個(gè)游戲中,h表示石頭,s表示剪刀,c表示布,r表示查看對(duì)局結(jié)果,p表示查看操作說明,i表示查看游戲規(guī)則,q表示退出游戲。若兩個(gè)玩家出的的選擇相同,那么這一句就是平局。否則,石頭打剪刀,布包石頭,剪刀剪布,這個(gè)游戲一直重復(fù)到玩家退出為止。 (3)進(jìn)入游戲: 進(jìn)入游戲有兩個(gè)選擇:1、人機(jī)模式,2、雙人模式。 (4)選擇下續(xù)操作: 即玩家再次出剪刀石頭布。 (5)獲得隨機(jī)選擇: 此項(xiàng)功能是電腦隨機(jī)出剪刀石頭布。 (6)判斷輸贏。 選擇次項(xiàng)功能后,根據(jù)前面出的剪刀石頭布來判斷輸贏。 (7)顯示對(duì)局結(jié)果。
第2章 軟件設(shè)計(jì)環(huán)境與原理
2.1 設(shè)計(jì)環(huán)境與模塊的劃分
2.1.1 軟件設(shè)計(jì)環(huán)境Visual Studio 2017 2.1.2 軟件模塊的劃分該軟件主要組成模塊和各個(gè)模塊之間的調(diào)用關(guān)系如圖2-1:
0.png (6.53 KB, 下載次數(shù): 106)
下載附件
2018-12-13 04:14 上傳
圖:2-1 2.2 軟件設(shè)計(jì)主要原理
2.2.1 采用的主要數(shù)據(jù)結(jié)構(gòu)類型該程序采用的是結(jié)構(gòu)體類型來出剪刀石頭布,如下所述。 包含的庫(kù)函數(shù)有: #include "game.h" #include <string> #include <conio.h> 頭文件中主要內(nèi)容: void run(); // 游戲運(yùn)行入口 void initial(); // 游戲規(guī)則及操作說明 void instruct(); // 游戲規(guī)則 void helpp(); // 操作說明 void choose_mode(); // 選擇游戲模式 void play(); // 進(jìn)行游戲 choices choose(); // 選擇下續(xù)操作 choices get_random(); // 獲得隨機(jī)選擇 void show_result(int, int, int); // 顯示對(duì)局結(jié)果 void compare(choices, choices); // 判斷輸贏 2.2.2 各個(gè)模塊之間的調(diào)用關(guān)系和數(shù)據(jù)儲(chǔ)存格式說明各函數(shù)模塊之間的調(diào)用關(guān)系主要是主函數(shù)調(diào)用所有其它功能函數(shù)和菜單函數(shù),并利用循環(huán)使各個(gè)功能函數(shù)運(yùn)行完畢后都會(huì)回到菜單。 2.2.3 主要流程圖
圖:2-2-1游戲系統(tǒng)
圖2-2-2 總流程圖(見附件)
第3章 軟件的設(shè)計(jì)過程 3.1 各軟件模塊之間的調(diào)用方式程序中各個(gè)模塊之間的調(diào)用方式主要是通過文件的包含和函數(shù)的調(diào)用實(shí)現(xiàn)的,用文件的形式把各個(gè)函數(shù)分開,再用頭文件把它們包含進(jìn)來,使用主函數(shù)進(jìn)行調(diào)用。
第4章 設(shè)計(jì)結(jié)果與分析
4.1軟件使用結(jié)果在此,我們將把軟件使用過程寫出,并對(duì)此程序的一些細(xì)節(jié)和具體的操作方法加以說明,說明如下: - 將軟件進(jìn)行初始化。
- 進(jìn)入程序菜單,界面如圖4-1-1:
菜單界面 圖4-1-1 界面顯示的是“石頭剪刀布游戲說明及操作說明”。根據(jù)提示,玩家選擇需要的游戲類型。 - 輸入游戲類型:選擇菜單界面的第一個(gè)人機(jī)模式,按Enter鍵進(jìn)入此選擇界面,出現(xiàn)的界面如圖4-1-2:
圖4-1-2游戲模式 在這個(gè)界面給出了游戲模式的兩種選擇,也就是說,玩家可以選擇剪刀石頭布的兩種游戲模式:三局兩勝和五局三勝,如選擇三局兩勝,按Enter鍵進(jìn)入輸入界面,輸入界面如圖4-1-3: 圖4-1-3 玩家可以選擇按(h、s、c)來決定出石頭剪刀布(h表示石頭,s表示剪刀,c表示出布),重復(fù)此次操作三次,游戲結(jié)束。如果玩家對(duì)操作不是很熟悉,可以按p來查看操作說明,得到操作說明如圖4-1-4 如圖4-1-4 如果輸入的字符不在給定的范圍內(nèi),則界面上將顯示輸入的格式有誤,請(qǐng)重新輸入,才可以進(jìn)行下面的程序。,如圖4-1-5: 圖4-1-5 - 當(dāng)玩家完成三次猜拳機(jī)會(huì)時(shí),按Enter鍵進(jìn)入此界面,則出現(xiàn)的界面如圖4-1-6:
圖4-1-6 界面上的圖即顯示的是三次猜拳游戲后游戲結(jié)果,,可按任意鍵可退出此界面。
總結(jié)通過兩星期的C++語言程序設(shè)計(jì)實(shí)習(xí),不僅檢驗(yàn)了我所學(xué)習(xí)的知識(shí),也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。我們從中受益匪淺,并且對(duì)C++語言程序設(shè)計(jì)這一門課程有了更深一步的認(rèn)識(shí)。在實(shí)習(xí)中,我們可以把這學(xué)期所學(xué)的理論知識(shí)和實(shí)踐聯(lián)系起來,在所要開發(fā)的項(xiàng)目中漸漸成長(zhǎng)。雖然我們對(duì)這些C++語言知識(shí)運(yùn)用得還不是很熟練,但是相信我們也在滴水穿石地成長(zhǎng)起來。發(fā)現(xiàn)問題,提出問題,解決問題,使我們從不足之處出發(fā),尋找新的學(xué)習(xí)方向。 在實(shí)習(xí)中,我們?cè)O(shè)計(jì)了一個(gè)剪刀石頭布的小游戲,它有兩種模式:人機(jī)模式和玩家模式,在每種模式下又細(xì)分為兩種游戲類型:三局兩勝和五局三勝。在剛開始時(shí)游戲遇到了許許多多的小問題:如在選擇1、人機(jī)模式還是2、玩家模式時(shí),除了按1和2外,按其他鍵時(shí),會(huì)出現(xiàn)無限循環(huán)的現(xiàn)象,造成這種現(xiàn)象的原因時(shí):條件不完備。解決辦法時(shí)在這兩種模式下加入,輸入的格式不正確,請(qǐng)重新輸入。 課程設(shè)計(jì)是我們專業(yè)課程知識(shí)綜合應(yīng)用的實(shí)踐訓(xùn)練,著是我們邁向社會(huì),從事職業(yè)工作前一個(gè)必不少的過程.”千里之行始于足下”,通過這次課程設(shè)計(jì),我深深體會(huì)到這句千古名言的真正含義.我今天認(rèn)真的進(jìn)行課程設(shè)計(jì),學(xué)會(huì)腳踏實(shí)地邁開這一步,就是為明天能穩(wěn)健地在社會(huì)大潮中奔跑打下堅(jiān)實(shí)的基礎(chǔ). 提高了計(jì)算能力,,熟悉了規(guī)范和標(biāo)準(zhǔn),同時(shí)各科相關(guān)的課程都有了全面的復(fù)習(xí),獨(dú)立思考的能力也有了提高。
致謝經(jīng)過這兩周的實(shí)習(xí),我們獲得了許多在課堂上聽課而不能獲得的知識(shí),首先我們要感謝學(xué)校給我們安排的這次的C++語言程序設(shè)計(jì)實(shí)習(xí),然后我要感謝老師們對(duì)我們熱心的指導(dǎo)和幫助,是他們教會(huì)了我們?cè)鯓咏鉀Q問題的方法,這樣我們的軟件設(shè)計(jì)才會(huì)更加順利地進(jìn)行,并且充分掌握了設(shè)計(jì)程序的方法。我們還要感謝許多同學(xué)的幫助,他們的幫助對(duì)于我們來說也是必不可少的。總之,是有了他們的幫助,我們才能順利地完成軟件設(shè)計(jì),在這里我們要向他們說一句:謝謝,非常感謝!你們辛苦了!
3.2 軟件中實(shí)現(xiàn)各項(xiàng)功能的函數(shù)與程序代碼
一、頭文件中代碼
- #include <iostream>
- using namespace std;
-
- enum choices{
- hammer, // 石頭
- scissors, // 剪刀
- cloth // 布
- };
-
- // char choice_name[][9] = { "hammer", "scissors", "cloth" };
-
-
- class Game
- {
- public:
- Game(); // 構(gòu)造函數(shù)初始化數(shù)據(jù)成員
- void run(); // 游戲運(yùn)行入口
- void initial(); // 游戲規(guī)則及操作說明
- void instruct(); // 游戲規(guī)則
- void helpp(); // 操作說明
- void choose_mode(); // 選擇游戲模式
- void play(); // 進(jìn)行游戲
- choices choose(); // 選擇下續(xù)操作
- choices get_random(); // 獲得隨機(jī)選擇
- void show_result(int, int, int); // 顯示對(duì)局結(jié)果
- void compare(choices, choices); // 判斷輸贏
- private:
- int win; // 玩家1贏的次數(shù)
- int lose; // 玩家1輸?shù)拇螖?shù)
- int tie; // 平局次數(shù)
- char mode[2]; // 記錄游戲模式
- choices player1, player2; // 記錄玩家做的選擇
- };
- 主函數(shù)
- #include<iostream>
- #include"game.h"
- using namespace std;
-
- int main()
- {
- Game g;
- g.run();
- return 0;
- }
- 具體功能實(shí)現(xiàn)代碼
- #include "game.h"
- #include <string>
- #include <conio.h>
-
- Game::Game()
- {
- win = 0;
- lose = 0;
- tie = 0;
- }
- void Game::run() // 游戲運(yùn)行入口
- {
-
- initial(); // 游戲規(guī)則及操作說明
- choose_mode(); // 選擇游戲模式
- play(); // 進(jìn)行游戲
- }
-
- void Game::initial() // 游戲規(guī)則及操作說明
- {
- cout << "**** 石頭剪刀布 游戲說明 **** " << endl;
- cout << endl;
- instruct();
- helpp();
- cout << "祝你好運(yùn)!" << endl;
- cout << endl;
- }
- void Game::instruct() // 游戲規(guī)則
- {
- cout << "游戲規(guī)則" << endl;
- cout << "\t 在這個(gè)游戲中" << endl;
- cout << "\t h 表示石頭" << endl;
- cout << "\t s 表示剪刀" << endl;
- cout << "\t c 表示布" << endl;
- cout << "\t 若兩玩家的選擇相同, 那么這一局就是平局" << endl;
- cout << "\t 否則, 石頭打剪刀, 布包石頭, 剪刀剪布" << endl;
- cout << "\t 這個(gè)游戲一直重復(fù)到玩家退出為止." << endl;
- cout << endl;
- }
-
- void Game::helpp() // 操作說明
- {
- cout << "操作說明" << endl;
- cout << "\t h 表示石頭" << endl;
- cout << "\t s 表示剪刀" << endl;
- cout << "\t c 表示布" << endl;
- cout << "\t r 查看對(duì)局結(jié)果" << endl;
- cout << "\t p 查看操作說明" << endl;
- cout << "\t i 查看游戲規(guī)則" << endl;
- cout << "\t q 表示退出游戲" << endl;
- cout << endl;
- }
- void Game::choose_mode() // 選擇游戲模式
- {
- string step1 = "\n\t 1 人機(jī)模式 \n\t 2 雙人模式 ";
- string step2 = "\n\t 1 三局兩勝 \n\t 2 五局三勝 ";
- int i = 0;
- string step;
- while (i < 2)
- {
- step = (i == 0) ? step1 : step2;
- cout << "\n請(qǐng)選擇: " << step << "\n>>> ";
- while ((cin >> mode[i]) && mode[i] == ' ' || mode[i] == '\n' || mode[i] == '\t'); // 未輸入或輸入為空字符
- if (mode[i] == '1' || mode[i] == '2')
- i += 1;
-
- }
- }
- void Game::play() // 進(jìn)行游戲
- {
- int WIN_MAX, SUM_MAX; // 最多贏場(chǎng), 最多局?jǐn)?shù)
- if (mode[1] == '1') // 三局兩勝
- {
- WIN_MAX = 2;
- SUM_MAX = 3;
- }
- else // 五局三勝
- {
- WIN_MAX = 3;
- SUM_MAX = 5;
- }
- while ((win < WIN_MAX) && ((win + lose + tie) < SUM_MAX))
- {
- cout << endl;
- cout << "***** 第" << win + lose + tie + 1 << "局 *****" << endl;
- cout << endl;
- cout << "***** 玩家1界面 *****" << endl;
- player1 = choose();
- cout << "***** 玩家2界面 *****" << endl;
- if (mode[0] == '1') // 人機(jī)模式
- {
- cout << " 電腦已作出選擇" << endl;
- player2 = get_random();
- }
- else // 雙人模式
- player2 = choose();
- compare(player1, player2); // 判斷輸贏
- }
- show_result(win, lose, tie); // 顯示比賽結(jié)果
- cout << endl;
- cout << "游戲結(jié)束!" << endl;
- exit(0); // 退出游戲
- }
- choices Game::choose() // 選擇下續(xù)操作
- {
- char c;
- choices p;
- cout << endl;
- cout << "請(qǐng)選擇: \n\t h 表示石頭 \n\t s 表示剪刀\n\t c 表示布 \n>>> ";
- do {
- c = _getch();
- cout << "*" << endl;
- } while (c == ' ' || c == '\n' || c == '\t');
-
- switch (c) {
- case 'c': p = cloth;
- break;
- case 'h': p = hammer;
- break;
- case 's': p = scissors;
- break;
- case 'r': // 查看對(duì)局結(jié)果
- show_result(win, lose, tie);
- p = choose();
- break;
- case 'i': // 查看游戲規(guī)則
- instruct();
- p = choose();
- break;
- case 'q': // 退出
- cout << "已退出" << endl;
- exit(0);
- break;
- default: // 查看操作說明
- helpp();
- p = choose();
- break;
- }
- return(p);
- }
- choices Game::get_random() // 獲得隨機(jī)選擇
- {
- static int i;
- i = ++i % 3;
- return(choices(i)); // 根據(jù)余數(shù)得隨機(jī)值
- }
- void Game::show_result(int win, int lose, int tie) // 顯示比賽結(jié)果
- {
- cout << endl;
- cout << "游戲結(jié)果如下:" << endl;
- cout << "\t 玩家1獲勝的次數(shù)是: " << win << endl;
- cout << "\t 玩家2獲勝的次數(shù)是: " << lose << endl;
- cout << "\t 平局的次數(shù)為: " << tie << endl;
- cout << "\t 游戲的總次數(shù)是: " << win + lose + tie << endl;
- }
- void Game::compare(choices player1, choices player2) // 判斷輸贏
- {
- // cout << "玩家1: " << player1 << " 玩家2: " << player2 << endl;
- if (player1 == player2)
- {
- tie += 1;
- cout << "平局" << endl;
- }
- …………
- …………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
完整的Word格式文檔51黑下載地址:
剪刀石頭布.rar
(278.04 KB, 下載次數(shù): 26)
2018-12-12 18:12 上傳
點(diǎn)擊文件名下載附件
文檔 下載積分: 黑幣 -5
|