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

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  課程設(shè)計(jì)說(shuō)明書(shū)</b></p><p>  題 目:“21”點(diǎn)紙牌游戲</p><p><b>  學(xué)生姓名: </b></p><p><b>  學(xué) 院:理學(xué)院</b></p><p><b>  班 級(jí):</b&g

2、t;</p><p><b>  指導(dǎo)教師: </b></p><p>  二〇一六年一月二十二日</p><p><b>  引言</b></p><p>  本次課程設(shè)計(jì)利用計(jì)算機(jī)高級(jí)語(yǔ)言C++進(jìn)行簡(jiǎn)單編程,實(shí)現(xiàn)簡(jiǎn)易的C++程序計(jì)算器的編程和運(yùn)行。通過(guò)Microsoft Visual C++ 6

3、.0軟件可以進(jìn)行C++程序編譯,通過(guò)模塊之間關(guān)系的確定及各模塊功能,最后設(shè)計(jì)一個(gè)簡(jiǎn)單的操作界面實(shí)現(xiàn)游戲。本系統(tǒng)通過(guò)C++高級(jí)語(yǔ)言進(jìn)行編程,并設(shè)計(jì)了簡(jiǎn)單明了的操作界面。簡(jiǎn)單的界面能給用戶(hù)更好的操作體驗(yàn),更直接而充分的掌握本程序的一些應(yīng)用和功能。通過(guò)直觀的方式,最終實(shí)現(xiàn)C++設(shè)計(jì)的應(yīng)用程序——“21點(diǎn)”紙牌游戲。本次課設(shè)所做程序雖然只是一個(gè)簡(jiǎn)單的C++計(jì)算器程序,但是基本的應(yīng)用功能都已具備,可以更好的用在實(shí)際應(yīng)用中。C++這個(gè)詞在中國(guó)大陸的

4、程序員圈子中通常被讀做“C加加”,而西方的程序員通常讀做“C plus plus”,“CPP”。它是一種使用非常廣泛的計(jì)算機(jī)編程語(yǔ)言。C++是一種靜態(tài)數(shù)據(jù)類(lèi)型檢查的、支持多重編程范式的通用程序設(shè)計(jì)語(yǔ)言。它支持過(guò)程化程序設(shè)計(jì)、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計(jì)、制作圖標(biāo)等等泛型程序設(shè)計(jì)等多種程序設(shè)計(jì)風(fēng)格。本學(xué)期我們開(kāi)設(shè)了“C++語(yǔ)言程序設(shè)計(jì)”這門(mén)課程。隨著老師的講解及對(duì)這門(mén)語(yǔ)言的深入認(rèn)識(shí)和學(xué)習(xí),我們已經(jīng)對(duì)這門(mén)計(jì)算機(jī)語(yǔ)言有了一定的</p>

5、;<p>  第一章 系統(tǒng)開(kāi)發(fā)環(huán)境的簡(jiǎn)介和特點(diǎn)</p><p>  1.1 開(kāi)發(fā)環(huán)境的簡(jiǎn)介</p><p>  Microsoft Visual C++ 6.0,簡(jiǎn)稱(chēng)VC6.0,是微軟推出的一款C++編譯器,將“高級(jí)語(yǔ)言”翻譯為“機(jī)器語(yǔ)言(低級(jí)語(yǔ)言)”的程序。Visual C++是一個(gè)功能強(qiáng)大的可視化軟件開(kāi)發(fā)工具。自1993年Microsoft公司推出Visual C++1

6、.0后,隨著其新版本的不斷問(wèn)世,Visual C++已成為專(zhuān)業(yè)程序員進(jìn)行軟件開(kāi)發(fā)的首選工具。雖然微軟公司推出了 Visual C++.NET(Visual C++7.0),但它的應(yīng)用的很大的局限性,只適用于Windows 2000、Windows XP和Windows NT4.0。所以實(shí)際中,更多的是以Visual C++6.0為平臺(tái)。Visual C++6.0不僅是一個(gè)C++ 編譯器,而且是一個(gè)基于Windows操作系統(tǒng)的可視化集成開(kāi)

