欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 基于C++語言的剪刀石頭布游戲設計說明書+程序源碼 [打印本頁]

作者: 1518921    時間: 2018-12-12 18:13
標題: 基于C++語言的剪刀石頭布游戲設計說明書+程序源碼
剪刀石頭布說明書
摘要:本文主要介紹利用C++高級語言實現石頭剪子布游戲的編輯和運行。通過 Visual Studio 2017 軟件進行石頭剪子布游戲程序的編譯,確定模塊之間關系及各模塊功能,設計一個簡單的操作界面實現石頭剪子布游戲,。
石頭剪子布游戲系統通過C++高級語言進行編程,并設計了簡單明了的操作界面,為用戶提供更好的操作體驗,更直接而充分的掌握本程序的一些應用和功能。通過直觀的方式,最終實現C++設計的應用程序——石頭剪子布游戲。本次課設所做程序雖然只是一個簡單的C++手石頭剪子布游戲程序,但是基本的應用功能都已具備,可以更好的用在實際應用中。

第1章 軟件設計內容

1.1設計內容
1.2 軟件功能說明
1.2.1 功能分析說明圖
1.2.2 各項功能說明
第2章 軟件設計環境與原理

2.1 設計環境與模塊的劃分
2.1.1 軟件設計環境
2.1.2 軟件模塊的劃分
2.2 軟件設計主要原理
2.2.1 采用的主要數據結構類型
2.2.2 各個模塊之間的調用關系和數據儲存格式說明
2.2.3 主要流程圖
第3章 軟件的設計過程

3.1 各軟件模塊之間的調用方式
3.2 軟件中實現各項功能的函數與程序代碼
第4章 設計結果與分析

4.1軟件使用結果
總結
致謝
附錄

1章 軟件設計內容
1
1 設計內容
完成一個經典的小游戲設計:錘頭剪刀和布。設計內容如下:
1、玩家通過鍵盤輸入字符h、s、c. h表示錘子,s表示剪刀,c表示布。如果玩家輸入的字符和電腦隨機選擇的字符一致,則表示平局。如果不一致,則按照錘子勝剪刀、剪刀勝布、布勝錘子的規則決出勝負。
2、如果是兩個游戲玩家對戰,則先出的玩家,其輸入的符號需要隱藏。 然后決出勝負。
3、有局數選擇功能: 三局兩勝、五局三勝等。
4、統計輸贏的次數

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



:1-2-1
1.2.2 各項功能說明
(1)游戲運行入口:
這部分的功能主要包括游戲規則及操作說明、選擇游戲模式和進行游戲。
(2)游戲規則及操作說明:
     游戲規則:在這個游戲中,h表示石頭,s表示剪刀,c表示布,r表示查看對局結果,p表示查看操作說明,i表示查看游戲規則,q表示退出游戲。若兩個玩家出的的選擇相同,那么這一句就是平局。否則,石頭打剪刀,布包石頭,剪刀剪布,這個游戲一直重復到玩家退出為止。
(3)進入游戲:
     進入游戲有兩個選擇:1、人機模式,2、雙人模式。
(4)選擇下續操作:
即玩家再次出剪刀石頭布。
(5)獲得隨機選擇:
     此項功能是電腦隨機出剪刀石頭布。
(6)判斷輸贏。
     選擇次項功能后,根據前面出的剪刀石頭布來判斷輸贏。
(7)顯示對局結果。


2章 軟件設計環境與原理
2.1 設計環境與模塊的劃分
2.1.1
軟件設計環境
Visual Studio 2017
2.1.2 軟件模塊的劃分
該軟件主要組成模塊和各個模塊之間的調用關系如圖2-1:


:2-1
2.2 軟件設計主要原理
2.2.1 采用的主要數據結構類型
該程序采用的是結構體類型來出剪刀石頭布,如下所述。
包含的庫函數有:
              #include "game.h"
