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

下載本文檔

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

文檔簡介

1、<p>  南京理工大學(xué)VC++課程設(shè)計報告</p><p>  課 程:VC++課程設(shè)計 </p><p>  系 別:計算機科學(xué)與工程學(xué)院</p><p><b>  班 級: </b></p><p><b>  學(xué) 號:</b></p>

2、<p><b>  姓 名:</b></p><p>  選題1名稱: 對抗游戲</p><p>  選題1難易級別:B級</p><p><b>  自報成績:80</b></p><p>  起止時間:2012年9月15號到2012年10月19號</p><

3、p><b>  指導(dǎo)教師: 張宏</b></p><p>  日期: 2012 年10 月 19日</p><p><b>  對抗游戲</b></p><p><b>  一 課題目標</b></p><p>  1.1 程序功能簡介 一個對抗游

4、戲,根據(jù)隨機產(chǎn)生的數(shù)字決定雙方的輸贏。</p><p>  1.2 課程設(shè)計要求</p><p> ?。?)當(dāng)雙方進行對抗時,游戲者可據(jù)自身的牌點決定是否繼續(xù)下注,例如拿到A,把握增大,則在計算機的牌點出來之前加大賭注,但不超過5點。</p><p> ?。?)將對方牌點的比較擴大為兩張牌點之和,若出現(xiàn)一組對子,則對子牌點大于任何單牌,若雙方均為對子,則比較牌點之和

5、。</p><p>  1.3 評定難易級別:B級</p><p><b>  二 具體實現(xiàn)</b></p><p>  2.1 程序總體方案</p><p><b>  2.1.1開發(fā)平臺</b></p><p>  操作系統(tǒng):Windows 7</p>

6、<p>  開發(fā)工具:VC++6.0</p><p>  2.1.2程序結(jié)構(gòu)或流程圖</p><p>  2.2 所做改進 </p><p>  2.2.1改進一 </p><p>  2.2.1.1 改進方案</p><p>  該程序只允許在玩家牌好的情況下加注,當(dāng)玩家選擇不加注時,通過添加一些

7、函數(shù),計算機選擇是否加注(當(dāng)計算機第一張牌為1-5時,計算機選擇退出,則該局游戲結(jié)束;當(dāng)計算機的第一張牌為6-10時,計算機加注為1,繼續(xù)游戲;當(dāng)計算機的第一張牌為“J”“Q”“K”“A”中的一張時,計算機加注為2,繼續(xù)游戲)。</p><p>  2.2.1.2 具體實現(xiàn)</p><p>  int War::Judge(int&y)</p><p>&l

