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