7、發(fā)環(huán)境(integrated development environment,IDE)。Visual C++6.0由許多組件組成,包括編輯器、調(diào)試器以及程序向?qū)ppWizard、類(lèi)向?qū)lass Wizard等開(kāi)發(fā)工具。 這些組件通過(guò)一個(gè)名為Developer Studio的組件集成為和諧的開(kāi)</p><p>  1.2 開(kāi)發(fā)環(huán)境的特點(diǎn)</p><p>  由于C++是由C語(yǔ)言發(fā)展起來(lái)的

8、,也支持C語(yǔ)言的編譯。6.0版本是使用最多的版本,很經(jīng)典。最大的缺點(diǎn)是對(duì)于模版的支持比較差?,F(xiàn)在最新補(bǔ)丁為SP6,推薦安裝,否則易出現(xiàn)編譯時(shí)假死狀態(tài)和有些功能不可用的情況。同時(shí),6.0版本對(duì)windows7和windows8的兼容性較差</p><p>  第二章 系統(tǒng)分析</p><p><b>  2.1系統(tǒng)定位</b></p><p>

9、;<b>  2.1.1系統(tǒng)介紹</b></p><p>  本系統(tǒng)定位簡(jiǎn)單的“21點(diǎn)”紙牌游戲小應(yīng)用程序,暫時(shí)只考慮單機(jī)環(huán)境下的實(shí)現(xiàn);操作系統(tǒng)選擇目前常用的Windows 7。系統(tǒng)界面力求簡(jiǎn)潔、易用,在標(biāo)準(zhǔn)化的基礎(chǔ)上考慮界面的美觀和新穎</p><p>  2.1.2系統(tǒng)面向的用戶(hù)群體</p><p>  系統(tǒng)面向所有人群,凡是懂得

10、計(jì)算機(jī)基本操作的人都可以對(duì)本程序進(jìn)行應(yīng)用。簡(jiǎn)單明了的操作界面能夠讓用戶(hù)迅速的適應(yīng)并掌握。</p><p><b>  2.2系統(tǒng)需求</b></p><p>  2.2.1系統(tǒng)的功能性需求</p><p> ?。?)系統(tǒng)啟動(dòng)后,出現(xiàn)歡迎界面,滿(mǎn)足人機(jī)交互的命令行設(shè)計(jì)。</p><p> ?。?)能實(shí)現(xiàn)基本信息的輸入與游戲

11、開(kāi)始分開(kāi)。</p><p> ?。?)能實(shí)現(xiàn)開(kāi)始后顯示每一個(gè)玩家的牌點(diǎn)大小,當(dāng)然莊家的首張牌是隱藏的。</p><p> ?。?)能實(shí)現(xiàn)決定是否要繼續(xù)發(fā)牌。。</p><p>  通過(guò)(1, 2)?問(wèn)題選項(xiàng)的提問(wèn)與回答,來(lái)完成是否繼續(xù)發(fā)牌的游戲要求</p><p>  (5)能實(shí)現(xiàn)自主完成莊家的發(fā)牌與顯示最終大小工作。</p>

12、<p>  通過(guò)所有玩家都已決定是否要發(fā)牌后,最終可以完成對(duì)莊家的是否發(fā)牌和顯示最終牌點(diǎn)大小。</p><p> ?。?)能實(shí)現(xiàn)系統(tǒng)自動(dòng)比較大小,并通過(guò)界面最終顯示到屏幕上</p><p>  (7)能實(shí)現(xiàn)在游戲結(jié)束后提示游戲結(jié)束界面。</p><p>  2.2.2系統(tǒng)的非功能性需求</p><p>  (1)用戶(hù)界面需求:簡(jiǎn)潔、

