2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  課程設計報告</b></p><p>  課程名稱:C++面向?qū)ο蟪绦蛟O計實驗和課程設計教程</p><p>  課題名稱:投擲骰子游戲</p><p>  系別: 計算機科學與工程</p><p>  專業(yè): 計算機科學與技術</p><p><b

2、>  學號: </b></p><p><b>  姓名: </b></p><p><b>  指導教師:</b></p><p><b>  日期: </b></p><p><b>  設計目的與要求</b></

3、p><p><b>  課程設計的目的:</b></p><p>  編寫程序?qū)崿F(xiàn)游戲:游戲者每次投擲兩顆骰子,每顆骰子是一個正方體,有6面上面分別標有1、2、3、4、5、6個圓點,當骰子停止時,將每顆骰子朝上的點的數(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>  課程設計的要求分析:</p><p>  設計該程序中應包括以下幾個功能:</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)設計</p><p>  1)設計一個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)還設計了另外一個Ra

11、nd類,該類能隨機生成數(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ù)種子</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),直到滿足條件為止的一個句子,當輸了或者贏了游戲后,便退出此循環(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ù)投擲骰子?”,通過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>  當游戲者玩完游戲時,可選擇3選

40、項,此時會退出游戲,并會在退出界面顯示游戲者的游戲數(shù)據(jù)。</p><p><b>  課程設計總結(jié)</b></p><p>  通過大一的C++學習,感覺自己學到了很多東西?;讼喈旈L的時間</p><p>  完成了此次任務的設計。說實話,我在這個過程中付出了很大的精力,由于以前沒有進行過此類程序的設計,開始起來比較吃力,感覺很難!</

41、p><p>  經(jīng)此次課程設計,我深刻地了解到,無論是學習一門語言,要經(jīng)???,經(jīng)常編寫和操作,逐步深入了解其內(nèi)涵,以加強一門語言的學習。C++作為一門面向?qū)ο蟮恼Z言,可能比較復雜一點,這就更要我們有持之以恒,不斷編程以達熟練。</p><p>  通過一個星期的課程設計,我有如下幾點體會:</p><p>  1.要設計一個大型程序,查找資料是至關重要的,在他人的基礎上

42、,再根據(jù)自己所學進行修改與調(diào)試,最后設計出自己想要的程序,這過程艱辛,但只要你持之以恒,成功指日可待。</p><p>  2.平時扎實的基礎也很關鍵,如果你平時學得就不怎么樣,那么你面對這么一個比較有難度的程序,你可能會望而卻步,看他人的程序都是個難點,更別說讓你自己去設計。為了解決此類問題,最好就是多向同學,老師請教,不要怕難為情。</p><p>  尤其是老師,評他們多年的編寫程序

43、的經(jīng)驗,要解決我們的問題,對他們來說只是小菜一碟,而且每個老師都是樂意為同學解決困難的。</p><p>  3.在編寫程序時,要抓住問題的要害,要善于將語言文字轉(zhuǎn)變?yōu)槌绦?。這雖然是要有豐富的經(jīng)驗才能做的好的,但也是有些小竅門的。程序設計過程有若是要解決實際問題,從解決實際問題的角度,我們可以這樣來看:首先要了解這個問題的基本要求,即輸入、輸出、完成從輸入到輸出的要求是什么;其次,從問題的要害入手,從前到后的解決

44、問題的每個方面,即從輸入開始入手,著重考慮如何從輸入導出輸出,在這個過程中,可確定所需的變量、數(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ì)。在做課程設計中就要這種的素質(zhì),通過老師和我的努力終于學會了很多不懂的類之類的內(nèi)容。通過本次課程設計,使我又一次了解到了C++的更多內(nèi)容,而且也使我及時的復習了以前的內(nèi)容,也為以后此類設計彌補了經(jīng)驗。</p><p><b>  參考資料</b></p><p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論