

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 課程名稱:C++面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)和課程設(shè)計(jì)教程</p><p> 課題名稱:投擲骰子游戲</p><p> 系別: 計(jì)算機(jī)科學(xué)與工程</p><p> 專業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)</p><p><b
2、> 學(xué)號(hào): </b></p><p><b> 姓名: </b></p><p><b> 指導(dǎo)教師:</b></p><p><b> 日期: </b></p><p><b> 設(shè)計(jì)目的與要求</b></
3、p><p><b> 課程設(shè)計(jì)的目的:</b></p><p> 編寫(xiě)程序?qū)崿F(xiàn)游戲:游戲者每次投擲兩顆骰子,每顆骰子是一個(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或1
4、0,那么為游戲者的點(diǎn)數(shù);如要想贏得勝利,必須繼續(xù)投擲骰子,直到取得自已的點(diǎn)數(shù)(也就是第一次投擲出的4、5、6、8、9或10)為止, 但是如果投擲出的和為7,那么游戲者輸?shù)袅擞螒颉?lt;/p><p> 課程設(shè)計(jì)的要求分析:</p><p> 設(shè)計(jì)該程序中應(yīng)包括以下幾個(gè)功能:</p><p> 主菜單界面:包含多具有的所有功能的選項(xiàng)。</p><
5、p> 獲得游戲幫助功能:告訴游戲者游戲規(guī)則。</p><p> 顯示游戲數(shù)據(jù)功能:在游戲結(jié)束時(shí),顯示游戲者獲得的游戲數(shù)據(jù)。</p><p> 模擬游戲功能:選擇進(jìn)入,開(kāi)始游戲。</p><p> 退出模擬游戲功能:玩完游戲后退出程序。</p><p><b> 工具/準(zhǔn)備工作</b></p>
6、<p> 開(kāi)發(fā)環(huán)境:Visual C++ 6.0</p><p><b> 分析</b></p><p><b> 系統(tǒng)功能結(jié)構(gòu)</b></p><p> 重要數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</p><p> 1)設(shè)計(jì)一個(gè)DiceGame類,其類的數(shù)據(jù)成員包括numOfWin、numOfL
7、ose、numOfTie,分別代表游戲勝利的數(shù)次、失敗的數(shù)次、平局的數(shù)次;</p><p> 輔助函數(shù)包括RollDice()、Help()、Show(),分別表示模擬投擲一次骰子、獲得幫助、顯示統(tǒng)計(jì)結(jié)果;</p><p> class DiceGame</p><p><b> {</b></p><p><
8、;b> private:</b></p><p> int numOfWin; // 勝利數(shù)次</p><p> int numOfLose; // 失敗數(shù)次</p><p> int numOfTie; // 平局?jǐn)?shù)次</p><p><b> // 輔助函數(shù)</b></p>
9、<p> int RollDice(); // 模擬投擲一次骰子</p><p> void Help(); // 獲得幫助</p><p> void Show(); // 顯示統(tǒng)計(jì)結(jié)果</p><p><b> public:</b></p><p> DiceGame(); // 無(wú)參數(shù)的構(gòu)造函
10、數(shù)</p><p> virtual ~DiceGame(){}// 析構(gòu)函數(shù)</p><p> void Game();// 模擬游戲</p><p> void getscore(); //獲得的積分</p><p><b> };</b></p><p> 2)還設(shè)計(jì)了另外一個(gè)Ra
11、nd類,該類能隨機(jī)生成數(shù)字提供游戲中骰子使用,它設(shè)置了當(dāng)前時(shí)間為時(shí)間種子。</p><p> class Rand</p><p><b> {</b></p><p><b> public:</b></p><p> static void SetRandSeed() { srand((
12、unsigned)time(NULL)); }</p><p> // 設(shè)置當(dāng)前時(shí)間為隨機(jī)數(shù)種子</p><p> static int GetRand(int n){ return rand() % n; }// 生成0 ~ n-1之間的隨機(jī)數(shù)</p><p> static int GetRand(){ return rand(); }
13、// 生成0 ~ n-1之間的隨機(jī)數(shù)</p><p><b> };</b></p><p><b> 實(shí)現(xiàn)步驟</b></p><p> 通過(guò)void DiceGame::Game()模擬游戲,顯示讀取程序,進(jìn)入主界面后有三個(gè)選擇項(xiàng),其實(shí)是通過(guò)if,while等一些語(yǔ)句實(shí)現(xiàn)的,現(xiàn)將實(shí)現(xiàn)步驟分析如下:</p&g
14、t;<p> 1.if(select!='1'&&select!='2'&&select!='3') </p><p> //輸入不是 1,2,3 重新輸入</p><p><b> {</b></p><p> cout<<&qu
15、ot;請(qǐng)輸入 1,2,3 中任意一個(gè)數(shù)!"<<endl;</p><p> cout<<select<<endl;</p><p><b> continue;</b></p><p><b> }</b></p><p> 通過(guò)上面的語(yǔ)句,可分
16、析出,若輸入不是1,2,3中的任意一個(gè)數(shù),則會(huì)顯示“請(qǐng)輸入1,2,3中任意一個(gè)數(shù)”的字樣,這樣是為了防止輸入此三個(gè)數(shù)以外的數(shù)字或者字符可能會(huì)有錯(cuò)誤。</p><p> 2. if(select=='1') //輸入1</p><p><b> {</b></p><p><b> Help();</b>
17、;</p><p><b> }</b></p><p> 若輸入1,則會(huì)出現(xiàn)幫助的字樣。</p><p> 3.else if(select=='2') //輸入2</p><p> sum=RollDice();//模擬擲骰子</p><p> 此語(yǔ)句緊接2所示的語(yǔ)句
18、,若選擇2,則開(kāi)始模擬投擲游戲。</p><p> 4. if(sum==7||sum==11) //擲得7 或11 勝利</p><p><b> {</b></p><p> status=WIN;</p><p> numOfWin++;</p><p><b> }&l
19、t;/b></p><p> else if(sum==2||sum==3||sum==12) //輸了</p><p><b> {</b></p><p> status=LOSE;</p><p> numOfLose++;</p><p><b> }</b
20、></p><p> else //處于平局</p><p><b> {</b></p><p> status=TIE;</p><p> myPoint=sum;</p><p> numOfTie++;</p><p> cout<<&
21、quot;點(diǎn)數(shù)為【 "<<myPoint<<" 】"<<endl;</p><p><b> }</b></p><p> 若擲得7或11,則玩家勝利,若得到的點(diǎn)數(shù)為2,3,12中任意的一個(gè)數(shù)時(shí),由status=LOSE顯示玩家失?。蝗臬@得的點(diǎn)數(shù)不是7,11,也不是2,3,12,則顯示平局,經(jīng)由my
22、Point=sum;numOfTie++; </p><p> cout<<"點(diǎn)數(shù)為【 "<<myPoint<<" 】"<<endl;這三條語(yǔ)句得出點(diǎn)數(shù)。</p><p> 5.while(1)</p><p><b> ?。?lt;/b></p>
23、<p><b> ?。?lt;/b></p><p> 此句是執(zhí)行循環(huán),直到滿足條件為止的一個(gè)句子,當(dāng)輸了或者贏了游戲后,便退出此循環(huán)。</p><p> 6. if(status==WIN)</p><p><b> {</b></p><p> cout<<"
24、;恭喜!你贏了!"<<endl;</p><p><b> break;</b></p><p><b> }</b></p><p> 如果游戲狀態(tài)為贏,則輸出“恭喜!你贏了!”。</p><p> 7. if(status==LOSE)</p><
25、;p><b> {</b></p><p> cout<<"遺憾! 你輸了!"<<endl;</p><p><b> break;</b></p><p><b> }</b></p><p> 如果游戲狀態(tài)為輸,則
26、輸出“很遺憾!你輸了!”</p><p> 8. if(status==TIE)</p><p><b> {</b></p><p> cout<<"平局!是否繼續(xù)投擲骰子?";</p><p> bool Getanswer=UserSaysYes();//得到用戶的指示<
27、;/p><p><b> ?。?lt;/b></p><p> 如果游戲狀態(tài)為平局,則輸出“平局!是否繼續(xù)投擲骰子?”,通過(guò)bool Getanswer=UserSaysYes();來(lái)實(shí)現(xiàn)等待用戶的提示。</p><p> 9. while(Getanswer)</p><p><b> {</b>&l
28、t;/p><p> int repeat;</p><p> repeat=RollDice();//處于平局再次擲骰子</p><p> if(myPoint==repeat) //擲得自己的點(diǎn)數(shù),贏得勝利</p><p><b> {</b></p><p> status=WIN;&l
29、t;/p><p> numOfWin++; //所有勝局?jǐn)?shù)</p><p><b> break;</b></p><p><b> }</b></p><p> 如果得到了再來(lái)一次的指令,則會(huì)再執(zhí)行投擲骰子,若擲得自己的點(diǎn)數(shù),則贏得勝利,并輸出所有勝局?jǐn)?shù)。</p><p&g
30、t; 10. else if(repeat==7) //擲得7,輸了</p><p><b> {</b></p><p> status=LOSE;</p><p> numOfLose++;//所有敗局?jǐn)?shù)</p><p><b> break;</b></p><p
31、><b> }</b></p><p> 若重新擲得到的點(diǎn)數(shù)為7,則玩家輸?shù)粲螒?,并顯示所有失敗的游戲局?jǐn)?shù)。</p><p> 11. else //平局</p><p><b> {</b></p><p> numOfTie++; //所有平局?jǐn)?shù)</p><p
32、><b> break;</b></p><p><b> ?。?</b></p><p> 若重新投擲的點(diǎn)數(shù)不是上述所描述的點(diǎn)數(shù),則顯示平局,且會(huì)給出所有平局的局?jǐn)?shù)。</p><p> 12. if(!Getanswer)</p><p><b> break;</b
33、></p><p> 若沒(méi)有用戶指令,則退出。</p><p> 13. else if(select=='3') //輸入為3</p><p><b> {</b></p><p> cout<<"是否退出?";</p><p>
34、if(UserSaysYes())//退出游戲</p><p><b> break;</b></p><p><b> else</b></p><p> select=1; //返回游戲</p><p><b> }</b></p><p>
35、 若選擇第3項(xiàng),則會(huì)出現(xiàn)“是否退出”的提示,如果用戶選擇y,則退出,否則重新回到選擇界面。</p><p> 14. Show();// 顯示統(tǒng)計(jì)結(jié)果</p><p> getscore();</p><p><b> 調(diào)試與結(jié)論</b></p><p> 1.運(yùn)行程序后的主菜單</p><
36、p> 運(yùn)行程序后,進(jìn)入主菜單,主菜單會(huì)出現(xiàn)游戲玩法和具體的操作序號(hào),游戲者可根據(jù)需求進(jìn)行操作。</p><p><b> 2.獲得幫助界面</b></p><p> 在游戲主菜單,用戶操作選擇1,進(jìn)入游戲幫助界面,界面會(huì)顯示游戲的玩法,方便用戶了解。</p><p><b> 3.游戲界面</b></p
37、><p><b> 1)游戲勝利</b></p><p> 在主菜單選擇2,進(jìn)入游戲界面,并開(kāi)始游戲,根據(jù)游戲規(guī)則,如果所得到的和為7或11,那么游戲者為贏得勝利;</p><p><b> 2)游戲失敗</b></p><p> 若進(jìn)入游戲后,根據(jù)游戲規(guī)則,如果所得到的和為2、3或12,那么游
38、戲者為輸?shù)袅恕?lt;/p><p><b> 3)平局</b></p><p> 進(jìn)入游戲后,根據(jù)游戲規(guī)則,如果和為4、5、6、8、9或10,那么為游戲者的點(diǎn)數(shù);如要想贏得勝利,必須繼續(xù)投擲骰子,直到取得自已的點(diǎn)數(shù)(也就是第一次投擲出的4、5、6、8、9或10)為止,沒(méi)有投到自己的點(diǎn)數(shù)之前顯示為平局。</p><p> 在游戲平局時(shí),游戲者繼
39、續(xù)投擲,根據(jù)游戲規(guī)則,但是如果投擲出的和為7,那么游戲者輸?shù)袅擞螒颉?lt;/p><p> 在游戲平局時(shí),由于游戲者有自己已擲出的點(diǎn)數(shù),必須繼續(xù)投擲骰子,直到取得自已的點(diǎn)數(shù)(也就是第一次投擲出的4、5、6、8、9或10)為止,此時(shí)游戲 者勝利!</p><p><b> 4退出游戲界面</b></p><p> 當(dāng)游戲者玩完游戲時(shí),可選擇3選
40、項(xiàng),此時(shí)會(huì)退出游戲,并會(huì)在退出界面顯示游戲者的游戲數(shù)據(jù)。</p><p><b> 課程設(shè)計(jì)總結(jié)</b></p><p> 通過(guò)大一的C++學(xué)習(xí),感覺(jué)自己學(xué)到了很多東西?;讼喈?dāng)長(zhǎng)的時(shí)間</p><p> 完成了此次任務(wù)的設(shè)計(jì)。說(shuō)實(shí)話,我在這個(gè)過(guò)程中付出了很大的精力,由于以前沒(méi)有進(jìn)行過(guò)此類程序的設(shè)計(jì),開(kāi)始起來(lái)比較吃力,感覺(jué)很難!</
41、p><p> 經(jīng)此次課程設(shè)計(jì),我深刻地了解到,無(wú)論是學(xué)習(xí)一門(mén)語(yǔ)言,要經(jīng)??矗?jīng)常編寫(xiě)和操作,逐步深入了解其內(nèi)涵,以加強(qiáng)一門(mén)語(yǔ)言的學(xué)習(xí)。C++作為一門(mén)面向?qū)ο蟮恼Z(yǔ)言,可能比較復(fù)雜一點(diǎn),這就更要我們有持之以恒,不斷編程以達(dá)熟練。</p><p> 通過(guò)一個(gè)星期的課程設(shè)計(jì),我有如下幾點(diǎn)體會(huì):</p><p> 1.要設(shè)計(jì)一個(gè)大型程序,查找資料是至關(guān)重要的,在他人的基礎(chǔ)上
42、,再根據(jù)自己所學(xué)進(jìn)行修改與調(diào)試,最后設(shè)計(jì)出自己想要的程序,這過(guò)程艱辛,但只要你持之以恒,成功指日可待。</p><p> 2.平時(shí)扎實(shí)的基礎(chǔ)也很關(guān)鍵,如果你平時(shí)學(xué)得就不怎么樣,那么你面對(duì)這么一個(gè)比較有難度的程序,你可能會(huì)望而卻步,看他人的程序都是個(gè)難點(diǎn),更別說(shuō)讓你自己去設(shè)計(jì)。為了解決此類問(wèn)題,最好就是多向同學(xué),老師請(qǐng)教,不要怕難為情。</p><p> 尤其是老師,評(píng)他們多年的編寫(xiě)程序
43、的經(jīng)驗(yàn),要解決我們的問(wèn)題,對(duì)他們來(lái)說(shuō)只是小菜一碟,而且每個(gè)老師都是樂(lè)意為同學(xué)解決困難的。</p><p> 3.在編寫(xiě)程序時(shí),要抓住問(wèn)題的要害,要善于將語(yǔ)言文字轉(zhuǎn)變?yōu)槌绦?。這雖然是要有豐富的經(jīng)驗(yàn)才能做的好的,但也是有些小竅門(mén)的。程序設(shè)計(jì)過(guò)程有若是要解決實(shí)際問(wèn)題,從解決實(shí)際問(wèn)題的角度,我們可以這樣來(lái)看:首先要了解這個(gè)問(wèn)題的基本要求,即輸入、輸出、完成從輸入到輸出的要求是什么;其次,從問(wèn)題的要害入手,從前到后的解決
44、問(wèn)題的每個(gè)方面,即從輸入開(kāi)始入手,著重考慮如何從輸入導(dǎo)出輸出,在這個(gè)過(guò)程中,可確定所需的變量、數(shù)組、函數(shù),然后確定處理過(guò)程算法,可得最后結(jié)論。</p><p> 4.C++語(yǔ)言是一門(mén)面向?qū)ο蟮恼Z(yǔ)言,不同于C 語(yǔ)言,要考慮程序數(shù)據(jù)的行為。類就是添加的新內(nèi)容,同時(shí)使C++的程序變得更加優(yōu)化,類所需的構(gòu)造函數(shù)和折構(gòu)函數(shù),數(shù)據(jù)成員和成員函數(shù)。每個(gè)程序做前都要考慮可行性和正確性。</p><p>
45、 每個(gè)大程序可能會(huì)出項(xiàng)種種小錯(cuò)誤,會(huì)讓人非常煩燥,所以要冷靜查找,要有恒心,作為編程的人員要具有那些素質(zhì)。在做課程設(shè)計(jì)中就要這種的素質(zhì),通過(guò)老師和我的努力終于學(xué)會(huì)了很多不懂的類之類的內(nèi)容。通過(guò)本次課程設(shè)計(jì),使我又一次了解到了C++的更多內(nèi)容,而且也使我及時(shí)的復(fù)習(xí)了以前的內(nèi)容,也為以后此類設(shè)計(jì)彌補(bǔ)了經(jīng)驗(yàn)。</p><p><b> 參考資料</b></p><p>
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 擲骰子游戲-c語(yǔ)言程序課程設(shè)計(jì)
- 擲骰子游戲電路的設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì)論文
- 擲骰子規(guī)則
- 超市擲骰子促銷方案(參考)
- 電工電子課程設(shè)計(jì)--電骰子
- 紙牌游戲-課程設(shè)計(jì)報(bào)告
- 掃雷游戲課程設(shè)計(jì)報(bào)告
- 掃雷游戲課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)-猜數(shù)游戲課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)-蜘蛛紙牌游戲設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 24點(diǎn)游戲課程設(shè)計(jì)報(bào)告
- java火柴游戲課程設(shè)計(jì)報(bào)告
- vb打字游戲課程設(shè)計(jì)報(bào)告
- 《猜拳小游戲》課程設(shè)計(jì)報(bào)告
- c課程設(shè)計(jì)報(bào)告-打字游戲
- 打磚塊游戲課程設(shè)計(jì)報(bào)告
- 24點(diǎn)游戲課程設(shè)計(jì)報(bào)告
- 猜數(shù)字游戲課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)--掃雷游戲報(bào)告
- 課程設(shè)計(jì)報(bào)告--猜數(shù)字游戲
評(píng)論
0/150
提交評(píng)論