13、易用、易懂,美觀、大方、標(biāo)準(zhǔn),具備一定的兼容性。</p><p>  (2)系統(tǒng)開(kāi)發(fā)平臺(tái):Windows 7 Microsoft Visual C++ 6.0  </p><p>  (3)軟件質(zhì)量需求:易用、健壯、兼容性好、運(yùn)行穩(wěn)定、有一定安全保障</p><p>  2.3技術(shù)可能性分析<

14、/p><p>  本系統(tǒng)設(shè)計(jì)的核心部分就是通過(guò)C++語(yǔ)言的文件處理模塊,通過(guò)相應(yīng)代碼、類(lèi)實(shí)現(xiàn)游戲,該程序是模擬古老的21點(diǎn)撲克牌游戲,實(shí)現(xiàn)1對(duì)1的人機(jī)大戰(zhàn)。要求游戲過(guò)程中任意一方牌的點(diǎn)數(shù)之和超過(guò)21點(diǎn),則自動(dòng)出局;在不超過(guò)21點(diǎn)的情況下,玩家下注由電腦隨機(jī)發(fā)牌與莊家比累積牌的點(diǎn)數(shù)的大小,大者為贏家??梢缘贸鼋Y(jié)論:該系統(tǒng)的實(shí)現(xiàn)在技術(shù)上是可行的。</p><p>  第三章 總體結(jié)構(gòu)設(shè)計(jì)<

15、;/p><p>  3.1 “21”點(diǎn)紙牌游戲簡(jiǎn)介</p><p>  21點(diǎn)一般用到1-8副牌。莊家給每個(gè)玩家發(fā)兩張牌,牌面朝上;給自己發(fā)兩張牌,一張牌面朝上,一張牌面朝下。K、Q、J和10牌都算作10點(diǎn)。其余所有2至9牌均按其原面值計(jì)算。如果玩家拿到的前兩張牌是一張A和一張10點(diǎn)牌,就擁有天生21點(diǎn)(Blackjack);此時(shí),如果莊家沒(méi)有黑杰克,玩家就能贏得1.5倍的賭金(2賠3)。沒(méi)

16、有黑杰克的玩家可以繼續(xù)拿牌,以使總點(diǎn)數(shù)盡可能接近但不超過(guò)21點(diǎn);如果超過(guò)21點(diǎn),玩家就會(huì)“爆(Bust)”并輸?shù)糍€金。如果莊家的總點(diǎn)數(shù)等于或少于16點(diǎn),則必須拿牌(Hit);如果莊家的總點(diǎn)數(shù)等于或多于17點(diǎn),則必須停牌(Stand)。</p><p>  3.2 “21”點(diǎn)紙牌游戲總體功能流程圖</p><p>  游戲界面——》輸入賭注——》選擇要牌——》開(kāi)始游戲——》退出</p

17、><p>  第四章 程序設(shè)計(jì)思路及測(cè)試結(jié)果</p><p>  4.1 設(shè)計(jì)步驟和關(guān)鍵代碼</p><p>  第一步:首先創(chuàng)建項(xiàng)目名稱(chēng)(game2);</p><p>  第二步:往項(xiàng)目中添加需要的源文件,和頭文件;</p><p>  (一) 先定義全局變量:</p><p>  #inc

18、lude<iostream></p><p>  #include<string></p><p>  #include<time.h></p><p>  using namespace std;</p><p>  #define NUM 1000</p><p>  int j

19、=2;//定義為全局變量</p><p>  int randNum[NUM];//因?yàn)閞and()函數(shù)有一定的缺陷,所以在程序中定義了randNum數(shù)組來(lái)存放隨機(jī)數(shù)</p><p>  //即使使用了種子函數(shù)srand(),由于程序運(yùn)行時(shí)間比較短,也不太好設(shè)置種子。因此使用數(shù)組來(lái)存放隨機(jī)數(shù)</p><p> ?。ǘ﹦?chuàng)建一個(gè)poker類(lèi),構(gòu)造函數(shù)poker;<

