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

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  《面向?qū)ο蟪绦蛟O(shè)計(jì)》</p><p><b>  課程設(shè)計(jì)</b></p><p>  題 目: 教學(xué)游戲 </p><p>  院 系: 數(shù)學(xué)與計(jì)算科學(xué) </p><p>  專

2、 業(yè): 信息與計(jì)算科學(xué) </p><p>  姓名學(xué)號(hào): </p><p>  指導(dǎo)老師: </p><p>  日 期: 2014 年 12

3、 月 01 日</p><p><b>  摘 要</b></p><p>  這次課程設(shè)計(jì)是編寫一個(gè)教學(xué)游戲,教授學(xué)生學(xué)習(xí)算術(shù)計(jì)算。程序?qū)?duì)加法和減法進(jìn)行測(cè)試。程序共有四個(gè)難度級(jí)別,第1級(jí)測(cè)試兩個(gè)小于10并且和也小于10的數(shù)字加法;第2級(jí)進(jìn)行任何兩個(gè)1位數(shù)字的加法;第3級(jí)是差為非負(fù)的兩個(gè)1位數(shù)的減法。程序?qū)㈦S機(jī)產(chǎn)生問題并讀取游戲參與者輸入的答案

4、;第4級(jí)是執(zhí)行一個(gè)兩位數(shù)的加法。對(duì)于每一個(gè)問題,游戲參與者都有兩次回答問題的機(jī)會(huì)。在得到5分后游戲進(jìn)入下一級(jí)。為此,本文首先通過建立CRC卡片分析程序要求,擬定要建立的類與功能,然后建立UML類圖,把功能函數(shù)具體化,最后進(jìn)行代碼的填充和調(diào)試。此外,我還設(shè)計(jì)了一個(gè)簡(jiǎn)單的控制臺(tái)界面,使得游戲的互動(dòng)操作更加友好,具體的分析可以詳見下文,經(jīng)過最后運(yùn)行結(jié)果的調(diào)試是沒有問題的,本次課程設(shè)計(jì)對(duì)于我來說也是有一定的啟示意義的,讓我學(xué)到了許多面向?qū)ο箝_發(fā)

5、的流程和技巧。</p><p>  關(guān)鍵字:教學(xué)游戲 算術(shù)計(jì)算 CRC卡片 UML類圖 </p><p><b>  Abstract</b></p><p>  This course is designed to write a teaching games, teaching students to grasp arithmeti

6、c calculations. The program will be tested on addition and subtraction. The program with a total of four difficulty levels, the level 1 tests two less than 10 and their sum also less than 10 digital addition. t

7、he level 2 will be underway any two one digits addition. Level 3 is the difference for non-negative two one digits subtraction. The program will be randomly generated problems and reads the game particip</p>

8、<p>  Key words: Teaching game Arithmetic calculation CRC cards UML class diagrams</p><p><b>  目 錄</b></p><p><b>  一、引言1</b></p><p>  二、課程設(shè)計(jì)

9、目的1</p><p>  三、CRC分析過程陳述1</p><p><b>  四、UML類圖2</b></p><p>  五、程序設(shè)計(jì)思路分析3</p><p>  六、運(yùn)行結(jié)果測(cè)試6</p><p><b>  七、心得體會(huì)7</b></p>

10、<p><b>  八、參考文獻(xiàn)7</b></p><p><b>  引言</b></p><p>  本次課設(shè)是編寫一個(gè)教學(xué)游戲。設(shè)計(jì)的目標(biāo)是實(shí)現(xiàn)指定不同的等級(jí)可以進(jìn)行不同難度的計(jì)算難度,積分足夠后還可以等級(jí)自動(dòng)提升。為了實(shí)現(xiàn)這個(gè)目標(biāo),同事考慮到游戲的友好性,我加入了一個(gè)游戲的選擇界面控制臺(tái),每次操作后都會(huì)有下一步的操作詢問和提

11、示。游戲代碼通過兩個(gè)類和多個(gè)函數(shù)實(shí)現(xiàn),分別完成游戲者信息的錄入和讀取查詢,游戲等級(jí)的判定,游戲得分的判定等等。</p><p><b>  二、課程設(shè)計(jì)目的:</b></p><p>  本次課程設(shè)計(jì)的目的是為了培養(yǎng)我們?cè)趯W(xué)習(xí)《面向?qū)ο蟪绦蛟O(shè)計(jì)》這們課程中講到的設(shè)計(jì)方法和思想來解決實(shí)際問題的能力,C++是一門面向?qū)ο蟮某绦蜷_發(fā)語言,實(shí)踐性很強(qiáng),我選擇的這個(gè)教學(xué)游戲相信

