版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
擲骰子游戲?qū)嶒?yàn)報(bào)告第第頁(yè)一:實(shí)驗(yàn)?zāi)康脑O(shè)計(jì)一個(gè)模擬投擲骰子的游戲程序,其游戲基本內(nèi)容為,游戲者每次投擲兩顆骰子,每顆骰子是一個(gè)正方體,有6面上面分別標(biāo)有1、2、3、4、5、6個(gè)圓點(diǎn),當(dāng)骰子停止時(shí),要將每顆骰子朝上的點(diǎn)的數(shù)相加,在第一次投擲骰時(shí),
如果所得到的和為7或11,那么游戲者為贏得勝利;
如果所得到的和為2、3或12,那么游戲者為輸?shù)袅?如果和為4、5、6、8、9或10,那么為游戲者的點(diǎn)數(shù);如要想贏得勝利,必須繼續(xù)投擲骰子,直到取得自已的點(diǎn)數(shù)為止,
但是如果投擲出的和為7,那么游戲者為輸了。二:實(shí)驗(yàn)主要功能該游戲的主要功能為:實(shí)現(xiàn)隨機(jī)投擲兩個(gè)骰子把其所得點(diǎn)數(shù)相加,然后根據(jù)點(diǎn)數(shù)和判斷玩家的輸、贏或平局。1.主菜單界面。包含所具有所有功能的選項(xiàng)。2.獲得游戲幫助功能。告訴游戲者游戲規(guī)則。
3.顯示游戲數(shù)據(jù)功能。在游戲結(jié)束時(shí),顯示游戲者獲得的游戲數(shù)據(jù)。
4.模擬游戲功能。選擇進(jìn)入,開始游戲。
5.退出模擬游戲功能。玩完游戲后退出程序。三:實(shí)驗(yàn)工具/準(zhǔn)備工作(1)實(shí)驗(yàn)開始前,先回顧和復(fù)習(xí)相關(guān)內(nèi)容
在自己的電腦上安裝Visual
C++等集成開發(fā)軟件C++C/C++的哲學(xué)就不一樣了,同一份程序代碼,只要在該平臺(tái)重新Compile成該平臺(tái)的執(zhí)行檔,就能在該平臺(tái)執(zhí)行,若文字模式下的程序,的確可以跨平臺(tái),程序完全不需修改,但GUI盛行以后,由于各GUI的Library都不一樣且沒有標(biāo)準(zhǔn),所以GUI程序并沒辦法跨平臺(tái)Compile,因?yàn)楦髌脚_(tái)都有專屬的Library。但是C/C++優(yōu)勢(shì)就是執(zhí)行速度快,若能解決GUILibrary的問題,則跨平臺(tái)即可解決。Microsoft的VisualC++,MFC用的是完整的ANSIC++語(yǔ)言,所以語(yǔ)言部分不是問題,但若你看過用MFC寫的程序,你一定會(huì)驚訝為什么這么復(fù)雜,程序代碼非常冗長(zhǎng)不好看,且MFC是有名的難學(xué),若VisualC++搭配.NETFramrwork,則無(wú)法使用ANSIC++,得用其.NET平臺(tái)版本的C++/CLI,相信這點(diǎn)很多人就有意見了,不過.NETFramework由于設(shè)計(jì)的不錯(cuò),所以寫出來(lái)的程序相當(dāng)精簡(jiǎn)漂亮,感覺和C++Builder差不多,不過無(wú)論是C++Builder或VisualC++開發(fā)的GUI,所開發(fā)出來(lái)的程序都無(wú)法跨平臺(tái),當(dāng)然也無(wú)法跨平臺(tái)Compile。(2)QTA:QT的介紹Qt是一個(gè)跨平臺(tái)的開發(fā)框架,橫跨包括是一個(gè)跨平臺(tái)的開發(fā)框架,是一個(gè)跨平臺(tái)的開發(fā)框架Unix/Linux/Mac/Windows/Meego等常見操作系統(tǒng)平臺(tái),并支持如等常見操作系統(tǒng)平臺(tái),等常見操作系統(tǒng)平臺(tái)Symbian/WindowCE/單片機(jī)等多種嵌入式平臺(tái)?!耙淮尉帉懀S處單片機(jī)等多種嵌入式平臺(tái)。一次編寫,單片機(jī)等多種嵌入式平臺(tái)編譯”即同樣的代碼,只需在新的系統(tǒng)上重新編譯即完成了移植,編譯”,即同樣的代碼,只需在新的系統(tǒng)上重新編譯即完成了移植,大大降低了移植成本Qt使用標(biāo)準(zhǔn)的面向?qū)ο髾C(jī)制,支持使用使用標(biāo)準(zhǔn)的面向?qū)ο髾C(jī)制,進(jìn)行開發(fā)。使用標(biāo)準(zhǔn)的面向?qū)ο髾C(jī)制支持使用C++進(jìn)行開發(fā)。如果使用進(jìn)行開發(fā)Qyoto和QtJambi,同樣可以使用和Java進(jìn)行開發(fā)和同樣可以使用C#和進(jìn)行開發(fā)Qt擁有擁有250個(gè)以上的C++類,包含了無(wú)數(shù)方法,接口全部使用統(tǒng)一、友好的方式命名,友好的方式命名,對(duì)于一些沒用過的方法不查文檔也可以知道用法Qt具有豐富的工具和幫助文檔,可以實(shí)現(xiàn)一鍵查詢用法具有豐富的工具和幫助文檔,具有豐富的工具和幫助文檔XML支持和支持和Webkit引擎集成支持和引擎集成QT遵循商業(yè)和開源雙重協(xié)議遵循商業(yè)和開源雙重協(xié)議合并后,即將以Qt作為塞班和的標(biāo)準(zhǔn)開發(fā)框架,被Nokia合并后,Nokia即將以作為塞班和合并后即將以作為塞班和meego的標(biāo)準(zhǔn)開發(fā)框架,的標(biāo)準(zhǔn)開發(fā)框架Android是近幾年才出現(xiàn)的名詞,但是在嵌入式領(lǐng)域已經(jīng)發(fā)展了是近幾年才出現(xiàn)的名詞,在嵌入式領(lǐng)域已經(jīng)發(fā)展了10是近幾年才出現(xiàn)的名詞。B:QT的優(yōu)勢(shì)XML支持。大量的開發(fā)文檔支持2D/3D圖形渲染,支持OpenGL優(yōu)良的跨平臺(tái)特性,Qt支持下列操作系統(tǒng):MicrosoftWindows95/98,MicrosoftWindowsNT,Linux,Solaris,SunOS,HP-UX,DigitalUNIX(OSF/1,Tru64),Irix,F(xiàn)reeBSD,BSD/OS,SCO,AIX,OS390,QNX等等。面向?qū)ο?,Qt的良好封裝機(jī)制使得Qt的模塊化程度非常高,可重用性較好,對(duì)于用戶開發(fā)來(lái)說是非常方便的。Qt提供了一種稱為signals/slots的安全類型來(lái)替代callback,這使得各個(gè)元件之間的協(xié)同工作變得十分簡(jiǎn)單。豐富的API,Qt包括多達(dá)250個(gè)以上的C++類,還提供基于模板的collections,serialization,file,I/Odevice,directorymanagement,date/time類.甚至還包括正則表達(dá)式的處理功能。四:項(xiàng)目分析(1)這種小型的游戲的開發(fā)方法可以采用結(jié)構(gòu)化方法分析與設(shè)計(jì)。首先,分析軟件的邏輯模型,也就是這個(gè)軟件需要“做什么”。然后,再建立軟件的物理模型,既要“怎么做”的工程。1.主菜單
程序是通過類的成員函數(shù)Game()來(lái)實(shí)現(xiàn)對(duì)主菜單的輸入與輸出的處理。
2.獲得游戲幫助功能
程序是由類的成員函數(shù)Help()來(lái)實(shí)現(xiàn)。3.顯示游戲數(shù)據(jù)功能
程序是由類的成員函數(shù)Show()來(lái)實(shí)現(xiàn)。
4.模擬游戲功能
程序是由類的成員函數(shù)Game()來(lái)實(shí)現(xiàn)。
5.退出模擬游戲功能
使程序退出工作狀態(tài)。(2)類的聲明其聲明如下:class
DiceGame
{
private:
//
數(shù)據(jù)成員:
int
numOfWin;
//
勝利數(shù)次
int
numOfLose;
//
失敗數(shù)次
int
numOfTie;
//
平局?jǐn)?shù)次
//
輔助函數(shù)
int
RollDice();
//
模擬投擲一次骰子
void
Help();
//
獲得幫助
void
Show();
//
顯示統(tǒng)計(jì)結(jié)果
public:
//
方法聲明:
DiceGame();
//
無(wú)參數(shù)的構(gòu)造函數(shù)
virtual
~DiceGame(){}
//
析構(gòu)函數(shù)
void
Game();
//
模擬游戲五:程序流程圖游戲開始輸入輸入1,2,33、退出游戲2、游戲開始1、幫助3、退出游戲2、游戲開始1、幫助顯示結(jié)果顯示結(jié)果 按任意鍵退出六:實(shí)驗(yàn)步驟1.
設(shè)計(jì)當(dāng)前時(shí)間為隨機(jī)數(shù)種子,模擬投擲一次兩個(gè)骰子,返回值為所投擲的兩顆骰子向上一面的點(diǎn)數(shù)之和。代碼如下:
int
DiceGame::RollDice()
//
模擬投擲一次骰子,返回值為所投的兩顆骰子向上一面的點(diǎn)數(shù)之和
{
int
numOfDice1;
//
所投擲的第1顆骰子向上一面的點(diǎn)數(shù)
int
numOfDice2
//
所投擲的第2顆骰子向上一面的點(diǎn)數(shù)
int
sum;
//
所投擲的兩顆骰子向上一面的點(diǎn)數(shù)之和
numOfDice1
=
1
+
Rand::GetRand(6);
//
模擬所投擲骰子1的點(diǎn)數(shù)
numOfDice2
=
1
+
Rand::GetRand(6);
//
模擬所投擲骰子2的點(diǎn)數(shù)
sum
=
numOfDice1
+
numOfDice2;//
計(jì)算所投擲兩顆骰子向上一面的數(shù)之和
cout<<"選手?jǐn)S骰子:"<<
numOfDice1<<numOfDice2
<<
"="
<<
sum
<<
endl;
return
sum;
//
返回所擲骰子向上一面點(diǎn)數(shù)之和
}
2.
通過if選擇語(yǔ)句進(jìn)入游戲項(xiàng)目2,模擬第一次投擲骰子,并用switch開關(guān)語(yǔ)句來(lái)判斷枚舉量status的狀態(tài)是輸、贏或者平局,如果是平局,則記錄點(diǎn)數(shù)。代碼如下:
if(select==2)
//輸入2
{
sum=RollDice();
//模擬擲骰子
switch(sum)
{
case
7:
//擲得7或11勝利
case
11:
status=WIN;
numOfWin++;
break;
case
2:
//投擲得2、3、12,輸了
case
3:
case
12:
status=LOSE;
numOfLose++;
break;
default:
//投得其他數(shù)值,處于平局
status=TIE;
myPoint=sum;
numOfTie++;
cout<<"點(diǎn)數(shù)"<<myPoint<<endl;
}
3.通過status的狀態(tài)用if條件語(yǔ)句判斷玩家的輸贏,如果是平局,既status==TIE時(shí),利用UserSaysYes()函數(shù)讓玩家選擇是否繼續(xù)游戲。若玩家選擇繼續(xù)游戲,則依然用if條件語(yǔ)句判斷status的狀態(tài)來(lái)判斷輸贏,只有玩家在六次以內(nèi)再次投擲到相同的點(diǎn)數(shù)時(shí),玩家即勝利,但是,若首先投擲到的點(diǎn)數(shù)和為7或者連續(xù)6次都是平局,則游戲?yàn)檩斄?。代碼如下:
while(1)
{
if(status==WIN)
{
cout<<"恭喜你,贏得游戲!"<<endl;
break;
}
if(status==LOSE)
{cout<<"很遺憾,你輸了!"<<endl;
break;
}
while(status==TIE)
{
cout<<"你現(xiàn)在是平局,是否要繼續(xù)游戲";
if(UserSaysYes())
{
int
again;
again=RollDice();
//處于平局再次擲骰子
if(myPoint==again)
//擲得自己的點(diǎn)數(shù),贏得勝利
{
status=WIN;
numOfWin++;
break;
}
else
if(again==7)
//投得7,輸了
{
status=LOSE;
numOfLose++;
break;
}
else
//平局
{
numOfTie++;
if(numOfTie
==
6)
//平局6次,輸了
{
status=LOSE;
cout<<"你已平局6次,";
break;
}
}}}}4.如果玩家的輸入有誤,則需用if條件語(yǔ)句判斷,并提示正確的輸入。代碼如下:
if(select!=1&&select!=2&&select!=3)
//若輸入不是
1,2,3
重新輸入
{
cout<<"請(qǐng)用1,2,3回答"<<endl;
continue;
}七:實(shí)驗(yàn)結(jié)果游戲開始時(shí)的界面及玩家選項(xiàng)的提示
2.若玩家輸入有誤,則需提醒玩家輸入正確的選項(xiàng)進(jìn)入游戲.若玩家中途忘記游戲規(guī)則,則課選擇選項(xiàng)1,進(jìn)入幫助提醒的界面玩家選擇選項(xiàng)2,進(jìn)入游戲,并在第一次投擲中獲得勝利
玩家進(jìn)入游戲,第一次投擲獲得點(diǎn)數(shù),但最后投擲出了點(diǎn)數(shù)是7,所以失敗了.6.玩家第一希投擲為平局,獲得點(diǎn)數(shù),但在接下來(lái)的次投擲中連續(xù)6次平局,由游戲規(guī)則可知,玩家在此局中又失敗了
玩家玩完了游戲,選擇選項(xiàng)3退出游戲,并顯示玩家在此次游戲中的結(jié)果八:實(shí)驗(yàn)心得
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 光的折射、透鏡成象的課件其它
- 贛南師范大學(xué)科技學(xué)院《行政訴訟法》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛南科技學(xué)院《職業(yè)生涯發(fā)展和就業(yè)指導(dǎo)Ⅲ》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛東學(xué)院《機(jī)械設(shè)備故障診斷》2023-2024學(xué)年第一學(xué)期期末試卷
- 甘肅中醫(yī)藥大學(xué)《醫(yī)學(xué)實(shí)驗(yàn)技術(shù)導(dǎo)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛南科技學(xué)院《福利經(jīng)濟(jì)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2022年上海財(cái)經(jīng)大學(xué)國(guó)際教育學(xué)院自考英語(yǔ)(二)練習(xí)題(附答案解析)
- 七年級(jí)科學(xué)上冊(cè)8.1溶液的形成8.1.2水以外的溶劑學(xué)案無(wú)答案牛津上海版
- 三年級(jí)數(shù)學(xué)下冊(cè)二圖形的運(yùn)動(dòng)第1課時(shí)軸對(duì)稱一教案北師大版
- 冬季行車安全培訓(xùn)課件
- 提高無(wú)創(chuàng)呼吸機(jī)患者的依從性
- 小兒急性顱內(nèi)壓增高的護(hù)理課件
- 腫瘤科工作制度
- 幼兒園幼兒日常行為規(guī)范
- 供應(yīng)鏈質(zhì)量防線:供應(yīng)商質(zhì)量管理的策略、方法與實(shí)踐
- 有限空間作業(yè)安全管理監(jiān)理實(shí)施細(xì)則
- GB/T 4795-2023船用艙底水處理裝置
- 融合心理健康教育的教學(xué)設(shè)計(jì)(八年級(jí)數(shù)學(xué)下冊(cè)蘇科版教案)
- 企業(yè)實(shí)際控制人的協(xié)議書
- 質(zhì)量管理體系ISO9001-2015標(biāo)準(zhǔn)
- 通信網(wǎng)絡(luò)英語(yǔ)課件
評(píng)論
0/150
提交評(píng)論