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