20、;/p><p>  class Poker</p><p><b>  {private:</b></p><p>  int poker[53]; //撲克</p><p>  int pokerValue[53]; //撲克代表的數(shù)值</p><p>  string pokerName[

21、53]; //撲克名</p><p>  int money; //玩家錢(qián)數(shù) </p><p>  int bet; //玩家的賭注</p><p>  int pokerF[5]; //玩家手中的牌 F:Farmer L:Landlord</p><p>  int pokerL[5]; //莊家手中的牌 F:F

22、armer L:Landlord</p><p>  int pokerNumF; //玩家手中的牌數(shù)</p><p>  int pokerNumL; //莊家手中的牌數(shù)</p><p><b>  public:</b></p><p>  Poker(); //構(gòu)造函數(shù),對(duì)牌初始化&

23、lt;/p><p>  void initPoker(); //洗牌,在每輪游戲開(kāi)始前進(jìn)行</p><p>  string getPokerF(); //用字符串的形式返回玩家的牌</p><p>  string getPokerL(); //用字符串的形式返回莊家的牌</p><p>  int getSumF(); //

24、返回玩家牌的點(diǎn)數(shù),用以判斷是否超過(guò)21點(diǎn)</p><p>  int getSumL(); //返回莊家牌的點(diǎn)數(shù)</p><p>  void farmerAsk(); //玩家要牌</p><p>  void landlordAsk(); //莊家要牌</p><p>  void inpu

25、tBet(); //玩家輸入賭注</p><p>  void newGame(); //開(kāi)始新游戲</p><p>  void landlordProcess(); //在玩家不要牌時(shí)進(jìn)行處理</p><p>  };Poker::Poker()</p><p>  {poker[

26、0]=0;</p><p>  for(int i=1;i<=13;i++) //|</p><p>  {poker[i]=i; //|用構(gòu)造函數(shù)對(duì)牌初始化</p><p>  poker[i+13]=i; //|</p><p>  poker[i+26]=i; //|</

27、p><p>  poker[i+39]=i; //|</p><p><b>  }//for結(jié)束</b></p><p>  pokerValue[0]=0;</p><p>  for(i=1;i<=52;i++)</p><p>  {if(poker[i]<=10)

28、 pokerValue[i]=poker[i];</p><p>  else pokerValue[i]=10;</p><p>  }pokerName[0]="";</p><p>  for(i=0;i<4;i++)</p><p>  {pokerName[1+13*i]=&quo

29、t;A";</p><p>  pokerName[2+13*i]="2";</p><p>  pokerName[3+13*i]="3";</p><p>  pokerName[4+13*i]="4";</p><p>  pokerName[5+13*i]=&quo

30、t;5";</p><p>  pokerName[6+13*i]="6";</p><p>  pokerName[7+13*i]="7";</p><p>  pokerName[8+13*i]="8";</p><p>  pokerName[9+13*i]=&quo

31、t;9";</p><p>  pokerName[10+13*i]="10";</p><p>  pokerName[11+13*i]="J";</p><p>  pokerName[12+13*i]="Q";</p><p>  pokerName[13+13*i]

32、="K";</p><p>  }money=200; //玩家開(kāi)始玩游戲時(shí)錢(qián)數(shù)是200</p><p><b>  bet=0;</b></p><p>  for(i=0;i<5;i++)</p><p>  {pokerF[i]=0; //|對(duì)pokerOfFarmer初始化<

33、;/p><p>  pokerL[i]=0; //|對(duì)pokerOfLandlord初始化</p><p>  }pokerNumF=0;//玩家手中的牌數(shù)初始化為0</p><p>  pokerNumL=0;//莊家手中的牌數(shù)初始化為0</p><p>  srand((int)time(0));</p><p>