12、許多人都很熟悉,盡管難度不大,但對(duì)于我基本程序設(shè)計(jì)素養(yǎng)的培養(yǎng)和軟件工作者工作作風(fēng)的訓(xùn)練都有一定的作用。</p><p>  三、CRC分析過程陳述</p><p>  本次設(shè)計(jì)包含兩個(gè)類,一個(gè)是:Game,一個(gè)是:Player。Game類中包含實(shí)現(xiàn)游戲開始,隨機(jī)數(shù)生成,游戲者信息輸入和保存等功能的函數(shù),Player類則包含實(shí)現(xiàn)游戲者信息返回和分?jǐn)?shù)加成的功能函數(shù),由此可得CRC卡片如下:&l

13、t;/p><p><b>  四、UML類圖</b></p><p>  由CRC卡片結(jié)合程序得UML類圖如下:</p><p>  五、程序設(shè)計(jì)思路分析</p><p>  1、程序?qū)?duì)加法和減法進(jìn)行測(cè)試。這就需要設(shè)計(jì)兩種計(jì)算公式,并且實(shí)現(xiàn)判斷好所要來執(zhí)行的公式;</p><p>  2、程序共有四

14、個(gè)級(jí)別,第一級(jí)測(cè)試兩個(gè)小于10并且和也小于10的數(shù)字加法;第二級(jí)進(jìn)行任意兩個(gè)1位數(shù)的的加法;第三級(jí)是差為非負(fù)的兩個(gè)一位數(shù)的減法;第四級(jí)是兩個(gè)兩位數(shù)的加法。要實(shí)現(xiàn)4個(gè)等級(jí)和每個(gè)級(jí)別的功能特性,應(yīng)該要使用條件語句判定,兩個(gè)數(shù)的生成可用隨機(jī)函數(shù)round()限定范圍實(shí)現(xiàn),在執(zhí)行了相關(guān)的計(jì)算和后返回結(jié)果;此時(shí)再與游戲者輸入的答案作比較,一致則輸出判定正確語句,否則失敗并提示是否再來一次。</p><p>  //游戲隨機(jī)

15、數(shù)生成及結(jié)果返回</p><p>  void Game::play_round()</p><p><b>  {</b></p><p>  int i1 = 0;</p><p>  int i2 = 0;</p><p>  int answer = 0;</p><p

16、>  string chaxun;</p><p>  if (player.get_level() == 1)</p><p><b>  do</b></p><p><b>  {</b></p><p>  i1 = rand_int(1,9);</p><p>

17、;  i2 = rand_int(1,9);</p><p>  answer = i1 + i2;</p><p>  } while (answer > 9);</p><p>  else if (player.get_level() == 2)</p><p><b>  {</b></p>

18、<p>  i1 = rand_int(1,9);</p><p>  i2 = rand_int(1,9);</p><p>  answer = i1 + i2;</p><p><b>  }</b></p><p>  else if (player.get_level() == 3)</p>

19、;<p><b>  do</b></p><p><b>  {</b></p><p>  i1 = rand_int(1,9);</p><p>  i2 = rand_int(1,9);</p><p>  answer = i1 - i2;</p><p&

20、gt;  } while (answer < 0);</p><p>  else if (player.get_level() == 4)</p><p><b>  {</b></p><p>  i1 = rand_int(10,99);</p><p>  i2 = rand_int(10,99);<

21、/p><p>  answer = i1 + i2;</p><p><b>  }</b></p><p>  3、游戲參與者都有兩次回答問題的機(jī)會(huì),這可以用一個(gè)初始值為2的整形變量實(shí)現(xiàn),判斷錯(cuò)誤則自減1。</p><p>  //游戲者操作界面和游戲者自主控制</p><p>  int Game

22、::get_guess(int v1, int v2, int answer, string operation)</p><p><b>  {</b></p><p>  int guess;</p><p>  int tries = 2;</p><p><b>  do</b></p

23、><p><b>  {</b></p><p>  cout << "Please enter the " << operation </p><p>  << " of " << v1 << " and " <<

24、v2 << "\n";</p><p>  cin >> guess;</p><p>  if (answer == guess)</p><p>  return guess;</p><p><b>  else</b></p><p>  cou

25、t << "Oops. That was not right. Try again.\n";</p><p><b>  tries--;</b></p><p>  } while (tries > 0);</p><p>  return guess;</p><p><

26、;b>  }</b></p><p>  4、每次獲得5分后游戲進(jìn)入下一個(gè)等級(jí),并且可查詢游戲的參與者的等級(jí)。在這里我設(shè)計(jì)好相關(guān)的變量用作保存,每次進(jìn)行是否可升級(jí)的判定,游戲記錄采用txt文件保存,提供查詢語句。</p><p><b>  //游戲者得分累加</b></p><p>  void Player::increm

27、ent_score()</p><p><b>  {</b></p><p><b>  score++;</b></p><p>  if (score % 5 == 0 && level < 4)</p><p><b>  level++;</b>

28、</p><p><b>  }</b></p><p><b>  //保存此次成績(jī)</b></p><p>  void Game::game_save()</p><p><b>  {</b></p><p>  ofstream outfile

29、("note.txt",ios::out|ios::binary); //二進(jìn)制存儲(chǔ)</p><p>  if(!outfile)</p><p><b>  {</b></p><p>  cerr<<"open note.txt error!"<<endl;</p

30、><p><b>  exit(1);</b></p><p><b>  }</b></p><p>  outfile<<player.get_name()<<" ";</p><p>  outfile<<player.get_score()

