一嵌入式實(shí)驗(yàn)報(bào)告_第1頁(yè)
一嵌入式實(shí)驗(yàn)報(bào)告_第2頁(yè)
一嵌入式實(shí)驗(yàn)報(bào)告_第3頁(yè)
一嵌入式實(shí)驗(yàn)報(bào)告_第4頁(yè)
一嵌入式實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論