8、t;b>  {</b></p><p>  if(comp<=10)</p><p><b>  {</b></p><p>  switch(comp)</p><p><b>  {</b></p><p><b>  case 1:&l

9、t;/b></p><p><b>  case 2:</b></p><p><b>  case 3:</b></p><p><b>  case 4:</b></p><p><b>  case 5:</b></p><

10、;p>  cout<<"電腦也選擇退出\n";y=0;cout<<'\n';break;</p><p><b>  case 6:</b></p><p><b>  case 7:</b></p><p><b>  case 8:</

11、b></p><p><b>  case 9:</b></p><p><b>  case 10:</b></p><p>  cout<<"加注金額:"<<1;y=1;cout<<'\n';</p><p><

12、;b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  cout<<"加注金額:"<<2;y=2;cou

13、t<<'\n';</p><p><b>  }</b></p><p><b>  return y;</b></p><p><b>  }</b></p><p><b>  2.2.2改進二</b></p>

14、<p>  2.2.2.1 改進方案</p><p>  自己制定比較規(guī)則,先判斷是否是對子,對子最大(若都為對子,則比較和大的為大),再判斷是否是順子(都為順子,則判斷和大的為大),最后判斷和值大小。</p><p>  2.2.2.2 具體實現(xiàn)</p><p>  void Compare(War&A,War&B,int&d,

15、int y) // 判斷牌面的大小,同時通過d返回輸或贏的分數(shù)</p><p><b>  {</b></p><p>  cout<<"######統(tǒng)計######\n";</p><p><b>  {</b></p><p>  int i,j,m,n,p,q

16、,s,w;</p><p>  i=A.PLAYER(),j=B.PLAYER(),m=A.COMP(),n=B.COMP();</p><p><b>  p=i-j;</b></p><p><b>  q=m-n;</b></p><p><b>  s=i+j;</b>

17、</p><p><b>  w=m+n;</b></p><p>  if(i==j&&m!=n)</p><p>  {cout<<"恭喜你^^,玩家是對子!\n";d=y+1;}</p><p>  else if(i!=j&&m==n)</p&

18、gt;<p>  {cout<<"悲劇了,電腦是對子!\n";d=-y;}</p><p>  else if(i==j&&m==n)</p><p>  {if(s>w){cout<<"恭喜你^^,玩家的對子大!\n";d=y+1;}</p><p>  else

19、if(s<w){cout<<"悲劇了,電腦的對子大!\n";d=-y;}</p><p>  else{cout<<"雙方勢均力敵!\n";d=0;}</p><p><b>  }</b></p><p><b>  else if{</b><

20、/p><p>  if((p==1||p==-1)&&(w!=1&&w!=-1))</p><p>  {cout<<"恭喜你^^,玩家的牌是順子!\n";d=y+1;}</p><p>  else if((p!=1&&p!=-1)&&(w==1||w==-1))</

21、p><p>  {cout<<"悲劇了,電腦的牌是順子!\n";d=-y;}</p><p>  else if((p==1||p==-1)&&(w==1&&w==-1)){</p><p>  if(s>w){cout<<"恭喜你^^,玩家的順子大!\n";d=y+1

22、;}</p><p>  else if(s<w){cout<<"悲劇了,電腦的順子大!\n";d=-y;}</p><p>  else{cout<<"雙方勢均力敵!\n";d=0;}}}</p><p><b>  else {</b></p><p

23、>  if(s>w){cout<<"恭喜你^^,玩家的牌大!\n";d=y+1;}</p><p>  else if(s<w){cout<<"悲劇了,電腦的牌大!\n";d=-y;}</p><p>  else{cout<<"雙方勢均力敵!\n";d=0;}</p&g

24、t;<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  2.2.3改進三</b></p><p>  2.2.3 改進方案</p><

25、p>  該程序的原始界面太單調(diào),通過增加一些函數(shù),使得界面能包括該游戲的名稱、級別、指導(dǎo)老師的名稱、設(shè)計者的名稱、學(xué)號等。</p><p>  2.2.3 具體實現(xiàn)</p><p><b>  首先定義函數(shù)</b></p><p>  void Center_Text(char ShellText[80]) //將函數(shù)參數(shù)(字符串

26、)在屏幕上居中顯示</p><p><b>  {</b></p><p>  int length;</p><p>  int center;</p><p>  length= strlen(ShellText); //取得欲顯示字符串的大小</p><p>  center = (80

27、 - length)/2; //整個屏幕的列數(shù)為80,取得字符串在該行的其始位置</p><p>  for(;center!=0;center--) //在字符串前輸出空格</p><p><b>  {</b></p><p>  cputs(" ");</p><p><b&

28、gt;  }</b></p><p>  cputs(ShellText);</p><p><b>  }</b></p><p>  再將下列代碼放在主函數(shù)中</p><p>  Center_Text("C++課程設(shè)計報告");</p><p>  cout&

29、lt;<endl;cout<<endl;</p><p>  Center_Text("撲克牌游戲");</p><p>  cout<<endl<<"\n";cout<<endl;</p><p>  Center_Text("指導(dǎo)老師:張宏");&l

30、t;/p><p>  cout<<endl<<"\n";cout<<endl;</p><p>  Center_Text("設(shè)計者:周磊");</p><p>  cout<<endl<<"\n";cout<<endl; </p&g

31、t;<p>  Center_Text("學(xué)號:1106840211");</p><p>  cout<<endl<<"\n";cout<<endl;</p><p>  Center_Text("時間:2012-10-01");</p><p>  co

32、ut<<endl<<"\n";cout<<endl;</p><p><b>  三 調(diào)試報告</b></p><p>  3.1調(diào)試時的界面顯示情況。</p><p><b> ?。?):初始界面</b></p><p>  (2):玩家選擇

33、加注時,電腦的默認加注為1</p><p> ?。?):玩家不選擇加注時,電腦的第一張牌為1-5時,電腦也選擇退出</p><p>  (4):玩家不選擇加注時,電腦的第一張牌為6-10時,電腦的加注為1</p><p> ?。?):玩家不選擇加注時,電腦的第一張牌為J/Q/K/A時,電腦的加注 為2</p><p>  (6):玩家選擇退出

34、時,界面顯示情況</p><p><b>  3.2調(diào)試報告:</b></p><p><b>  四 總體小結(jié)</b></p><p>  問題1:如何自由地下賭注,并在計算機內(nèi)保存?</p><p>  解決辦法: 參看書上有關(guān)類,構(gòu)造函數(shù),和運算符重載函數(shù)的內(nèi)容。并向同學(xué)請教。</p&g

35、t;<p>  問題2: 如何編寫主函數(shù)?</p><p>  解決辦法:根據(jù)課程設(shè)計要求,多上機調(diào)試,并向同學(xué)請教。直到程序正常運行。</p><p>  問題3:如何判斷玩家和計算機玩的大?。?lt;/p><p><b>  解決辦法:方法一:</b></p><p>  void Compare(War&

36、amp;A,War&B,int&d,int y) // 判斷牌面的大小,同時通過d返回輸或贏的分數(shù)</p><p><b>  {</b></p><p>  cout<<"######統(tǒng)計######\n";</p><p><b>  {</b></p>