31、<<" ";</p><p>  outfile<<player.get_level()<<" ";</p><p>  outfile.close();</p><p><b>  }</b></p><p>  5、為了游戲互動(dòng)的友好性,可以

32、制作一個(gè)簡(jiǎn)單的控制臺(tái)的界面選項(xiàng),通過循環(huán)和流程語句控制選項(xiàng)。</p><p><b>  //游戲界面</b></p><p>  void jiemian ()</p><p><b>  {</b></p><p><b>  int xuan;</b></p>

33、<p>  cout <<"*************************************************" <<endl;</p><p>  cout <<"* C++教學(xué)游戲 *"<<endl;</p>&

34、lt;p>  cout <<"* 1.游戲記錄 *"<<endl;</p><p>  cout <<"* 2.開始游戲 *"<<endl;</p><p>

35、  cout <<"* 3.退出游戲 *"<<endl;</p><p>  cout <<"*************************************************"<<endl;</p><p>  ci

36、n >> xuan;</p><p>  if(xuan == 1)</p><p><b>  {</b></p><p><b>  Game aaa;</b></p><p>  aaa.player_open();</p><p>  cout <&

37、lt;"返回主界面y/n"<<endl;</p><p><b>  char c;</b></p><p><b>  cin >> c;</b></p><p>  if (c == 'y')</p><p><b>  {&

38、lt;/b></p><p>  jiemian();</p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(xuan == 2)</p><p><b>  {</b></p&g

39、t;<p>  Game mathquiz;</p><p>  rand_seed();</p><p>  mathquiz.play();</p><p><b>  }</b></p><p><b>  }</b></p><p><b> 

40、 六、運(yùn)行結(jié)果測(cè)試</b></p><p><b>  七、心得體會(huì)</b></p><p>  本次課設(shè)的代碼量不多,設(shè)計(jì)難度也不大,但最大的收獲在于通過本次課設(shè)懂得了項(xiàng)目開發(fā)的設(shè)計(jì)流程:要先分析項(xiàng)目要求,搞清楚要實(shí)現(xiàn)的功能,再利用CRC卡片設(shè)計(jì)理清設(shè)計(jì)思路并考慮可行性,之后再用UML類圖將CRC卡片的職責(zé)與協(xié)作類“具體化”,讓功能對(duì)應(yīng)相應(yīng)的函數(shù),最后在

41、進(jìn)行代碼的填充和調(diào)試。</p><p>  由于之前也有學(xué)習(xí)過C語言,再由此過渡到C++的學(xué)習(xí)也是水到渠成的。這次課設(shè)的完成,也讓我更深刻得了解到了C++面向?qū)ο蟪绦蛟O(shè)計(jì)的意義和優(yōu)勢(shì),盡管此處并沒有設(shè)計(jì)到類的繼承和多態(tài)性,但封裝性卻能充分體現(xiàn)。此次課設(shè)對(duì)我以后的開發(fā)生涯也有一定的啟示作用。</p><p><b>  八、參考文獻(xiàn)</b></p><

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論