課程實驗設(shè)計:基于c++面向?qū)ο蟮氖^剪子布游戲-附源代碼_第1頁
課程實驗設(shè)計:基于c++面向?qū)ο蟮氖^剪子布游戲-附源代碼_第2頁
課程實驗設(shè)計:基于c++面向?qū)ο蟮氖^剪子布游戲-附源代碼_第3頁
課程實驗設(shè)計:基于c++面向?qū)ο蟮氖^剪子布游戲-附源代碼_第4頁
課程實驗設(shè)計:基于c++面向?qū)ο蟮氖^剪子布游戲-附源代碼_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、(sdut)(附源代碼)基于C+設(shè)計的剪刀石頭布的游戲信科1301 韓玙歟1 需求分析 題目的要求是要求:(1)實現(xiàn)人機(jī)對戰(zhàn)的功能,(2)程序具有啟動菜單和歡迎信息;(3)可以記錄比賽的次數(shù),輸贏的次數(shù)其中輸入形式為代表石頭剪子和布三種實物的字符;我在這里選擇用2代表石頭,1代表剪子,0代表布。我在程序中設(shè)計了三種游戲方式,分別為,人機(jī)模式,人人模式,連勝模式,其中人機(jī)模式設(shè)置有記錄,可以記錄總共的勝局?jǐn)【趾推骄?,連勝模式設(shè)置了英雄榜取得更高連勝成績的人可以更新英雄榜。(測試數(shù)據(jù)見6 ) 2概要設(shè)計 3詳細(xì)設(shè)計 程序中共有cai,caipeople,caichallenge三個類,以實現(xiàn)游戲中

2、人機(jī)對戰(zhàn),人人對戰(zhàn),和連勝模式。對于猜拳過程中隨機(jī)情況的使用,我選擇的是調(diào)用知道,C語言中rand()函數(shù),但是因為rand()函數(shù)是按指定的順序來產(chǎn)生整數(shù),因此每次執(zhí)行上面的語句都打印相同的兩個值,所以說C語言的隨機(jī)并不是真正意義上的隨機(jī),有時候也叫偽隨機(jī)數(shù)。所以如果玩家可以知道多次重啟游戲后可以知道電腦的前幾次出拳會是什么。在判斷輸贏的過程中,如果玩家1贏電腦(或玩家2)則會出現(xiàn)關(guān)系式字符2-1=1,1-0=0,0-2=-2;所以可使用if(a1-a2=1|a1-a2=-2);平局為else if(a1-a2=0);失敗為else ;其中使用了windows.h來設(shè)置字體的顏色,和窗口的大

3、小,同時在編程過程中加入適當(dāng)?shù)淖址嬕赃_(dá)到美化的效果。(函數(shù)調(diào)用關(guān)系請看概要設(shè)計) 4 調(diào)試分析 算法復(fù)雜程度一般,較為簡單??刹捎胻ime.h結(jié)合srand()和rand()配合使用產(chǎn)生隨機(jī)數(shù)序列。做的不錯。5 用戶使用說明 輸入數(shù)字使用鍵盤輸入字符,按回車運行。6 測試結(jié)果 7 參考文獻(xiàn) C_Primer_Plus(第五版)中文版8 附錄#pragma warning (disable:4996)#include #include #include #include #include using namespace std;HANDLE g_hOutput = GetStdHandle(S

4、TD_OUTPUT_HANDLE);/創(chuàng)建句柄/設(shè)置光標(biāo)位置void SetCursor(COORD cd) SetConsoleCursorPosition(g_hOutput, cd);void SetCursor(int x, int y) COORD cd = x, y ; SetCursor(cd);void play();void playpeople();void playchallenge();void explain();void rank_1();void record();void about();void time_1();void chuquan(int a);/展示

5、出拳char name10;/擂主記錄int big=0;int bigger=0;class cai/普通猜拳模式private:int i;int a;public:static int x,y,z;void show(int chu)i=rand()%3;a=chu;cout你的出拳:;chuquan(a);cout VS 電腦的出拳:;chuquan(i);coutendl;if(a-i=1|a-i=-2)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_RE

6、D );coutyou winendl;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);x+;else if(a-i=0)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_GREEN);coutpingleendl;SetConsoleTextAttribu

7、te(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);y+;elseSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_BLUE);coutdefeatendl;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENS

8、ITY| FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);z+;cout你目前:ntwin局t平局t輸局endl;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED);couttcai:x;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN);couttcai:y;Se

9、tConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_BLUE| FOREGROUND_GREEN);couttcai:zendl;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);int cai:x=0;int cai:y=0;int cai:z=0;class c

