版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 《面向?qū)ο蟪绦蛟O(shè)計》</p><p><b> 課程設(shè)計</b></p><p> 題 目: 教學(xué)游戲 </p><p> 院 系: 數(shù)學(xué)與計算科學(xué) </p><p> 專
2、 業(yè): 信息與計算科學(xué) </p><p> 姓名學(xué)號: </p><p> 指導(dǎo)老師: </p><p> 日 期: 2014 年 12
3、 月 01 日</p><p><b> 摘 要</b></p><p> 這次課程設(shè)計是編寫一個教學(xué)游戲,教授學(xué)生學(xué)習(xí)算術(shù)計算。程序?qū)臃ê蜏p法進(jìn)行測試。程序共有四個難度級別,第1級測試兩個小于10并且和也小于10的數(shù)字加法;第2級進(jìn)行任何兩個1位數(shù)字的加法;第3級是差為非負(fù)的兩個1位數(shù)的減法。程序?qū)㈦S機(jī)產(chǎn)生問題并讀取游戲參與者輸入的答案
4、;第4級是執(zhí)行一個兩位數(shù)的加法。對于每一個問題,游戲參與者都有兩次回答問題的機(jī)會。在得到5分后游戲進(jìn)入下一級。為此,本文首先通過建立CRC卡片分析程序要求,擬定要建立的類與功能,然后建立UML類圖,把功能函數(shù)具體化,最后進(jìn)行代碼的填充和調(diào)試。此外,我還設(shè)計了一個簡單的控制臺界面,使得游戲的互動操作更加友好,具體的分析可以詳見下文,經(jīng)過最后運(yùn)行結(jié)果的調(diào)試是沒有問題的,本次課程設(shè)計對于我來說也是有一定的啟示意義的,讓我學(xué)到了許多面向?qū)ο箝_發(fā)
5、的流程和技巧。</p><p> 關(guān)鍵字:教學(xué)游戲 算術(shù)計算 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è)計
9、目的1</p><p> 三、CRC分析過程陳述1</p><p><b> 四、UML類圖2</b></p><p> 五、程序設(shè)計思路分析3</p><p> 六、運(yùn)行結(jié)果測試6</p><p><b> 七、心得體會7</b></p>
10、<p><b> 八、參考文獻(xiàn)7</b></p><p><b> 引言</b></p><p> 本次課設(shè)是編寫一個教學(xué)游戲。設(shè)計的目標(biāo)是實現(xiàn)指定不同的等級可以進(jìn)行不同難度的計算難度,積分足夠后還可以等級自動提升。為了實現(xiàn)這個目標(biāo),同事考慮到游戲的友好性,我加入了一個游戲的選擇界面控制臺,每次操作后都會有下一步的操作詢問和提
11、示。游戲代碼通過兩個類和多個函數(shù)實現(xiàn),分別完成游戲者信息的錄入和讀取查詢,游戲等級的判定,游戲得分的判定等等。</p><p><b> 二、課程設(shè)計目的:</b></p><p> 本次課程設(shè)計的目的是為了培養(yǎng)我們在學(xué)習(xí)《面向?qū)ο蟪绦蛟O(shè)計》這們課程中講到的設(shè)計方法和思想來解決實際問題的能力,C++是一門面向?qū)ο蟮某绦蜷_發(fā)語言,實踐性很強(qiáng),我選擇的這個教學(xué)游戲相信
12、許多人都很熟悉,盡管難度不大,但對于我基本程序設(shè)計素養(yǎng)的培養(yǎng)和軟件工作者工作作風(fēng)的訓(xùn)練都有一定的作用。</p><p> 三、CRC分析過程陳述</p><p> 本次設(shè)計包含兩個類,一個是:Game,一個是:Player。Game類中包含實現(xiàn)游戲開始,隨機(jī)數(shù)生成,游戲者信息輸入和保存等功能的函數(shù),Player類則包含實現(xiàn)游戲者信息返回和分?jǐn)?shù)加成的功能函數(shù),由此可得CRC卡片如下:&l
13、t;/p><p><b> 四、UML類圖</b></p><p> 由CRC卡片結(jié)合程序得UML類圖如下:</p><p> 五、程序設(shè)計思路分析</p><p> 1、程序?qū)臃ê蜏p法進(jìn)行測試。這就需要設(shè)計兩種計算公式,并且實現(xiàn)判斷好所要來執(zhí)行的公式;</p><p> 2、程序共有四
14、個級別,第一級測試兩個小于10并且和也小于10的數(shù)字加法;第二級進(jìn)行任意兩個1位數(shù)的的加法;第三級是差為非負(fù)的兩個一位數(shù)的減法;第四級是兩個兩位數(shù)的加法。要實現(xiàn)4個等級和每個級別的功能特性,應(yīng)該要使用條件語句判定,兩個數(shù)的生成可用隨機(jī)函數(shù)round()限定范圍實現(xiàn),在執(zhí)行了相關(guān)的計算和后返回結(jié)果;此時再與游戲者輸入的答案作比較,一致則輸出判定正確語句,否則失敗并提示是否再來一次。</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ī)會,這可以用一個初始值為2的整形變量實現(xiàn),判斷錯誤則自減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)入下一個等級,并且可查詢游戲的參與者的等級。在這里我設(shè)計好相關(guān)的變量用作保存,每次進(jìn)行是否可升級的判定,游戲記錄采用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> //保存此次成績</b></p><p> void Game::game_save()</p><p><b> {</b></p><p> ofstream outfile
29、("note.txt",ios::out|ios::binary); //二進(jìn)制存儲</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、為了游戲互動的友好性,可以
32、制作一個簡單的控制臺的界面選項,通過循環(huán)和流程語句控制選項。</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é)果測試</b></p><p><b> 七、心得體會</b></p><p> 本次課設(shè)的代碼量不多,設(shè)計難度也不大,但最大的收獲在于通過本次課設(shè)懂得了項目開發(fā)的設(shè)計流程:要先分析項目要求,搞清楚要實現(xiàn)的功能,再利用CRC卡片設(shè)計理清設(shè)計思路并考慮可行性,之后再用UML類圖將CRC卡片的職責(zé)與協(xié)作類“具體化”,讓功能對應(yīng)相應(yīng)的函數(shù),最后在
41、進(jìn)行代碼的填充和調(diào)試。</p><p> 由于之前也有學(xué)習(xí)過C語言,再由此過渡到C++的學(xué)習(xí)也是水到渠成的。這次課設(shè)的完成,也讓我更深刻得了解到了C++面向?qū)ο蟪绦蛟O(shè)計的意義和優(yōu)勢,盡管此處并沒有設(shè)計到類的繼承和多態(tài)性,但封裝性卻能充分體現(xiàn)。此次課設(shè)對我以后的開發(fā)生涯也有一定的啟示作用。</p><p><b> 八、參考文獻(xiàn)</b></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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設(shè)計拼圖游戲
- c++課程設(shè)計報告--坦克游戲
- c++課程設(shè)計報告--猜數(shù)游戲
- c++剪刀石頭布游戲課程設(shè)計
- c++剪刀石頭布游戲課程設(shè)計
- 猜單詞游戲c++課程設(shè)計報告
- c++課程設(shè)計---吃豆子游戲程序
- c++猜單詞課程設(shè)計--——猜單詞游戲
- c++高射炮打飛機(jī)游戲課程設(shè)計
- c++課程設(shè)計--五子棋游戲
- c++課程設(shè)計--gui小游戲的設(shè)計與實現(xiàn)
- c++課程設(shè)計報告
- c++課程設(shè)計ppt
- c++課程設(shè)計--c++程序設(shè)計語言
- c++課程設(shè)計-- c++面向?qū)ο蟪绦蛟O(shè)計
- c 課程設(shè)計報告-數(shù)字教學(xué)游戲
- 串口通信c++課程設(shè)計
- c++掃雷課程設(shè)計報告
- 中南大學(xué)c++課程設(shè)計
- c++課程設(shè)計——乘積最大
評論
0/150
提交評論