37、<p>  int i,j,m,n;</p><p>  i=A.PLAYER(),j=B.PLAYER(),m=A.COMP(),n=B.COMP();</p><p>  if(i==j&&m!=n)</p><p>  {cout<<"恭喜你^^,玩家是對子!\n";d=y+1;}</p>

38、<p>  else if(i!=j&&m==n)</p><p>  {cout<<"悲劇了,電腦是對子!\n";d=-y;}</p><p><b>  else {</b></p><p>  if(i+j>m+n)</p><p>  {cout&

39、lt;<"恭喜你^^,玩家的牌大!\n";d=y+1;}</p><p>  else if(i+j<m+n)</p><p>  {cout<<"悲劇了,電腦的牌大!\n";d=-y;}</p><p>  else {cout<<"雙方勢均力敵!\n";d=0;}&l

40、t;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  方法二:</b></p><p>  void Compare(War&A,

41、War&B,int&d,int y) // 判斷牌面的大小,同時通過d返回輸或贏的分數(shù)</p><p><b>  {</b></p><p>  cout<<"######統(tǒng)計######\n";</p><p><b>  switch(y)</b></p>

42、<p><b>  {case 0:</b></p><p><b>  {</b></p><p>  if(A.PLAYER()>A.COMP()){cout<<"恭喜你^^,玩家的牌大!\n";d=1;}</p><p>  else if(A.PLAYER()==

43、A.COMP())cout<<"雙方勢均力敵!\n";</p><p>  else {cout<<"555,電腦的牌大!\n";d=-1;}</p><p><b>  break;</b></p><p><b>  }</b></p>&l

44、t;p><b>  default:</b></p><p><b>  {</b></p><p>  int i,j,m,n;</p><p>  i=A.PLAYER()==B.PLAYER();</p><p>  j=A.COMP()==B.COMP();</p>&l

45、t;p>  m=(A.PLAYER()+B.PLAYER())>(A.COMP()+B.COMP());</p><p>  n=(A.PLAYER()+B.PLAYER())<(A.COMP()+B.COMP());</p><p><b>  if(i&&j)</b></p><p>  {if(A.PL

46、AYER()>A.COMP()){cout<<"恭喜你^^,玩家的對子大!\n";d=y+1;}</p><p>  else if(A.PLAYER()<A.COMP()){cout<<"555,電腦的對子大!\n";d=-y-1;}</p><p>  else cout<<"雙方勢均力敵

47、!\n";}</p><p>  else if(i==1&&j==0)</p><p>  {cout<<"恭喜你^^,玩家是對子!\n";d=y+1;}</p><p>  else if(j==1&&i==0)</p><p>  {cout<<&qu

48、ot;555,電腦是對子!\n";d=-y-1;}</p><p><b>  else </b></p><p><b>  {</b></p><p><b>  if(m)</b></p><p>  {cout<<"恭喜你^^,玩家的牌大

49、!\n";d=y+1;}</p><p>  else if(n)</p><p>  {cout<<"555,電腦的牌大!\n";d=-y-1;}</p><p>  else {cout<<"雙方勢均力敵!\n";d=0;}</p><p><b>  }

50、</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  心得體會:</b></p><p>  開始進行設(shè)計時,總覺得

51、無從下手,感覺這是一個不可能完成的任務(wù)。后來在同學(xué)的建議下,將這學(xué)期C++所學(xué)的c++知識仔細的看了幾遍,再開始看C++課程設(shè)計書。鑒于對抗游戲和撲克牌游戲接近生活,對它們的設(shè)計要求理解比較透徹,所以選擇了它們。首先,先發(fā)了五天的時間看設(shè)計要求和源代碼,然后才進行編寫,經(jīng)過對所編程序的不斷調(diào)試和改寫以及與他人編寫的進行對比,最后終于使程序能正常運行了。為了更好的進行更改,我把所編的程序打印下來,仔細的查看每個函數(shù),用筆進行修改,然后再到

52、程序上修改調(diào)試。當(dāng)然,在整個實驗過程中,不斷遇到各種問題,在同學(xué)的幫助下和自己的努力下,不斷的解決問題,一次次的不斷嘗試,不斷調(diào)節(jié),使解決問題的能力有了提高。并對程序的編寫有了一定的了解,對將來的學(xué)習(xí)方向有了進一步的認識。</p><p>  程序不足之處:沒有進行撲克牌的創(chuàng)建、洗牌、分發(fā)等功能;沒有進行牌面花色的比較。沒有設(shè)計對對碰等牌點規(guī)則。</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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論