10、aipeople/人人猜拳模式private:int p1;int p2;public:void play()coutt石頭:2 剪子:1布:0endl;cout請玩家一輸入所出拳,n玩家二回避。p1;system(cls);coutt石頭:2 剪子:1布:0endl;cout請玩家一輸入所出拳,n玩家二回避。endl;cout*endl;cout請玩家二輸入所出拳p2;system(cls);coutt石頭:2 剪子:1布:endl;cout玩家一所出拳:;chuquan(p1);coutn玩家二所出拳所出拳:;chuquan(p2);coutendl;if(p1-p2=1|p1-p2=-2

11、)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED);cout玩家一獲勝endl;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);else if(p1-p2=0)cout實力相當(dāng)endl;elseSetConsoleTextAttribute(Get

12、StdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED);cout玩家二獲勝endl;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);class caichallenge/連勝模式private:int a1;int a2;public:/static int vs;int no;void play()no=

13、0;couta1;a2=rand()%3;Sleep(500);coutt.n;Sleep(500);coutt.n;Sleep(500);coutt.n;Sleep(500);coutt.n;Sleep(500);coutt.n;cout你的出拳:;chuquan(a1);cout VS 電腦的出拳:;chuquan(a2);coutendl;if(a1-a2=1|a1-a2=-2)coutt再來猜我一拳!;big+;else if(a1-a2=0)coutt好漢再來一局;elsecoutt再回去修煉一下吧endl;no=-1;/int caichallenge:vs=0;cai use;/

14、用于靜態(tài)的變量的調(diào)用void operate(string);cai a;caipeople a2;caichallenge a3;int main()system(cls); system(mode con cols=34 lines=40);/定義窗體大小string ch;doSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_RED | FOREGROUND_GREEN);cout endl;cout endl;cout endl;coutendl;cout e

15、ndl;cout endl;cout endl;cout endl;cout endl;cout endl;cout endl;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);cout*endl;cout* 石頭剪子布 *endl;cout* 1.進(jìn)入游戲(人機(jī)對戰(zhàn)) *endl;cout* 2.進(jìn)入游戲(人人對戰(zhàn)) *endl;cout* 3.挑戰(zhàn)模式(連勝模式) *endl;co

16、ut* 4.游戲說明 *endl;cout* 5.游戲記錄 *endl;cout* 6.排行榜(連勝模式) *endl;cout* 7.關(guān)于 *endl;cout* 8.查看當(dāng)前時間 *endl;cout* 0.退出游戲 *endl;cout*輸入對應(yīng)數(shù)字,按下回車使用其功能*endl;cout*ch;operate(ch);system(pause);system(cls);while(ch!=0);return 0;void operate(string str)system(cls);if(str=1)play();else if(str=2)playpeople();else if(s

17、tr=3)playchallenge();else if(str=4)explain();else if(str=5)record();else if(str=6)rank_1();else if(str=7)about();else if(str=8)time_1();else if(str=0)coutbyebyeendl;elsecout請輸入有效數(shù)字endl;void play()cout石頭:2 剪子:1布:0x;a.show(x);cout繼續(xù)輸入2,1,0可繼續(xù)猜拳,輸入其他按鍵結(jié)束戰(zhàn)斗,返回上界面endl;while(x=0|x=1|x=2);void playpeople()

18、int x;doa2.play();cout輸入0終止猜拳,輸入其他繼續(xù)進(jìn)行對決x;while(x!=0);void playchallenge()int x;big=0;cout當(dāng)前為連勝模式,如果勝利可取得繼續(xù)猜拳的資格,且中途不可退出,如果猜拳失敗則返回上一界面n戰(zhàn)斗吧!endl;cout請出拳endl;doa3.play();x=a3.no;while(x!=-1);if(bigger=big)bigger=big;cout恭喜你創(chuàng)造了新的世界記錄,請留下您的大名endl;/for(int z;zname;void explain()cout規(guī)則:n 石頭打剪刀,n 布包石頭,n 剪刀

19、剪布,n 輸入2代表石頭,n 輸入1代表剪子,n 輸入0代表布。n輸入后按下回車n同電腦進(jìn)行猜拳。endl;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_BLUE);cout endl;coutendl; coutendl;coutendl;coutendl;coutendl;coutendl;coutendl;coutendl;cout 必endl;cout 勝endl;cout endl;cout endl;cout endl

20、;cout endl;cout endl;cout endl;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);void about()cout 當(dāng)前版本1.0.0 endl;cout 基于c+的石頭剪子布游戲 endl;cout 作者:韓志杰 endl;cout 生產(chǎn)日期:2014/7/7 endl;SetConsoleTextAttribute(GetStdHandle(STD_

21、OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_RED);cout | endl;cout /7 / endl;cout / endl;cout Z , / endl;cout /endl;cout Y / / endl;cout / endl;cout () () | endl;cout _ / endl;cout / / | endl;cout _/(_ endl;cout 7| endl;cout r 丨 endl;SetConsoleTextAttribute(GetStdHandle(STD_OU

22、TPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);void record()cout你目前:ntwin局t平局t輸局endl;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED);couttcai:x;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_I

23、NTENSITY |FOREGROUND_GREEN);couttcai:y;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_BLUE| FOREGROUND_GREEN);couttcai:zendl;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);void rank_1()cout* HERO *;cout

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論