版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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> 專(zhuān)
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ì)是編寫(xiě)一個(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)生問(wèn)題并讀取游戲參與者輸入的答案
4、;第4級(jí)是執(zhí)行一個(gè)兩位數(shù)的加法。對(duì)于每一個(gè)問(wèn)題,游戲參與者都有兩次回答問(wèn)題的機(jī)會(huì)。在得到5分后游戲進(jìn)入下一級(jí)。為此,本文首先通過(guò)建立CRC卡片分析程序要求,擬定要建立的類(lèi)與功能,然后建立UML類(lèi)圖,把功能函數(shù)具體化,最后進(jìn)行代碼的填充和調(diào)試。此外,我還設(shè)計(jì)了一個(gè)簡(jiǎn)單的控制臺(tái)界面,使得游戲的互動(dòng)操作更加友好,具體的分析可以詳見(jiàn)下文,經(jīng)過(guò)最后運(yùn)行結(jié)果的調(diào)試是沒(méi)有問(wèn)題的,本次課程設(shè)計(jì)對(duì)于我來(lái)說(shuō)也是有一定的啟示意義的,讓我學(xué)到了許多面向?qū)ο箝_(kāi)發(fā)
5、的流程和技巧。</p><p> 關(guān)鍵字:教學(xué)游戲 算術(shù)計(jì)算 CRC卡片 UML類(lèi)圖 </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分析過(guò)程陳述1</p><p><b> 四、UML類(lèi)圖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è)是編寫(xiě)一個(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ì)有下一步的操作詢問(wèn)和提
11、示。游戲代碼通過(guò)兩個(gè)類(lèi)和多個(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ì)方法和思想來(lái)解決實(shí)際問(wèn)題的能力,C++是一門(mén)面向?qū)ο蟮某绦蜷_(kāi)發(fā)語(yǔ)言,實(shí)踐性很強(qiáng),我選擇的這個(gè)教學(xué)游戲相信
12、許多人都很熟悉,盡管難度不大,但對(duì)于我基本程序設(shè)計(jì)素養(yǎng)的培養(yǎng)和軟件工作者工作作風(fēng)的訓(xùn)練都有一定的作用。</p><p> 三、CRC分析過(guò)程陳述</p><p> 本次設(shè)計(jì)包含兩個(gè)類(lèi),一個(gè)是:Game,一個(gè)是:Player。Game類(lèi)中包含實(shí)現(xiàn)游戲開(kāi)始,隨機(jī)數(shù)生成,游戲者信息輸入和保存等功能的函數(shù),Player類(lèi)則包含實(shí)現(xiàn)游戲者信息返回和分?jǐn)?shù)加成的功能函數(shù),由此可得CRC卡片如下:&l
13、t;/p><p><b> 四、UML類(lèi)圖</b></p><p> 由CRC卡片結(jié)合程序得UML類(lèi)圖如下:</p><p> 五、程序設(shè)計(jì)思路分析</p><p> 1、程序?qū)?duì)加法和減法進(jìn)行測(cè)試。這就需要設(shè)計(jì)兩種計(jì)算公式,并且實(shí)現(xiàn)判斷好所要來(lái)執(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)該要使用條件語(yǔ)句判定,兩個(gè)數(shù)的生成可用隨機(jī)函數(shù)round()限定范圍實(shí)現(xiàn),在執(zhí)行了相關(guān)的計(jì)算和后返回結(jié)果;此時(shí)再與游戲者輸入的答案作比較,一致則輸出判定正確語(yǔ)句,否則失敗并提示是否再來(lái)一次。</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、游戲參與者都有兩次回答問(wèn)題的機(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文件保存,提供查詢語(yǔ)句。</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),通過(guò)循環(huán)和流程語(yǔ)句控制選項(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.開(kāi)始游戲 *"<<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ì)難度也不大,但最大的收獲在于通過(guò)本次課設(shè)懂得了項(xiàng)目開(kāi)發(fā)的設(shè)計(jì)流程:要先分析項(xiàng)目要求,搞清楚要實(shí)現(xiàn)的功能,再利用CRC卡片設(shè)計(jì)理清設(shè)計(jì)思路并考慮可行性,之后再用UML類(lèi)圖將CRC卡片的職責(zé)與協(xié)作類(lèi)“具體化”,讓功能對(duì)應(yīng)相應(yīng)的函數(shù),最后在
41、進(jìn)行代碼的填充和調(diào)試。</p><p> 由于之前也有學(xué)習(xí)過(guò)C語(yǔ)言,再由此過(guò)渡到C++的學(xué)習(xí)也是水到渠成的。這次課設(shè)的完成,也讓我更深刻得了解到了C++面向?qū)ο蟪绦蛟O(shè)計(jì)的意義和優(yōu)勢(shì),盡管此處并沒(méi)有設(shè)計(jì)到類(lèi)的繼承和多態(tài)性,但封裝性卻能充分體現(xiàn)。此次課設(shè)對(duì)我以后的開(kāi)發(fā)生涯也有一定的啟示作用。</p><p><b> 八、參考文獻(xiàn)</b></p><
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設(shè)計(jì)拼圖游戲
- c++課程設(shè)計(jì)報(bào)告--坦克游戲
- c++課程設(shè)計(jì)報(bào)告--猜數(shù)游戲
- c++剪刀石頭布游戲課程設(shè)計(jì)
- c++剪刀石頭布游戲課程設(shè)計(jì)
- 猜單詞游戲c++課程設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)---吃豆子游戲程序
- c++猜單詞課程設(shè)計(jì)--——猜單詞游戲
- c++高射炮打飛機(jī)游戲課程設(shè)計(jì)
- c++課程設(shè)計(jì)--五子棋游戲
- c++課程設(shè)計(jì)--gui小游戲的設(shè)計(jì)與實(shí)現(xiàn)
- c++課程設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)ppt
- c++課程設(shè)計(jì)--c++程序設(shè)計(jì)語(yǔ)言
- c++課程設(shè)計(jì)-- c++面向?qū)ο蟪绦蛟O(shè)計(jì)
- c 課程設(shè)計(jì)報(bào)告-數(shù)字教學(xué)游戲
- 串口通信c++課程設(shè)計(jì)
- c++掃雷課程設(shè)計(jì)報(bào)告
- 中南大學(xué)c++課程設(shè)計(jì)
- c++課程設(shè)計(jì)——乘積最大
評(píng)論
0/150
提交評(píng)論