#include <string>
#include <conio.h>
頭文件中主要內容:
              void run();  // 游戲運行入口
              void initial();  // 游戲規則及操作說明
              void instruct();  // 游戲規則
              void helpp();  // 操作說明
              void choose_mode();  // 選擇游戲模式
              void play();  // 進行游戲
              choices choose();  // 選擇下續操作
              choices get_random();  // 獲得隨機選擇
              void show_result(int, int, int);  // 顯示對局結果
              void compare(choices, choices);  // 判斷輸贏
2.2.2 各個模塊之間的調用關系和數據儲存格式說明
各函數模塊之間的調用關系主要是主函數調用所有其它功能函數和菜單函數,并利用循環使各個功能函數運行完畢后都會回到菜單。
2.2.3 主要流程圖

圖:2-2-1游戲系統

圖2-2-2 總流程圖(見附件)

第3章 軟件的設計過程
3.1 各軟件模塊之間的調用方式
程序中各個模塊之間的調用方式主要是通過文件的包含和函數的調用實現的,用文件的形式把各個函數分開,再用頭文件把它們包含進來,使用主函數進行調用。


4設計結果與分析
4
1軟件使用結果
在此,我們將把軟件使用過程寫出,并對此程序的一些細節和具體的操作方法加以說明,說明如下:
菜單界面
圖4-1-1
界面顯示的是“石頭剪刀布游戲說明及操作說明”。根據提示,玩家選擇需要的游戲類型。
圖4-1-2游戲模式
在這個界面給出了游戲模式的兩種選擇,也就是說,玩家可以選擇剪刀石頭布的兩種游戲模式:三局兩勝和五局三勝,如選擇三局兩勝,按Enter鍵進入輸入界面,輸入界面如圖4-1-3:
4-1-3
玩家可以選擇按(h、s、c)來決定出石頭剪刀布(h表示石頭,s表示剪刀,c表示出布),重復此次操作三次,游戲結束。如果玩家對操作不是很熟悉,可以按p來查看操作說明,得到操作說明如圖4-1-4
如圖4-1-4
如果輸入的字符不在給定的范圍內,則界面上將顯示輸入的格式有誤,請重新輸入,才可以進行下面的程序。,如圖4-1-5:
           
4-1-5
圖4-1-6
界面上的圖即顯示的是三次猜拳游戲后游戲結果,,可按任意鍵可退出此界面。

總結
通過兩星期的C++語言程序設計實習,不僅檢驗了我所學習的知識,也培養了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。我們從中受益匪淺,并且對C++語言程序設計這一門課程有了更深一步的認識。在實習中,我們可以把這學期所學的理論知識和實踐聯系起來,在所要開發的項目中漸漸成長。雖然我們對這些C++語言知識運用得還不是很熟練,但是相信我們也在滴水穿石地成長起來。發現問題,提出問題,解決問題,使我們從不足之處出發,尋找新的學習方向。
在實習中,我們設計了一個剪刀石頭布的小游戲,它有兩種模式:人機模式和玩家模式,在每種模式下又細分為兩種游戲類型:三局兩勝和五局三勝。在剛開始時游戲遇到了許許多多的小問題:如在選擇1、人機模式還是2、玩家模式時,除了按1和2外,按其他鍵時,會出現無限循環的現象,造成這種現象的原因時:條件不完備。解決辦法時在這兩種模式下加入,輸入的格式不正確,請重新輸入。
課程設計是我們專業課程知識綜合應用的實踐訓練,著是我們邁向社會,從事職業工作前一個必不少的過程.”千里之行始于足下”,通過這次課程設計,我深深體會到這句千古名言的真正含義.我今天認真的進行課程設計,學會腳踏實地邁開這一步,就是為明天能穩健地在社會大潮中奔跑打下堅實的基礎.
提高了計算能力,,熟悉了規范和標準,同時各科相關的課程都有了全面的復習,獨立思考的能力也有了提高。

