版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 數(shù)</b></p><p><b> 據(jù)</b></p><p><b> 結(jié)</b></p><p><b> 構(gòu)</b></p><p><b> 課</b></p><p
2、><b> 程</b></p><p><b> 設(shè)</b></p><p><b> 計</b></p><p><b> 報</b></p><p><b> 告</b></p><p>&
3、lt;b> 書</b></p><p> 課題名稱: 超級瑪麗小游戲開發(fā) </p><p> 班 級: XXXXXXXX </p><p> 學(xué) 號: XXXXXXXX </p><p> 姓
4、 名: XXXXXXXX </p><p> 指導(dǎo)教師: XXXXXXXX </p><p><b> 課程設(shè)計的目的:</b></p><p> 通過本次課程設(shè)計,加深對數(shù)據(jù)結(jié)構(gòu)這么課程的中基礎(chǔ)理論的理解以及能夠?qū)σ恍┏S脭?shù)據(jù)結(jié)構(gòu)的熟練應(yīng)
5、用,理論與實踐相結(jié)合,達到學(xué)以致用的目的。</p><p> 通過小組形式一起開發(fā),從中培養(yǎng)團結(jié)、合作、溝通、理解的精神。</p><p> 選擇的課題:超級瑪麗小游戲開發(fā)</p><p><b> 小組成員:</b></p><p><b> 應(yīng)用到的知識:</b></p>
6、<p><b> 鏈表的操作、</b></p><p> win32 sdk基礎(chǔ)、</p><p> DirectDraw基礎(chǔ)、</p><p><b> 基礎(chǔ)物理力學(xué)、</b></p><p><b> 初等數(shù)學(xué)中的向量學(xué)</b></p>&
7、lt;p><b> 設(shè)計流程圖:</b></p><p><b> 詳細設(shè)計流程:</b></p><p> 定義一些用于判斷游戲各種狀態(tài)、和圖片物品位置索引的枚舉變量和結(jié)構(gòu)體和一些宏常量:</p><p><b> 其中枚舉變量的有:</b></p><p>
8、 運動方向DIRECTION、</p><p> 動作狀態(tài)ACTION、</p><p><b> 怪的類型、</b></p><p><b> 碰撞類型、</b></p><p><b> 物質(zhì)類型</b></p><p><b>
9、 結(jié)構(gòu)體的有:</b></p><p> 用于圖片索引定位的結(jié)構(gòu)體SPRITE_BM、</p><p> 各個物塊的邊界信息結(jié)構(gòu)體BOX、</p><p> 用于分析碰撞結(jié)果的結(jié)構(gòu)體COLLISION</p><p><b> 一些宏、常量:</b></p><p> 游戲起
10、始位置:PLAYER_STARTX 、PLAYER_STARTY</p><p> 重力加速度:GRAVITY</p><p> 屏幕長和寬:SCREEN_W 、SCREEN_H</p><p> 瓷磚長和寬:TILE_W、TILE_H</p><p> 2、設(shè)計基類:CSprite</p><p><b
11、> 屬性:</b></p><p><b> 類型m_type、</b></p><p> 是否已死m(xù)_active、</p><p><b> 橫坐標(biāo)m_x、</b></p><p><b> 縱坐標(biāo)m_y、</b></p><
12、p><b> 寬m_width、</b></p><p> 高m_height、</p><p> 是否在地上m_onground、</p><p> 圖片張數(shù)m_nBitmaps、</p><p> 圖片幀計數(shù)m_count、</p><p> 當(dāng)前圖片索引m_curBitma
13、p、</p><p> 圖片索引m_sbm、</p><p><b> 方向m_dir、</b></p><p> 行為m_action(方向和行為用于索引圖片和游戲邏輯判斷)、</p><p><b> X軸速度m_xv、</b></p><p><b>
14、 Y軸速度m_yv、</b></p><p><b> X加速度m_xa、</b></p><p><b> Y加速度m_ya、</b></p><p> 移動路程m_relSwitch</p><p><b> 方法:</b></p>&l
15、t;p> 創(chuàng)建方法Create、</p><p> 貼圖索引BitBlt、</p><p> 換幀方法AdvanceBitmap、</p><p> 是否在地面上的檢測方法CheckBottom、</p><p> 改變方向ChangeDirection、</p><p> 設(shè)置行為動作SetActi
16、on、</p><p> 碰撞方法(通過行進路線采用向量法檢測)Collide</p><p> 虛方法有:獲取邊界信息方法GetBounds、移動方法Move、顯示方法Draw</p><p><b> 設(shè)計派生類:</b></p><p><b> 金幣類CCoin、</b></p
17、><p> 子彈類CBullet、</p><p> 爆炸類CExplode、</p><p> 蘑菇類CMushroom、</p><p> 玩家類CPlayer</p><p> 實現(xiàn)各自相應(yīng)的虛方法、并為玩家類添加以下方法:</p><p><b> 變大GrowUp、&
18、lt;/b></p><p><b> 變小Shrink、</b></p><p><b> 防御Shield、</b></p><p> 撞擊BeenHit、</p><p><b> 發(fā)彈的方法Fire</b></p><p> 設(shè)計
19、鏈表類:CSpriteList</p><p> 存儲節(jié)點類型為基類CSprite、</p><p><b> 方法有:</b></p><p><b> 構(gòu)造方法、</b></p><p><b> 添加方法Add、</b></p><p>
20、 刪除方法Delete、</p><p> 清空方法Destroy</p><p><b> 定義全局變量:</b></p><p> CBitmap類型的有:</p><p> g_bmTile、g_bmPlayer、g_bmGhost、g_bmTurtle、g_bmCoin、g_bmMushroom、g_bm
21、Debris、g_bmBullet、g_bmExplode、g_bmFlower</p><p> CPlane類型的有:g_plane</p><p> CPlayer類型的有:g_player</p><p> CSpriteList類的有:g_sprites</p><p> 輸入信息類:g_input</p>&
22、lt;p> 其它邏輯判斷的全局變量:</p><p> 是否暫停g_bPaused</p><p> 是否顯示狀態(tài)信息g_bShowStats</p><p> 等級g_level、</p><p> 背景是否為黑夜g_darken</p><p><b> 定義全局方法:</b>
23、;</p><p> 添加金幣方法AddCoin</p><p> 添加怪的方法AddGhost</p><p> 添加烏龜?shù)姆椒ˋddTurtle</p><p><b> 技術(shù)要點:</b></p><p><b> 鏈表操作:</b></p>&
24、lt;p><b> 建立(添加):</b></p><p> 頭指針m_head = NULL</p><p><b> 循環(huán)以下步驟:</b></p><p><b> (1)、新建節(jié)點:</b></p><p> (2)、添加到鏈表中:</p>
25、<p><b> 刪除:</b></p><p> 雙指針遍歷找到要刪除的節(jié)點</p><p> 前指針pre所指的節(jié)點指針域跨過要刪除的節(jié)點指向下個節(jié)點</p><p> (若是首元節(jié)點刪除則直接使用頭指針指向下個節(jié)點即可)</p><p><b> 碰撞檢測:</b><
26、;/p><p> 本次采用的碰撞檢測采用行進路線碰撞檢測,通過行進路線來檢測是否發(fā)生碰撞的方法主要用來檢測兩個移動的物體,或者是移動物體與平面是否發(fā)生碰撞,如下圖所示:</p><p> 在上圖中,不論是兩顆球的行進方向,還是平面都加上了一個箭頭,這樣做是將其表示為向量。下面我們通過向量來判斷一個具有速度值的小球是否與斜面(非水平與垂直)會發(fā)生碰撞,我們在這里先假設(shè)小球目前的時刻與下一個時
27、刻的圓心位置分別為p3與p4,斜面的起點與終點為p1與p2,原點為o,若小球與平面發(fā)生碰撞,碰撞點為c,其碰撞圖如下圖所示:</p><p> 由上圖我們可以推導(dǎo)出如下公式:</p><p><b> =</b></p><p><b> =</b></p><p><b> =&
28、lt;/b></p><p> 若交點C在兩向量之中,則在上面的式子中,m與n的值會介于0-1之間,其值代表球與斜面是否發(fā)生碰撞。</p><p> 假設(shè)斜面的起點坐標(biāo)為(a,b),而向量-),小球圓心目前的坐標(biāo)為(c,d),其速度向量),代入上式為:</p><p> ?。╝,b)+m)=(c,d)+)</p><p> x軸方
29、向的向量:a+m=c+n</p><p> y軸方向的向量:b+m=c+n</p><p> m=[(b-d)+]/()</p><p> n=[(d-b)+]/()</p><p> 我們在導(dǎo)出了m與n的結(jié)果之后,在程序中若要判斷小球與斜面是否發(fā)生碰撞,我們只要將其移動的路徑、斜面的向量和起點坐標(biāo)代入上面的方程式中,然后判斷m與n是
30、否都介于0-1之間,就可得知是否發(fā)生了碰撞。</p><p> 3、物理模型之重力加速度</p><p> 簡單來說,重力加速度就是物體因受到重力的影響而產(chǎn)生的一種向下的加速度,如下圖所示:</p><p> 這種會令物體加速往下掉的加速度是因為重力而產(chǎn)生的,所以在物理上稱這種加速度為“重力加速度”,它是一個常量。</p><p>
31、如同前面所說的一樣,物體在運動時,我們要為其加上一個重力加速度常量,如下所示:</p><p> x=x+ =+ y=y+</p><p> 為X方向速度常量,為Y方向速度常量;為的速度常量。</p><p> 這樣我們就能夠更加真實地表現(xiàn)物體由高空中往下掉的視覺效果了。</p><p> 結(jié)束語:通過這次課程設(shè)計,使我充分的了解了數(shù)
32、據(jù)結(jié)構(gòu)的理論與實踐相結(jié)合的重要性,在充分的理論基礎(chǔ)上必須有實際上的應(yīng)用,才能靈活應(yīng)用課堂上所學(xué)的理論知識。我們不僅能夠把以前所學(xué)的知識聯(lián)系起來,并且學(xué)會了一些新的知識。雖然我們小組的分工明確,但是每一個人對設(shè)計的各個階段都相當(dāng)?shù)牧私狻?lt;/p><p> 此次的課程設(shè)計中給我體會最深的是我們的協(xié)作關(guān)系。我們是一個整體,通過互相學(xué)習(xí),互相幫助,翻閱大量資料完成了這次有意義的超級瑪麗游戲設(shè)計。不僅增強了我們彼此之間的
溫馨提示
- 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 超級瑪麗小游戲設(shè)計
- 基于java的超級瑪麗設(shè)計與實現(xiàn)
- 基于java的超級瑪麗游戲的設(shè)計與實現(xiàn)
- 軟件工程畢業(yè)論文-超級瑪麗小游戲設(shè)計
- 課程設(shè)計報告書
- 課程設(shè)計報告書
- 基于JAVA的超級瑪麗設(shè)計與實現(xiàn)畢業(yè)論文.doc
- 高頻課程設(shè)計報告書
- 空調(diào)課程設(shè)計報告書
- fpga課程設(shè)計報告書
- 洪水調(diào)節(jié)課程設(shè)計報告書
- 區(qū)段站課程設(shè)計報告書
- 數(shù)值分析課程設(shè)計報告書
- 運籌學(xué)課程設(shè)計報告書
- 巖土工程課程設(shè)計報告書
- 信息論課程設(shè)計報告書
- 過程控制課程設(shè)計報告書
- 電子商務(wù)課程設(shè)計報告書
- 課程設(shè)計---考勤管理系統(tǒng)報告書
- 環(huán)境監(jiān)測課程設(shè)計報告書
評論
0/150
提交評論