版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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)入,開(kāi)始游戲。
5.退出模擬游戲功能。玩完游戲后退出程序。三:實(shí)驗(yàn)工具/準(zhǔn)備工作(1)實(shí)驗(yàn)開(kāi)始前,先回顧和復(fù)習(xí)相關(guān)內(nèi)容
在自己的電腦上安裝Visual
C++等集成開(kāi)發(fā)軟件C++C/C++的哲學(xué)就不一樣了,同一份程序代碼,只要在該平臺(tái)重新Compile成該平臺(tái)的執(zhí)行檔,就能在該平臺(tái)執(zhí)行,若文字模式下的程序,的確可以跨平臺(tái),程序完全不需修改,但GUI盛行以后,由于各GUI的Library都不一樣且沒(méi)有標(biāo)準(zhǔn),所以GUI程序并沒(méi)辦法跨平臺(tái)Compile,因?yàn)楦髌脚_(tái)都有專屬的Library。但是C/C++優(yōu)勢(shì)就是執(zhí)行速度快,若能解決GUILibrary的問(wèn)題,則跨平臺(tái)即可解決。Microsoft的VisualC++,MFC用的是完整的ANSIC++語(yǔ)言,所以語(yǔ)言部分不是問(wèn)題,但若你看過(guò)用MFC寫的程序,你一定會(huì)驚訝為什么這么復(fù)雜,程序代碼非常冗長(zhǎng)不好看,且MFC是有名的難學(xué),若VisualC++搭配.NETFramrwork,則無(wú)法使用ANSIC++,得用其.NET平臺(tái)版本的C++/CLI,相信這點(diǎn)很多人就有意見(jiàn)了,不過(guò).NETFramework由于設(shè)計(jì)的不錯(cuò),所以寫出來(lái)的程序相當(dāng)精簡(jiǎn)漂亮,感覺(jué)和C++Builder差不多,不過(guò)無(wú)論是C++Builder或VisualC++開(kāi)發(fā)的GUI,所開(kāi)發(fā)出來(lái)的程序都無(wú)法跨平臺(tái),當(dāng)然也無(wú)法跨平臺(tái)Compile。(2)QTA:QT的介紹Qt是一個(gè)跨平臺(tái)的開(kāi)發(fā)框架,橫跨包括是一個(gè)跨平臺(tái)的開(kāi)發(fā)框架,是一個(gè)跨平臺(tái)的開(kāi)發(fā)框架Unix/Linux/Mac/Windows/Meego等常見(jiàn)操作系統(tǒng)平臺(tái),并支持如等常見(jiàn)操作系統(tǒng)平臺(tái),等常見(jiàn)操作系統(tǒng)平臺(tái)Symbian/WindowCE/單片機(jī)等多種嵌入式平臺(tái)?!耙淮尉帉?,隨處單片機(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)行開(kāi)發(fā)。使用標(biāo)準(zhǔn)的面向?qū)ο髾C(jī)制支持使用C++進(jìn)行開(kāi)發(fā)。如果使用進(jìn)行開(kāi)發(fā)Qyoto和QtJambi,同樣可以使用和Java進(jìn)行開(kāi)發(fā)和同樣可以使用C#和進(jìn)行開(kāi)發(fā)Qt擁有擁有250個(gè)以上的C++類,包含了無(wú)數(shù)方法,接口全部使用統(tǒng)一、友好的方式命名,友好的方式命名,對(duì)于一些沒(méi)用過(guò)的方法不查文檔也可以知道用法Qt具有豐富的工具和幫助文檔,可以實(shí)現(xiàn)一鍵查詢用法具有豐富的工具和幫助文檔,具有豐富的工具和幫助文檔XML支持和支持和Webkit引擎集成支持和引擎集成QT遵循商業(yè)和開(kāi)源雙重協(xié)議遵循商業(yè)和開(kāi)源雙重協(xié)議合并后,即將以Qt作為塞班和的標(biāo)準(zhǔn)開(kāi)發(fā)框架,被Nokia合并后,Nokia即將以作為塞班和合并后即將以作為塞班和meego的標(biāo)準(zhǔn)開(kāi)發(fā)框架,的標(biāo)準(zhǔn)開(kāi)發(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支持。大量的開(kāi)發(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ì)于用戶開(kāi)發(fā)來(lái)說(shuō)是非常方便的。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)這種小型的游戲的開(kāi)發(fā)方法可以采用結(jié)構(gòu)化方法分析與設(shè)計(jì)。首先,分析軟件的邏輯模型,也就是這個(gè)軟件需要“做什么”。然后,再建立軟件的物理模型,既要“怎么做”的工程。1.主菜單
程序是通過(guò)類的成員函數(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();
//
模擬游戲五:程序流程圖游戲開(kāi)始輸入輸入1,2,33、退出游戲2、游戲開(kāi)始1、幫助3、退出游戲2、游戲開(kāi)始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.
通過(guò)if選擇語(yǔ)句進(jìn)入游戲項(xiàng)目2,模擬第一次投擲骰子,并用switch開(kāi)關(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.通過(guò)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é)果游戲開(kāi)始時(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ú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026屆河南省南陽(yáng)市高三上學(xué)期期末質(zhì)量評(píng)估歷史試題(含答案)
- 食物中毒及預(yù)防考試答案
- 2025 小學(xué)三年級(jí)科學(xué)下冊(cè)保護(hù)動(dòng)物多樣性的意義課件
- 《GAT 953-2011法庭科學(xué)槍口比動(dòng)能測(cè)速儀法測(cè)試規(guī)程》專題研究報(bào)告
- 《GAT 718-2007槍支致傷力的法庭科學(xué)鑒定判據(jù)》專題研究報(bào)告深度
- 2026年深圳中考語(yǔ)文考場(chǎng)實(shí)戰(zhàn)模擬試卷(附答案可下載)
- 采購(gòu)試卷題目及答案
- 2026年深圳中考數(shù)學(xué)命題趨勢(shì)預(yù)測(cè)試卷(附答案可下載)
- 雅思全真沖刺題庫(kù)及答案
- 2026年深圳中考?xì)v史拔尖培優(yōu)特訓(xùn)試卷(附答案可下載)
- 國(guó)家級(jí)算力樞紐節(jié)點(diǎn)(東數(shù)西算)跨區(qū)域調(diào)度網(wǎng)絡(luò)與綠色節(jié)能數(shù)據(jù)中心建設(shè)規(guī)劃方案
- 近五年河北中考英語(yǔ)試題及答案2025
- 山西省臨汾市2025-2026年八年級(jí)上物理期末試卷(含答案)
- (2025年)員工安全培訓(xùn)考試試題(含答案)
- GB/T 36132-2025綠色工廠評(píng)價(jià)通則
- 2025-2026學(xué)年北師大版八年級(jí)數(shù)學(xué)上冊(cè)期末復(fù)習(xí)卷(含答案)
- 2025年艾滋病培訓(xùn)試題與答案(全文)
- 【二下數(shù)學(xué)】計(jì)算每日一練60天(口算豎式脫式應(yīng)用題)
- 殘疾人服務(wù)與權(quán)益保護(hù)手冊(cè)(標(biāo)準(zhǔn)版)
- 2025年1月-12月時(shí)事政治歸納總結(jié)(備考必背)
- 云南師大附中2026屆高三高考適應(yīng)性月考卷(六)歷史試卷(含答案及解析)
評(píng)論
0/150
提交評(píng)論