一、項(xiàng)目簡單介紹:
水果忍者游戲:
《水果忍者》是一款簡單的休閑游戲。目的只有一個(gè)——砍水果!屏幕上會(huì)不斷跳出各種水果——西瓜、鳳梨、獼猴桃、草莓、香蕉、石榴、楊桃、蘋果、火龍果等,還要在水果掉落之前要快速的全部砍掉!千萬別砍到炸彈!不然游戲就結(jié)束了。
盡管移動(dòng)平臺(tái)上的游戲因?yàn)槭謾C(jī)屏幕及運(yùn)行能力所限,游戲畫面通常會(huì)設(shè)計(jì)得比較簡單,但游戲設(shè)計(jì)者卻絕不允許在玩家不易察覺之處有一絲偷懶。比如若把《水果忍者》的游戲畫面以十分之一的速度播放,你會(huì)清楚的看到一個(gè)水果被切開后果汁的飛濺方向,以及果汁是如何一點(diǎn)點(diǎn)消失的。正是這樣的細(xì)節(jié)體現(xiàn)出來的效果讓用戶覺得切水果“很爽”。
游戲界中有一句廣為流傳的說法是,一款成功的游戲肯定會(huì)非常容易上手而又很難真正完全掌握的。這句話對休閑游戲來說尤其重要?!端陶摺钒堰@一點(diǎn)做到了極致。當(dāng)人們打開游戲的時(shí)候,看到水果圖標(biāo)很自然就會(huì)去點(diǎn)擊,但是會(huì)看到手指劃過的提示,于是就會(huì)很自然的采用劃過的手勢去點(diǎn)擊圖標(biāo),并且會(huì)把這種交互方式延續(xù)到游戲中。
當(dāng)用戶看到水果彈出來就會(huì)去切,因?yàn)楹芸鞎?huì)出現(xiàn)炸彈,如果碰到炸彈游戲就會(huì)結(jié)束。于是用戶就知道了不要去碰炸彈,接著玩很快就會(huì)發(fā)現(xiàn)連著一筆切好幾個(gè)水果有獎(jiǎng)勵(lì),就會(huì)盡量連著切。通過這樣的發(fā)現(xiàn)和學(xué)習(xí),用戶很快就會(huì)知道游戲的基本玩法。但是要獲得高分還是有很多技巧需要掌握。
本C++水果忍者游戲的設(shè)計(jì):
本次游戲設(shè)計(jì)主要分為三個(gè)模塊:游戲進(jìn)入模塊,游戲進(jìn)行時(shí)模塊,游戲控制模塊。各個(gè)模塊之間的關(guān)系和作用如下:
游戲控制模塊:主要負(fù)責(zé)游戲的狀態(tài)控制,游戲主要包括三種狀態(tài):啟動(dòng)狀態(tài),進(jìn)行狀態(tài),暫停狀態(tài)。 游戲進(jìn)行模塊:主要負(fù)責(zé)游戲中各種動(dòng)畫的創(chuàng)建,動(dòng)畫播放,動(dòng)畫事件,和動(dòng)畫銷毀等。 游戲進(jìn)入模塊:負(fù)責(zé)游戲進(jìn)入時(shí)動(dòng)畫的顯示,數(shù)據(jù)加載和響應(yīng)用戶的選擇輸入。 底層類 下面是游戲的狀態(tài)圖:
游戲引擎:
游戲引擎是指一些已編寫好的可編輯電腦游戲系統(tǒng)或者一些交互式實(shí)時(shí)圖像應(yīng)用程序的核心組件。對于此項(xiàng)目的游戲引擎,我們將以學(xué)習(xí)為主,并在原有引擎的基礎(chǔ)上修改出自己所希望的引擎支持。游戲引擎最重要的一塊就是游戲的渲染,美工會(huì)按照不同的面把材質(zhì)貼圖賦予模型,這相當(dāng)于為骨骼蒙上皮膚,最后再通過渲染引擎把模型、動(dòng)畫、光影、特效等所有效果實(shí)時(shí)計(jì)算出來并展示在屏幕上。渲染引擎在引擎的所有部件當(dāng)中是最復(fù)雜的,它的強(qiáng)大與否直接決定著最終的輸出質(zhì)量。因此這一部分也將是我們重點(diǎn)研究和設(shè)計(jì)的對象。
綜合我們的項(xiàng)目動(dòng)機(jī),我們將期待以下的結(jié)果:
1. 實(shí)現(xiàn)切水果中的水果刀效果,并演示相關(guān)切法特效(如水果噴射、濺灑等等)。
2. 根據(jù)相關(guān)算法,設(shè)計(jì)不同的游戲模式,在原有引擎基礎(chǔ)上進(jìn)行升級(jí)。
3. 添加道具系統(tǒng),當(dāng)切到一定高分之后,可以獲得道具,如瞬間炸掉屏幕內(nèi)所有水果的道具等等
二、培訓(xùn)目標(biāo)
1、本系列講座分為四大模塊:
?基礎(chǔ)篇:主要講解c++以及MFC的深入淺出
?進(jìn)階篇:主要講解游戲設(shè)計(jì)以及游戲引擎
?設(shè)計(jì)篇:水果忍者游戲設(shè)計(jì)算法精講
?實(shí)戰(zhàn)篇:水果忍者代碼實(shí)現(xiàn)部分演示與精講
2、適用對象
?最好有一定C++基礎(chǔ)知識(shí)
?熱衷于學(xué)習(xí)界面編程的人群
?熱衷于游戲設(shè)計(jì)和開發(fā)的人群
三、模塊介紹(共56講)
1、基礎(chǔ)篇:主要講解c++以及MFC的深入淺出
?容器與算法精講
?類與數(shù)據(jù)抽象精講
?模板與泛型編程精講
?標(biāo)準(zhǔn)IO庫知識(shí)點(diǎn)深入淺出
?CObject類詳解
?消息映射的實(shí)現(xiàn)
?MFC的DLL精講
?MFC的進(jìn)程和線程精講
2、進(jìn)階篇:主要講解游戲設(shè)計(jì)以及游戲引擎
?游戲設(shè)計(jì)思想
?游戲設(shè)計(jì)精髓
?游戲引擎概述
?游戲引擎指點(diǎn)
3、設(shè)計(jì)篇:水果忍者游戲設(shè)計(jì)算法精講
?子畫面碰撞檢測
?水果刀與子畫面碰撞檢測
?背景回滾算法
?自由落體算法
?刀光筆觸算法
?2D粒子效果的實(shí)現(xiàn)
4、實(shí)戰(zhàn)篇:水果忍者代碼實(shí)現(xiàn)部分演示與精講
完成了游戲引擎的設(shè)計(jì)。該游戲引擎現(xiàn)階段是一個(gè)2D游戲引擎,能夠跟蹤游戲上的所有元素,實(shí)現(xiàn)了動(dòng)畫播放,碰撞檢測,釋放資源等基本功能。同時(shí)還提供了游戲進(jìn)入界面,人物動(dòng)畫設(shè)計(jì)和圖像加載等相關(guān)接口和類,便于游戲的擴(kuò)展實(shí)現(xiàn)。完成了游戲圖片元素的收集和動(dòng)畫元素的收集。其中主要包括的圖片有:水果,炸彈,道具等;涉及到的動(dòng)畫:炸彈爆炸動(dòng)畫,啟動(dòng)菜單動(dòng)畫,筆觸動(dòng)畫等。
四、本系列課程所涉及到的技術(shù):
?MFC類庫知識(shí)
?MFC消息映射的實(shí)現(xiàn)
?模板與泛型編程精講
?容器與算法
?MFC中的DLL編程
?MFC中的多進(jìn)程和多線程編程
?Win32核心編程
?子畫面碰撞檢測
?水果刀與子畫面碰撞檢測
?背景回滾算法
?自由落體算法
?刀光筆觸算法
?2D粒子效果的實(shí)現(xiàn)
?游戲引擎概述
?游戲引擎指點(diǎn)
五、課程大綱
01.水果忍者游戲簡介
02.水果忍者游戲基礎(chǔ)篇之vector
03.水果忍者游戲基礎(chǔ)篇之vector(續(xù))
04.水果忍者游戲基礎(chǔ)篇之list用法精講
05.水果忍者游戲基礎(chǔ)篇之list用法精講(續(xù))
06.水果忍者游戲基礎(chǔ)篇之關(guān)聯(lián)容器精講
07.水果忍者游戲基礎(chǔ)篇之關(guān)聯(lián)容器精講(續(xù))
08.水果忍者游戲基礎(chǔ)篇之類的初始化
09.水果忍者游戲基礎(chǔ)篇之類的初始化(續(xù))
10.水果忍者游戲基礎(chǔ)篇之模板精講
11.水果忍者游戲基礎(chǔ)篇之泛型編程
12.水果忍者游戲基礎(chǔ)篇之泛型編程(續(xù))
13.水果忍者游戲基礎(chǔ)篇之自寫String類
14.水果忍者游戲基礎(chǔ)篇之MFC窗口、菜單和消息框
15.水果忍者游戲基礎(chǔ)篇之MFC窗口、菜單和消息框(接上講)
16.水果忍者游戲基礎(chǔ)篇之MFC窗口、菜單和消息框(取消菜單欄)
17.水果忍者游戲基礎(chǔ)篇之MFC窗口、菜單和消息框(取消菜單欄)接上講
18.水果忍者游戲基礎(chǔ)篇之MFC窗口、菜單和消息框(更新命令用戶接口)
19.水果忍者游戲基礎(chǔ)篇之MFC窗口、菜單和消息框(更新命令用戶接口)
20.水果忍者進(jìn)階篇之游戲引擎精講
21.水果忍者進(jìn)階篇之游戲引擎精講(頭文件定義接上)
22.水果忍者進(jìn)階篇之游戲引擎精講(源文件實(shí)現(xiàn))
23.水果忍者進(jìn)階篇之游戲引擎精講(接上)
24.水果忍者進(jìn)階篇之游戲引擎精講(源文件接口實(shí)現(xiàn))
25.水果忍者進(jìn)階篇之游戲引擎精講(子類的聲明和實(shí)現(xiàn))
26.水果忍者設(shè)計(jì)篇之算法精講
27.水果忍者設(shè)計(jì)篇之算法精講(水果刀與子畫面的碰撞檢測)
28.水果忍者設(shè)計(jì)篇之算法精講(水果刀與子畫面的碰撞檢測)
29.水果忍者設(shè)計(jì)篇之類的設(shè)計(jì)
30.水果忍者實(shí)戰(zhàn)篇之代碼實(shí)現(xiàn)
31.水果忍者實(shí)戰(zhàn)篇之Bitmap類的實(shí)現(xiàn)
32.水果忍者實(shí)戰(zhàn)篇之Bitmap類的實(shí)現(xiàn)(源文件)
33.水果忍者實(shí)戰(zhàn)篇之Bitmap類的實(shí)現(xiàn)(源文件)
34.水果忍者實(shí)戰(zhàn)篇之Bitmap類的實(shí)現(xiàn)(源文件create接口的實(shí)現(xiàn))
35.水果忍者實(shí)戰(zhàn)篇之Bitmap類的實(shí)現(xiàn)(源文件Draw接口的實(shí)現(xiàn))
36.水果忍者實(shí)戰(zhàn)篇之Bitmap類的實(shí)現(xiàn)(源文件Draw接口的實(shí)現(xiàn))
37.水果忍者實(shí)戰(zhàn)篇之GameLogicController類的實(shí)現(xiàn)
38.水果忍者實(shí)戰(zhàn)篇之GameFont類的實(shí)現(xiàn)
39.水果忍者實(shí)戰(zhàn)篇之GameFont類的實(shí)現(xiàn)(源文件)
40.水果忍者實(shí)戰(zhàn)篇之GameFont類的實(shí)現(xiàn)(源文件)
41.水果忍者實(shí)戰(zhàn)篇之Background類的實(shí)現(xiàn)
42.水果忍者實(shí)戰(zhàn)篇之BackgroundLayer類的實(shí)現(xiàn)
43.水果忍者實(shí)戰(zhàn)篇之BackgroundLayer類的實(shí)現(xiàn)(源文件)
44.水果忍者實(shí)戰(zhàn)篇之BackgroundLayer類的實(shí)現(xiàn)(源文件Draw實(shí)現(xiàn))
45.水果忍者實(shí)戰(zhàn)篇之Sprite類的實(shí)現(xiàn)
46.水果忍者實(shí)戰(zhàn)篇之Sprite類的實(shí)現(xiàn)(頭文件)
47.水果忍者實(shí)戰(zhàn)篇之Sprite類的實(shí)現(xiàn)(源文件)
48.水果忍者實(shí)戰(zhàn)篇之Sprite類的實(shí)現(xiàn)(源文件)
49.水果忍者實(shí)戰(zhàn)篇之Sprite類的實(shí)現(xiàn)(draw函數(shù)的實(shí)現(xiàn))
50.水果忍者實(shí)戰(zhàn)篇之Sprite類的實(shí)現(xiàn)
51.水果忍者實(shí)戰(zhàn)篇之Sprite類的實(shí)現(xiàn)(源文件)
52.水果忍者實(shí)戰(zhàn)篇之SceneBackground類的實(shí)現(xiàn)
53.水果忍者實(shí)戰(zhàn)篇之SceneBackgroundLayer類的實(shí)現(xiàn)(源文件)
54.水果忍者實(shí)戰(zhàn)篇之SceneBackgroundLayer類的實(shí)現(xiàn)(源文件--update函數(shù))
55.水果忍者實(shí)戰(zhàn)篇之SceneBackgroundLayer類的實(shí)現(xiàn)(源文件--update函數(shù))
56.水果忍者實(shí)戰(zhàn)篇之SceneBackgroundLayer類的實(shí)現(xiàn)(源文件--Draw函數(shù))
57.水果忍者實(shí)戰(zhàn)篇之ScrollingBackground類的實(shí)現(xiàn)
58.水果忍者實(shí)戰(zhàn)篇之VirtualBackground類的實(shí)現(xiàn)
59.水果忍者實(shí)戰(zhàn)篇之VirtualBackground類的實(shí)現(xiàn)(update)
60.水果忍者實(shí)戰(zhàn)篇之VirtualBackground類的實(shí)現(xiàn)(draw)
61.水果忍者實(shí)戰(zhàn)篇之StackBackground類的實(shí)現(xiàn)
62.水果忍者實(shí)戰(zhàn)篇之MouseBrush類的實(shí)現(xiàn)
63.水果忍者實(shí)戰(zhàn)篇之MouseBrush類的實(shí)現(xiàn)
64.水果忍者實(shí)戰(zhàn)篇之SharpenBrush類的實(shí)現(xiàn)
65.水果忍者實(shí)戰(zhàn)篇之SharpenBrush類的實(shí)現(xiàn) (源文件中drawbrush函數(shù)的實(shí)現(xiàn))
66.水果忍者實(shí)戰(zhàn)篇之FontController類的實(shí)現(xiàn)
67.水果忍者實(shí)戰(zhàn)篇之FontController類的實(shí)現(xiàn) (源文件)
68.水果忍者實(shí)戰(zhàn)篇之SpriteController類的實(shí)現(xiàn)
69.水果忍者實(shí)戰(zhàn)篇之SpriteController類的實(shí)現(xiàn)(源文件)
70.水果忍者實(shí)戰(zhàn)篇之StarryBackground類的實(shí)現(xiàn)
71.水果忍者實(shí)戰(zhàn)篇之FruitController類的實(shí)現(xiàn)
72.水果忍者實(shí)戰(zhàn)篇之ParticleController類的實(shí)現(xiàn)
73.水果忍者實(shí)戰(zhàn)篇之Actor類的實(shí)現(xiàn)
74.水果忍者實(shí)戰(zhàn)篇之Actor類的實(shí)現(xiàn) (源文件)
75.水果忍者實(shí)戰(zhàn)篇之Fireman類的實(shí)現(xiàn)
76.水果忍者實(shí)戰(zhàn)篇之Fireman類的實(shí)現(xiàn) (源文件)
77.水果忍者實(shí)戰(zhàn)篇之Shooter類的實(shí)現(xiàn)
78.水果忍者實(shí)戰(zhàn)篇之ScoreFont類的實(shí)現(xiàn)
79.水果忍者實(shí)戰(zhàn)篇之Fruit類的實(shí)現(xiàn)
80.水果忍者實(shí)戰(zhàn)篇之Fruit類的實(shí)現(xiàn) (源文件)
81.水果忍者實(shí)戰(zhàn)篇之KnifeParticle類的實(shí)現(xiàn)
82.水果忍者實(shí)戰(zhàn)篇之KnifeParticle類的實(shí)現(xiàn)(源文件)
83.水果忍者實(shí)戰(zhàn)篇之Particle類的實(shí)現(xiàn)
84.水果忍者實(shí)戰(zhàn)篇之Particle類的實(shí)現(xiàn) (update函數(shù))
85.水果忍者實(shí)戰(zhàn)篇之ParticleTrace類的實(shí)現(xiàn)
86.水果忍者實(shí)戰(zhàn)篇之ParticleTrace類的實(shí)現(xiàn) (源文件)
87.水果忍者實(shí)戰(zhàn)篇之SuperParticle類的實(shí)現(xiàn)
88.水果忍者實(shí)戰(zhàn)篇之GameEngine類的實(shí)現(xiàn)
89.水果忍者實(shí)戰(zhàn)篇之GameEngine類的實(shí)現(xiàn) (頭文件)
90.水果忍者實(shí)戰(zhàn)篇之GameEngine類的實(shí)現(xiàn) (頭文件中的訪問方法)
91.水果忍者實(shí)戰(zhàn)篇之GameEngine類的實(shí)現(xiàn)(源文件)
92.水果忍者實(shí)戰(zhàn)篇之GameEngine類的實(shí)現(xiàn)(源文件)
93.水果忍者實(shí)戰(zhàn)篇之GameEngine類的實(shí)現(xiàn)(游戲引擎常規(guī)方法Initialize的實(shí)現(xiàn))