34、;  for(i=0;i<NUM;i++)</p><p>  {randNum[i]=rand()*51/32767+1;//產(chǎn)生隨機(jī)數(shù)數(shù)組</p><p><b>  }</b></p><p>  }//構(gòu)造函數(shù)Poker()結(jié)束</p><p> ?。ㄈ┬乱痪珠_(kāi)始時(shí)需要洗牌,實(shí)現(xiàn)洗牌這個(gè)函數(shù)initPok

35、er();</p><p>  void Poker::initPoker()</p><p>  {cout<<"新一局游戲開(kāi)始,開(kāi)始洗牌>>>>>"<<endl;</p><p>  pokerF[0]=randNum[j++]; //產(chǎn)生1-52的隨機(jī)數(shù)</p><

36、;p>  pokerF[1]=randNum[j++]; //產(chǎn)生1-52的隨機(jī)數(shù)</p><p>  pokerL[0]=randNum[j++]; //產(chǎn)生1-52的隨機(jī)數(shù)</p><p>  pokerL[1]=randNum[j++]; //產(chǎn)生1-52的隨機(jī)數(shù)</p><p>  pokerNumF=2;</p><p>

37、;  pokerNumL=2;</p><p>  cout<<"洗牌完成,你的牌為:"<<getPokerF()<<endl;</p><p>  }//void Poker::initPoker()結(jié)束</p><p>  (四)給玩家發(fā)牌函數(shù)和給莊家發(fā)牌函數(shù)的實(shí)現(xiàn)getPokerF();getPokerL

38、();</p><p>  string Poker::getPokerF()//用字符串的形式返回玩家的牌</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  string result="";</p>&

39、lt;p>  for(i=0;i<pokerNumF;i++)</p><p>  result=result+pokerName[pokerF[i]]+" ";</p><p>  return result;</p><p>  }//string Poker::getPokerF()結(jié)束</p><p>

40、  string Poker::getPokerL()//用字符串的形式返回莊家的牌</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  string result="";</p><p>  for(i=0;i<p

41、okerNumL;i++)</p><p>  result=result+pokerName[pokerL[i]]+" ";</p><p>  return result;</p><p>  }//string Poker::getPokerL()結(jié)束</p><p>  (五)玩家總點(diǎn)數(shù)的函數(shù)和莊家總點(diǎn)數(shù)函數(shù)的實(shí)現(xiàn)

42、getSumF();getSumL();</p><p>  int Poker::getSumF() //返回玩家的總點(diǎn)數(shù)</p><p><b>  {</b></p><p>  int result=0;</p><p>  for(int i=0;i<pokerNumF;i++)</p>

43、<p>  result=result+pokerValue[pokerF[i]];</p><p>  return result;</p><p><b>  }</b></p><p>  int Poker::getSumL()//返回莊家的總點(diǎn)數(shù)</p><p><b>  {</b

44、></p><p>  int result=0;</p><p>  for(int i=0;i<pokerNumL;i++)</p><p>  result=result+pokerValue[pokerL[i]];</p><p>  return result;</p><p><b>

45、  }</b></p><p>  (六)main函數(shù);</p><p>  int main()</p><p><b>  {</b></p><p>  int choose=1;</p><p>  Poker poker;</p><p>  cout

46、<<"****************** 歡迎玩二十一點(diǎn)游戲 ******************"<<endl<<endl;</p><p>  poker.inputBet();</p><p>  poker.initPoker(); //洗牌 </p><p>  

47、while(choose==1||choose==2||choose==3||choose==4)</p><p><b>  {</b></p><p>  cout<<"1.要牌 2.不要牌 3.重新開(kāi)始 4.退出 >>請(qǐng)輸入數(shù)字選擇操作:";</p><p>  cin>>choo

48、se;</p><p>  if(choose==1) poker.farmerAsk();</p><p>  else if(choose==2) poker.landlordProcess();</p><p>  else if(choose==3) poker.newGame();</p><p

49、>  else if(choose==4) exit(0);</p><p><b>  }</b></p><p><b>  return 0;</b></p><p>  }//main函數(shù)結(jié)束</p><p><b>  4.2 測(cè)試</b></

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論