1. 程式人生 > >超級瑪麗詳細設計

超級瑪麗詳細設計

通過 背景 過程 aps cti gin turtle bullet sprites

課題名稱: 超級瑪麗小遊戲開發

一、 課程設計的目的:

1、 通過本次課程設計,加深對數據結構這麽課程的中基礎理論的理解以及能夠對一些常用數據結構的熟練應用,理論與實踐相結合,達到學以致用的目的。

2、 通過小組形式一起開發,從中培養團結、合作、溝通、理解的精神。

二、 選擇的課題:超級瑪麗小遊戲開發

三、 應用到的知識:

鏈表的操作、

win32 sdk基礎、

DirectDraw基礎、

基礎物理力學、

初等數學中的向量學

設計流程圖:

技術分享

四、 詳細設計流程:

1、 定義一些用於判斷遊戲各種狀態、和圖片物品位置索引的枚舉變量和結構體和一些宏常量:

其中枚舉變量的有:

運動方向DIRECTION、

動作狀態ACTION、

怪的類型、

碰撞類型、

物質類型

結構體的有:

用於圖片索引定位的結構體SPRITE_BM、

各個物塊的邊界信息結構體BOX、

用於分析碰撞結果的結構體COLLISION

一些宏、常量:

遊戲起始位置:PLAYER_STARTX PLAYER_STARTY

重力加速度:GRAVITY

屏幕長和寬:SCREEN_W SCREEN_H

瓷磚長和寬:TILE_W、TILE_H

2、設計基類:CSprite

屬性:

類型m_type、

是否已死m_active、

橫坐m_x、

縱坐標m_y、

寬m_width、

高m_height、

是否在地上m_onground、

圖片張數m_nBitmaps、

圖片幀計數m_count、

當前圖片索引m_curBitmap、

圖片索引m_sbm、

方向m_dir、

行為m_action(方向和行為用於索引圖片和遊戲邏輯判斷)、

X軸速度m_xv、

Y軸速度m_yv、

X加速度m_xa、

Y加速度m_ya、

移動路程m_relSwitch

方法:

創建方法Create、

貼圖索引BitBlt、

換幀方法AdvanceBitmap、

是否在地面上的檢測方法CheckBottom、

改變方向ChangeDirection、

設置行為動作SetAction、

碰撞方法(通過行進路線采用向量法檢測)Collide

虛方法有:獲取邊界信息方法GetBounds、移動方法Move、顯示方法Draw

2、 設計派生類:

金幣類CCoin、

子彈類CBullet、

爆炸類CExplode、

蘑菇類CMushroom、

玩家類CPlayer

實現各自相應的虛方法、並為玩家類添加以下方法:

變大GrowUp、

變小Shrink、

防禦Shield、

撞擊BeenHit、

發彈的方法Fire

3、 設計鏈表類:CSpriteList

存儲節點類型為基類CSprite、

方法有:

構造方法、

添加方法Add、

刪除方法Delete、

清空方法Destroy

4、 定義全局變量:

CBitmap類型的有:

g_bmTile、g_bmPlayer、g_bmGhost、g_bmTurtle、g_bmCoin、g_bmMushroom、g_bmDebris、g_bmBullet、g_bmExplode、g_bmFlower

CPlane類型的有:g_plane

CPlayer類型的有:g_player

CSpriteList類的有:g_sprites

輸入信息類:g_input

其它邏輯判斷的全局變量:

是否暫停g_bPaused

是否顯示狀態信息g_bShowStats

等級g_level、

背景是否為黑夜g_darken

5、 定義全局方法:

添加金幣方法AddCoin

添加怪的方法AddGhost

添加烏龜的方法AddTurtle

五、 技術要點:

1、 鏈表操作:

建立(添加)

a、 頭指針m_head = NULL

b、 循環以下步驟:

(1)、新建節點:

(2)、添加到鏈表中:

技術分享

刪除:

(1) 雙指針遍歷找到要刪除的節點

(2) 前指針pre所指的節點指針域跨過要刪除的節點指向下個節點

(若是首元節點刪除則直接使用頭指針指向下個節點即可)

技術分享

3、物理模型之重力加速度

簡單來說,重力加速度就是物體因受到重力的影響而產生的一種向下的加速度,如下圖所示:

這種會令物體加速往下掉的加速度是因為重力而產生的,所以在物理上稱這種加速度為“重力加速度”,它是一個常量。

如同前面所說的一樣,物體在運動時,我們要為其加上一個重力加速度常量,如下所示:

x=x+ =+ y=y+

X方向速度常量,Y方向速度常量;為的速度常量。

這樣我們就能夠更加真實地表現物體由高空中往下掉的視覺效果了。

結束語:通過這次課程設計,使我充分的了解了數據結構的理論與實踐相結合的重要性,在充分的理論基礎上必須有實際上的應用,才能靈活應用課堂上所學的理論知識。我們不僅能夠把以前所學的知識聯系起來,並且學會了一些新的知識。雖然我們小組的分工明確,但是每一個人對設計的各個階段都相當的了解。

此次的課程設計中給我體會最深的是我們的協作關系。我們是一個整體,通過互相學習,互相幫助,翻閱大量資料完成了這次有意義的超級瑪麗遊戲設計。不僅增強了我們彼此之間的友誼,更讓我們了解到團體力量的偉大。

在本系統的開發過程中,在知識、經驗方面都存在著不足。今後會通過我們的努力進一步完善超級瑪麗遊戲。

技術分享

技術分享

技術分享

技術分享

技術分享技術分享技術分享

超級瑪麗詳細設計