致謝
經過這兩周的實習,我們獲得了許多在課堂上聽課而不能獲得的知識,首先我們要感謝學校給我們安排的這次的C++語言程序設計實習,然后我要感謝老師們對我們熱心的指導和幫助,是他們教會了我們怎樣解決問題的方法,這樣我們的軟件設計才會更加順利地進行,并且充分掌握了設計程序的方法。我們還要感謝許多同學的幫助,他們的幫助對于我們來說也是必不可少的。總之,是有了他們的幫助,我們才能順利地完成軟件設計,在這里我們要向他們說一句:謝謝,非常感謝!你們辛苦了!

3.2 軟件中實現各項功能的函數與程序代碼

一、頭文件中代碼
  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();  // 構造函數初始化數據成員
  13.               void run();  // 游戲運行入口
  14.               void initial();  // 游戲規則及操作說明
  15.               void instruct();  // 游戲規則
  16.               void helpp();  // 操作說明
  17.               void choose_mode();  // 選擇游戲模式
  18.               void play();  // 進行游戲
  19.               choices choose();  // 選擇下續操作
  20.               choices get_random();  // 獲得隨機選擇
  21.               void show_result(int, int, int);  // 顯示對局結果
  22.               void compare(choices, choices);  // 判斷輸贏
  23. private:
  24.               int  win;  // 玩家1贏的次數
  25.               int  lose;  // 玩家1輸的次數
  26.               int  tie;  // 平局次數
  27.               char mode[2];  // 記錄游戲模式
  28.               choices player1, player2;  // 記錄玩家做的選擇
  29. };
  30. 主函數
  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. 具體功能實現代碼
  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()  // 游戲運行入口
  51. {

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

  56. void Game::initial()  // 游戲規則及操作說明
  57. {
  58.               cout << "**** 石頭剪刀布 游戲說明 **** " << endl;
  59.               cout << endl;
  60.               instruct();
  61.               helpp();
  62.               cout << "祝你好運!" << endl;
  63.               cout << endl;
  64. }
  65. void Game::instruct()  // 游戲規則
  66. {
  67.               cout << "游戲規則" << endl;
  68.               cout << "\t 在這個游戲中" << 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 這個游戲一直重復到玩家退出為止." << 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 查看對局結果" << endl;
  84.               cout << "\t p 查看操作說明" << endl;
  85.               cout << "\t i 查看游戲規則" << endl;
  86.               cout << "\t q 表示退出游戲" << endl;
  87.               cout << endl;
  88. }
  89. void Game::choose_mode()  // 選擇游戲模式
  90. {
  91.               string step1 = "\n\t 1 人機模式 \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請選擇: " << 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()  // 進行游戲
  106. {
  107.               int WIN_MAX, SUM_MAX;  // 最多贏場, 最多局數
  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')  // 人機模式
  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);  // 顯示比賽結果
  136.               cout << endl;
  137.               cout << "游戲結束!" << endl;
  138.               exit(0);  // 退出游戲
  139. }
  140. choices Game::choose()  // 選擇下續操作
  141. {
  142.               char c;
  143.               choices p;
  144.               cout << endl;
  145.               cout << "請選擇: \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':  // 查看對局結果
  158.                             show_result(win, lose, tie);
  159.                             p = choose();
  160.                             break;
  161.               case 'i':  // 查看游戲規則
  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()  // 獲得隨機選擇
  177. {
  178.               static int i;
  179.               i = ++i % 3;
  180.               return(choices(i));  // 根據余數得隨機值
  181. }
  182. void Game::show_result(int win, int lose, int tie)  // 顯示比賽結果
  183. {
  184.               cout << endl;
  185.               cout << "游戲結果如下:" << endl;
  186.               cout << "\t 玩家1獲勝的次數是: " << win << endl;
  187.               cout << "\t 玩家2獲勝的次數是: " << lose << endl;
  188.               cout << "\t 平局的次數為: " << tie << endl;
  189.               cout << "\t 游戲的總次數是: " << 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. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

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


作者: internetfox    時間: 2019-7-5 07:55
不錯,謝謝分享




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1