久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 7333|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

基于C++語言的剪刀石頭布游戲設(shè)計(jì)說明書+程序源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:429225 發(fā)表于 2018-12-12 18:13 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
剪刀石頭布說明書
摘要:本文主要介紹利用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ù)

12 軟件功能說明
1.2.1
功能分析說明圖
該軟件功能分析說明圖如1-2-1所示:



: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:


: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ù)與程序代碼

一、頭文件中代碼
  1. #include <iostream>
  2. using namespace std;

  3. enum choices{
  4.               hammer,  // 石頭
  5.               scissors,  // 剪刀
  6.               cloth  // 布
  7. };

  8. // char choice_name[][9] = { "hammer", "scissors", "cloth" };


  9. class Game
  10. {
  11. public:
  12.               Game();  // 構(gòu)造函數(shù)初始化數(shù)據(jù)成員
  13.               void run();  // 游戲運(yùn)行入口
  14.               void initial();  // 游戲規(guī)則及操作說明
  15.               void instruct();  // 游戲規(guī)則
  16.               void helpp();  // 操作說明
  17.               void choose_mode();  // 選擇游戲模式
  18.               void play();  // 進(jìn)行游戲
  19.               choices choose();  // 選擇下續(xù)操作
  20.               choices get_random();  // 獲得隨機(jī)選擇
  21.               void show_result(int, int, int);  // 顯示對(duì)局結(jié)果
  22.               void compare(choices, choices);  // 判斷輸贏
  23. private:
  24.               int  win;  // 玩家1贏的次數(shù)
  25.               int  lose;  // 玩家1輸?shù)拇螖?shù)
  26.               int  tie;  // 平局次數(shù)
  27.               char mode[2];  // 記錄游戲模式
  28.               choices player1, player2;  // 記錄玩家做的選擇
  29. };
  30. 主函數(shù)
  31. #include<iostream>
  32. #include"game.h"
  33. using namespace std;

  34. int main()
  35. {
  36.               Game g;
  37.               g.run();
  38.               return 0;
  39. }
  40. 具體功能實(shí)現(xiàn)代碼
  41. #include "game.h"
  42. #include <string>
  43. #include <conio.h>

  44. Game::Game()
  45. {
  46.               win = 0;
  47.               lose = 0;
  48.               tie = 0;
  49. }
  50. void Game::run()  // 游戲運(yùn)行入口
  51. {

  52.               initial();  // 游戲規(guī)則及操作說明
  53.               choose_mode();  // 選擇游戲模式
  54.               play();  // 進(jìn)行游戲
  55. }

  56. void Game::initial()  // 游戲規(guī)則及操作說明
  57. {
  58.               cout << "**** 石頭剪刀布 游戲說明 **** " << endl;
  59.               cout << endl;
  60.               instruct();
  61.               helpp();
  62.               cout << "祝你好運(yùn)!" << endl;
  63.               cout << endl;
  64. }
  65. void Game::instruct()  // 游戲規(guī)則
  66. {
  67.               cout << "游戲規(guī)則" << endl;
  68.               cout << "\t 在這個(gè)游戲中" << endl;
  69.               cout << "\t h 表示石頭" << endl;
  70.               cout << "\t s 表示剪刀" << endl;
  71.               cout << "\t c 表示布" << endl;
  72.               cout << "\t 若兩玩家的選擇相同, 那么這一局就是平局" << endl;
  73.               cout << "\t 否則, 石頭打剪刀, 布包石頭, 剪刀剪布" << endl;
  74.               cout << "\t 這個(gè)游戲一直重復(fù)到玩家退出為止." << endl;
  75.               cout << endl;
  76. }

  77. void Game::helpp()   // 操作說明
  78. {
  79.               cout << "操作說明" << endl;
  80.               cout << "\t h 表示石頭" << endl;
  81.               cout << "\t s 表示剪刀" << endl;
  82.               cout << "\t c 表示布" << endl;
  83.               cout << "\t r 查看對(duì)局結(jié)果" << endl;
  84.               cout << "\t p 查看操作說明" << endl;
  85.               cout << "\t i 查看游戲規(guī)則" << endl;
  86.               cout << "\t q 表示退出游戲" << endl;
  87.               cout << endl;
  88. }
  89. void Game::choose_mode()  // 選擇游戲模式
  90. {
  91.               string step1 = "\n\t 1 人機(jī)模式 \n\t 2 雙人模式 ";
  92.               string step2 = "\n\t 1 三局兩勝 \n\t 2 五局三勝 ";
  93.               int i = 0;
  94.               string step;
  95.               while (i < 2)
  96.               {
  97.                             step = (i == 0) ? step1 : step2;
  98.                             cout << "\n請(qǐng)選擇: " << step << "\n>>> ";
  99.                             while ((cin >> mode[i]) && mode[i] == ' ' || mode[i] == '\n' || mode[i] == '\t');  // 未輸入或輸入為空字符
  100.                             if (mode[i] == '1' || mode[i] == '2')
  101.                                           i += 1;
  102.                            
  103.               }
  104. }
  105. void Game::play()  // 進(jìn)行游戲
  106. {
  107.               int WIN_MAX, SUM_MAX;  // 最多贏場(chǎng), 最多局?jǐn)?shù)
  108.               if (mode[1] == '1')  // 三局兩勝
  109.               {
  110.                             WIN_MAX = 2;
  111.                             SUM_MAX = 3;
  112.               }
  113.               else  // 五局三勝
  114.               {
  115.                             WIN_MAX = 3;
  116.                             SUM_MAX = 5;
  117.               }
  118.               while ((win < WIN_MAX) && ((win + lose + tie) < SUM_MAX))
  119.               {
  120.                             cout << endl;
  121.                             cout << "***** 第" << win + lose + tie + 1 << "局 *****" << endl;
  122.                             cout << endl;
  123.                             cout << "***** 玩家1界面 *****" << endl;
  124.                             player1 = choose();
  125.                             cout << "***** 玩家2界面 *****" << endl;
  126.                             if (mode[0] == '1')  // 人機(jī)模式
  127.                             {
  128.                                           cout << "  電腦已作出選擇" << endl;
  129.                                           player2 = get_random();
  130.                             }
  131.                             else  // 雙人模式
  132.                                           player2 = choose();
  133.                             compare(player1, player2);  // 判斷輸贏
  134.               }
  135.               show_result(win, lose, tie);  // 顯示比賽結(jié)果
  136.               cout << endl;
  137.               cout << "游戲結(jié)束!" << endl;
  138.               exit(0);  // 退出游戲
  139. }
  140. choices Game::choose()  // 選擇下續(xù)操作
  141. {
  142.               char c;
  143.               choices p;
  144.               cout << endl;
  145.               cout << "請(qǐng)選擇: \n\t h 表示石頭 \n\t s 表示剪刀\n\t c 表示布 \n>>> ";
  146.               do {
  147.                             c = _getch();
  148.                             cout << "*" << endl;
  149.               } while (c == ' ' || c == '\n' || c == '\t');

  150.               switch (c) {
  151.               case 'c': p = cloth;
  152.                             break;
  153.               case 'h': p = hammer;
  154.                             break;
  155.               case 's': p = scissors;
  156.                             break;
  157.               case 'r':  // 查看對(duì)局結(jié)果
  158.                             show_result(win, lose, tie);
  159.                             p = choose();
  160.                             break;
  161.               case 'i':  // 查看游戲規(guī)則
  162.                             instruct();
  163.                             p = choose();
  164.                             break;
  165.               case 'q':  // 退出
  166.                             cout << "已退出" << endl;
  167.                             exit(0);
  168.                             break;
  169.               default:  // 查看操作說明
  170.                             helpp();
  171.                             p = choose();
  172.                             break;
  173.               }
  174.               return(p);
  175. }
  176. choices Game::get_random()  // 獲得隨機(jī)選擇
  177. {
  178.               static int i;
  179.               i = ++i % 3;
  180.               return(choices(i));  // 根據(jù)余數(shù)得隨機(jī)值
  181. }
  182. void Game::show_result(int win, int lose, int tie)  // 顯示比賽結(jié)果
  183. {
  184.               cout << endl;
  185.               cout << "游戲結(jié)果如下:" << endl;
  186.               cout << "\t 玩家1獲勝的次數(shù)是: " << win << endl;
  187.               cout << "\t 玩家2獲勝的次數(shù)是: " << lose << endl;
  188.               cout << "\t 平局的次數(shù)為: " << tie << endl;
  189.               cout << "\t 游戲的總次數(shù)是: " << win + lose + tie << endl;
  190. }
  191. void Game::compare(choices player1, choices player2)  // 判斷輸贏
  192. {
  193.               // cout << "玩家1: " << player1 << "  玩家2: " << player2 << endl;
  194.               if (player1 == player2)
  195.               {
  196.                             tie += 1;
  197.                             cout << "平局" << endl;
  198.               }
  199. …………
  200. …………
  201. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

完整的Word格式文檔51黑下載地址:
剪刀石頭布.rar (278.04 KB, 下載次數(shù): 26)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:578235 發(fā)表于 2019-7-5 07:55 | 只看該作者
不錯(cuò),謝謝分享
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 九九天堂网 | 国产精品成人一区 | 91精品国产乱码久久久久久久久 | 香蕉二区 | 久久精品青青大伊人av | 超碰在线97国产 | 四虎影院免费在线播放 | 操操操操操 | 久久久久久国产精品mv | 国产99久久久国产精品 | 一二三四在线视频观看社区 | 伊人久久精品一区二区三区 | 一区二区片| 美女黄网 | 久久久国产视频 | 91 久久| 91porn成人精品 | 国产在线观看一区 | 99精品视频一区二区三区 | 日韩免费福利视频 | 色播av| 久久激情五月丁香伊人 | 亚洲国产一区二区三区 | 黄网站在线播放 | 国产精品揄拍一区二区 | 中文字幕在线一 | 精品亚洲一区二区三区 | 性色av一区二区三区 | 成人福利网站 | 日本精品视频一区二区 | 国产精品欧美一区二区三区不卡 | 久久国产综合 | 成人亚洲视频 | 久草视频2 | 久久成人精品视频 | 91视频久久| 五月婷婷激情网 | 日本不卡一区二区三区 | 亚洲一区中文字幕 | 婷婷毛片| 午夜一区 |