際際滷

際際滷Share a Scribd company logo
http://fof.edu.vn


                       H働畛NG D畉N S畛 D畛NG FLIXEL.

1. Kh畛i t畉o game.
S畛 d畛ng file Main.as s畉 l class ch畉y 畉u ti棚n trong 畛ng d畛ng. Ng動畛i ta g畛i l
entry point. Tr畉ng th叩i c畛a bn ch董i s畉 動畛c kh畛i t畉o 畉u ti棚n l PlayState




G畉n th棚m preloader cho game b畉ng vi畛c s畛 d畛ng preloader c坦 s畉n c畛a Flixel.
Class Preloader ny ph畉i 動畛c k畉 th畛a t畛 FlxPreloader, nhi畛m v畛 c畛a class ny
ch畛 董n gi畉n l kh畛i t畉o class Main, tuy nhi棚n m畛i vi畛c s畉 動畛c flixel lm h畉t,
ch炭ng ta kh担ng c畉n khai b叩o new Main() n畛a. Khi s畛 d畛ng ch畛 c畉n khai b叩o bi畉n
className c坦 s畉n l Main.
http://fof.edu.vn




Quay l畉i v畛i class Main. C叩c tr畉ng th叩i c畛a game trong Flixel 動畛c qu畉n l箪 b畛i
c叩c subclass c畛a FlxState. Trong Main.as, class PlayState l m畛t subclass c畛a
FlxState, t動董ng 畛ng v畛i mn h狸nh bn ch董i (actual game state). Ngoi ra c嘆n c坦
c叩c tr畉ng th叩i kh叩c nh動 menu state, highscore state  Trong c叩c subclass c畛a
FlxState c坦 c叩c thu畛c t鱈nh khung (scaffold ) sau:
   - create : 動畛c g畛i khi class 動畛c t畉o ra.
   - Update : 動畛c g畛i t動董ng 畛ng m畛i l畉n enterframe.
http://fof.edu.vn




2. T畉o hero (player) v i畛u khi畛n hero.
Sau khi 達 t畉o 動畛c m畛t s動畛n c畉u tr炭c c畛a game, c担ng vi畛c ti畉p theo l t畉o
nh但n v畉t ch董i (hero). V nh但n v畉t 動畛c t畉o ra t畛 class Ship.as trong th動 m畛c
../lib/image/hero.png




FlxSprite l class 畛i t動畛ng quan tr畛ng nh畉t trong Flixel, t動董ng t叩c v畛i h畉u h畉t
c叩c t鱈nh ch畉t v畉t l箪 ho畉c chuy畛n 畛ng. Ship c滴ng 動畛c k畉 th畛a t畛 FlxState.
http://fof.edu.vn

Trong Ship, h狸nh 畉nh 畛 h畛a 動畛c s畛a d畛ng 畛 k鱈ch th動畛c 50x50 v 動畛c
embed vo.
Ng動畛i ch董i i畛u khi畛n 畛 ch董i c嘆n FlxSprite th狸 g畛i hm update() 畛 m畛i frame.
N畉u th畛a m達n i畛u ki畛n t動董ng 畛ng v畛i c叩c n炭t b畉m th狸 畛i t動畛ng Ship s畉 thay
畛i v畉n t畛c c畛a n坦. Ban 畉u v畉n t畛c = 0, sau 坦 ch炭ng ta ki畛m tra xem player c坦
nh畉n c叩c n炭t m滴i t棚n 畛 tng gi畉m v畉n t畛c hay kh担ng. Hm super.update() 動畛c
g畛i 畛 c畉p nh畉n tr畉ng th叩i m畛i c畛a Ship v畛i gi叩 tr畛 v畛a thay 畛i c畛a velocity.
http://fof.edu.vn

Nhi畛m v畛 ti畉p theo l g畉n Ship vo PlayState class sau khi game 達 動畛c kh畛i
t畉o (vi畉t trong hm create()).




Th畛 ch畉y th畛 project b畉ng vi畛c complie, v i畛u khi畛n phi thuy畛n ch畉y long
qung. L動u 箪, ch炭ng ta c畉n gi畛i h畉n kho畉ng kh担ng di chuy畛n c畛a phi thuy畛n
n畉m trong stage. C担ng vi畛c ny c畉n th棚m m畛t o畉n code ki畛m tra t畛a 畛 c畛a
Ship trong Ship class hm update. L動u 箪 c畉n vi畉t sau super.update().
http://fof.edu.vn




3. T畉o k畉 畛ch (enemies).
Ti畉n hnh t畉o ra c叩c enemies v畛i file Alien.as trong src/de/pixelate/flixelprimer .
Class Alien.as c坦 th畛 set thu畛c t鱈nh x v y, v狸 v畉y ch炭ng ta c坦 th畛 thi畉t 畉t t畛a 畛
ban 畉u c畛a enimies khi m畛i sinh ra. Trong code, ch炭ng ta set velocity (v畉n t畛c)
t畛i -200 s畉 khi畉n cho c叩c enimes ch畉y t畛 ph畉i sang tr叩i v畛i m畛t t畛c 畛 c畛 畛nh.
V畛 t畛a 畛 y, ch炭ng ta cho enimes di chuy畛n theo dao 畛ng h狸nh sin.
http://fof.edu.vn




畛 t畛 畛ng t畉o ra enimies. Ch炭ng ta c畉n th畛c hi畛n vi畛c ny trong class
PlayState.  t動畛ng c畛a vi畛c t畉o enimies nh動 sau:
        a) T畉o ra m畛t nh坦m ch畛a c叩c aliens (s畛 d畛ng class k畉 th畛a t畛
            FlxGroup), sau 坦 g畉n c叩c aliens vo nh坦m ny 畛 d畛 qu畉n l箪 v d畛
            x辿t va ch畉m v畛i Ship.
        b) 畉m th畛i gian 畛 sinh ra phi thuy畛n, kh畛i 畉u t畛 2,5 s sau 坦 nhanh
            d畉n cho t畛i khi 畉t max 畛 gi但y th畛 10.
        c) T畉o c叩c aliens theo c叩c t畛a 畛 random, ch畉y t畛 ph畉i qua tr叩i.
http://fof.edu.vn




C叩c hm h畛 岳姻畛.
http://fof.edu.vn




4. T畉o v滴 kh鱈 v lu畛ng 畉n.(bullets).
C担ng vi畛c ti畉p theo l t畉o ra nh畛ng vi棚n 畉n (bullets) va ch畉m v畛i aliens. Source
code c畛a bullets 動畛c ch畛a trong src/de/pixelate/flixelprimer file Bullet.as. V畛i
v畛i vi棚n 畉n ch炭ng ta kh担ng s畛 d畛ng file 畉nh m v畉 tr畛c ti畉p trong code v畛i
ph動董ng th畛c makeGraphic ().
http://fof.edu.vn




T畉o c叩c hm ph畛 trong PlayState.as
http://fof.edu.vn




C滴ng gi畛ng c叩ch lm v畛i c叩 aliens. Ch炭ng ta t畉o ra v nh坦m c叩c vi棚n 畉n vo
m畛t FlxGroup. Trong hm update() , ch炭ng ta s畛 d畛ng c但u l畛nh if 畛 ki畛m tra
n畉u ng動畛i ch董i nh畉n n炭t c叩ch (space key) th狸 phi thuy畛n s畉 b畉n 畉n.
http://fof.edu.vn

L動u 箪: ch炭ng ta c畉n b畛 sung hm getBulletSpawnPosition() b棚n trong class
Ship.as 畛 x叩c 畛nh v畛 tr鱈 ch鱈nh x叩c c畛a vi棚n 畉n 畛 m滴i phi thuy畛n. C叩c s畛 15 v
2 trong h狸nh ch畛 d湛ng 畛 動畛ng l動畛ng t畛a 畛 m滴i thuy畛n.




5. X畛 l箪 va ch畉m.
但y l ph畉n quan tr畛ng nh畉t c畛a m畛t game v ch炭ng ta s畛 d畛ng hm update()
trong PlayState 畛 lm c担ng vi畛c ny. B畉n ch畉t c畛a vi畛c va ch畉m l 2 h狸nh c坦
x畉p ch畛ng l棚n nhau (overlap) hay kh担ng. 畉u ti棚n ch炭ng ta ki畛m tra xem c叩c
vi棚n 畉n c坦 va ch畉m v畛i c叩c aliens hay kh担ng qua hm overlapAlienBullet(). Th畛
hai l ki畛m tra va ch畉m gi畛a phi thuy畛n v aliens.




C叩c hm callback 動畛c g畛i khi c坦 x畉y ra c叩c tr動畛ng h畛p va ch畉m v ph湛 h畛p
v畛i t畛ng tr動畛ng h畛p va ch畉m. V鱈 d畛, khi aliens b畛 b畉n, hay aliens va ch畉m v畛i
vi棚n 畉n (bullet) th狸 aliens s畉 n畛 tung v i畛m s畉 tng l棚n, hi畛n th畛 l棚n mn h狸nh.
Hay mn h狸nh s畉 rung l棚n m畛t ch炭t khi phi thuy畛n va ch畉m v畛i aliens (s畛 d畛ng
FlxG.shake).
http://fof.edu.vn




Sau khi end game s畉 c坦 m畛t o畉n text th担ng b叩o ch董i l畉i, 畛i t動畛ng text 畛 但y
(gameOverText) kh担ng ph畉i l textfield m l FlxText v 動畛c khai b叩o nh動 m畛t
private var b棚n trong PlayState




畛 ng動畛i ch董i c坦 th畛 ch董i l畉i khi k畉t th炭c game th狸 trong hm update c畛a
PlayState s畛 d畛ng c叩ch sau:




Cu畛i c湛ng t畉o ra v湛ng hi畛n th畛 i畛m trong hm create c畛a PlayState v 畉t
FlxG.score v畛 0 b棚n trong hm create c畛a PlayState.as
http://fof.edu.vn




6. m thanh trong game.
V畛i c叩c n畛i dung b棚n tr棚n th狸 game 達 c坦 th畛 ch董i 動畛c r畛i. Tuy v畉y 畛 tng
th棚m 畛 h畉p d畉n th狸 c畉n b畛 sung th棚m 但m thanh cho game. G畉n 但m thanh vo
t畛ng action 畛 tng th棚m t鱈nh sinh 畛ng cho game. T畉t c畉 c叩c tham chi畉u t畛i c叩c
file sound 畛u 動畛c khai b叩o 畛 ph畉n 畉u c畛a class PlayState.




S畛 d畛ng FlxG.play() 畛 ch畉y c叩c 但m thanh tr棚n trong c叩c tr動畛ng h畛p:
http://fof.edu.vn




B但y gi畛 ch炭ng ta 達 c坦 m畛t game 董n gi畉n lm t畛 Flixel engine !

More Related Content

Flixel tutorial

  • 1. http://fof.edu.vn H働畛NG D畉N S畛 D畛NG FLIXEL. 1. Kh畛i t畉o game. S畛 d畛ng file Main.as s畉 l class ch畉y 畉u ti棚n trong 畛ng d畛ng. Ng動畛i ta g畛i l entry point. Tr畉ng th叩i c畛a bn ch董i s畉 動畛c kh畛i t畉o 畉u ti棚n l PlayState G畉n th棚m preloader cho game b畉ng vi畛c s畛 d畛ng preloader c坦 s畉n c畛a Flixel. Class Preloader ny ph畉i 動畛c k畉 th畛a t畛 FlxPreloader, nhi畛m v畛 c畛a class ny ch畛 董n gi畉n l kh畛i t畉o class Main, tuy nhi棚n m畛i vi畛c s畉 動畛c flixel lm h畉t, ch炭ng ta kh担ng c畉n khai b叩o new Main() n畛a. Khi s畛 d畛ng ch畛 c畉n khai b叩o bi畉n className c坦 s畉n l Main.
  • 2. http://fof.edu.vn Quay l畉i v畛i class Main. C叩c tr畉ng th叩i c畛a game trong Flixel 動畛c qu畉n l箪 b畛i c叩c subclass c畛a FlxState. Trong Main.as, class PlayState l m畛t subclass c畛a FlxState, t動董ng 畛ng v畛i mn h狸nh bn ch董i (actual game state). Ngoi ra c嘆n c坦 c叩c tr畉ng th叩i kh叩c nh動 menu state, highscore state Trong c叩c subclass c畛a FlxState c坦 c叩c thu畛c t鱈nh khung (scaffold ) sau: - create : 動畛c g畛i khi class 動畛c t畉o ra. - Update : 動畛c g畛i t動董ng 畛ng m畛i l畉n enterframe.
  • 3. http://fof.edu.vn 2. T畉o hero (player) v i畛u khi畛n hero. Sau khi 達 t畉o 動畛c m畛t s動畛n c畉u tr炭c c畛a game, c担ng vi畛c ti畉p theo l t畉o nh但n v畉t ch董i (hero). V nh但n v畉t 動畛c t畉o ra t畛 class Ship.as trong th動 m畛c ../lib/image/hero.png FlxSprite l class 畛i t動畛ng quan tr畛ng nh畉t trong Flixel, t動董ng t叩c v畛i h畉u h畉t c叩c t鱈nh ch畉t v畉t l箪 ho畉c chuy畛n 畛ng. Ship c滴ng 動畛c k畉 th畛a t畛 FlxState.
  • 4. http://fof.edu.vn Trong Ship, h狸nh 畉nh 畛 h畛a 動畛c s畛a d畛ng 畛 k鱈ch th動畛c 50x50 v 動畛c embed vo. Ng動畛i ch董i i畛u khi畛n 畛 ch董i c嘆n FlxSprite th狸 g畛i hm update() 畛 m畛i frame. N畉u th畛a m達n i畛u ki畛n t動董ng 畛ng v畛i c叩c n炭t b畉m th狸 畛i t動畛ng Ship s畉 thay 畛i v畉n t畛c c畛a n坦. Ban 畉u v畉n t畛c = 0, sau 坦 ch炭ng ta ki畛m tra xem player c坦 nh畉n c叩c n炭t m滴i t棚n 畛 tng gi畉m v畉n t畛c hay kh担ng. Hm super.update() 動畛c g畛i 畛 c畉p nh畉n tr畉ng th叩i m畛i c畛a Ship v畛i gi叩 tr畛 v畛a thay 畛i c畛a velocity.
  • 5. http://fof.edu.vn Nhi畛m v畛 ti畉p theo l g畉n Ship vo PlayState class sau khi game 達 動畛c kh畛i t畉o (vi畉t trong hm create()). Th畛 ch畉y th畛 project b畉ng vi畛c complie, v i畛u khi畛n phi thuy畛n ch畉y long qung. L動u 箪, ch炭ng ta c畉n gi畛i h畉n kho畉ng kh担ng di chuy畛n c畛a phi thuy畛n n畉m trong stage. C担ng vi畛c ny c畉n th棚m m畛t o畉n code ki畛m tra t畛a 畛 c畛a Ship trong Ship class hm update. L動u 箪 c畉n vi畉t sau super.update().
  • 6. http://fof.edu.vn 3. T畉o k畉 畛ch (enemies). Ti畉n hnh t畉o ra c叩c enemies v畛i file Alien.as trong src/de/pixelate/flixelprimer . Class Alien.as c坦 th畛 set thu畛c t鱈nh x v y, v狸 v畉y ch炭ng ta c坦 th畛 thi畉t 畉t t畛a 畛 ban 畉u c畛a enimies khi m畛i sinh ra. Trong code, ch炭ng ta set velocity (v畉n t畛c) t畛i -200 s畉 khi畉n cho c叩c enimes ch畉y t畛 ph畉i sang tr叩i v畛i m畛t t畛c 畛 c畛 畛nh. V畛 t畛a 畛 y, ch炭ng ta cho enimes di chuy畛n theo dao 畛ng h狸nh sin.
  • 7. http://fof.edu.vn 畛 t畛 畛ng t畉o ra enimies. Ch炭ng ta c畉n th畛c hi畛n vi畛c ny trong class PlayState. t動畛ng c畛a vi畛c t畉o enimies nh動 sau: a) T畉o ra m畛t nh坦m ch畛a c叩c aliens (s畛 d畛ng class k畉 th畛a t畛 FlxGroup), sau 坦 g畉n c叩c aliens vo nh坦m ny 畛 d畛 qu畉n l箪 v d畛 x辿t va ch畉m v畛i Ship. b) 畉m th畛i gian 畛 sinh ra phi thuy畛n, kh畛i 畉u t畛 2,5 s sau 坦 nhanh d畉n cho t畛i khi 畉t max 畛 gi但y th畛 10. c) T畉o c叩c aliens theo c叩c t畛a 畛 random, ch畉y t畛 ph畉i qua tr叩i.
  • 9. http://fof.edu.vn 4. T畉o v滴 kh鱈 v lu畛ng 畉n.(bullets). C担ng vi畛c ti畉p theo l t畉o ra nh畛ng vi棚n 畉n (bullets) va ch畉m v畛i aliens. Source code c畛a bullets 動畛c ch畛a trong src/de/pixelate/flixelprimer file Bullet.as. V畛i v畛i vi棚n 畉n ch炭ng ta kh担ng s畛 d畛ng file 畉nh m v畉 tr畛c ti畉p trong code v畛i ph動董ng th畛c makeGraphic ().
  • 10. http://fof.edu.vn T畉o c叩c hm ph畛 trong PlayState.as
  • 11. http://fof.edu.vn C滴ng gi畛ng c叩ch lm v畛i c叩 aliens. Ch炭ng ta t畉o ra v nh坦m c叩c vi棚n 畉n vo m畛t FlxGroup. Trong hm update() , ch炭ng ta s畛 d畛ng c但u l畛nh if 畛 ki畛m tra n畉u ng動畛i ch董i nh畉n n炭t c叩ch (space key) th狸 phi thuy畛n s畉 b畉n 畉n.
  • 12. http://fof.edu.vn L動u 箪: ch炭ng ta c畉n b畛 sung hm getBulletSpawnPosition() b棚n trong class Ship.as 畛 x叩c 畛nh v畛 tr鱈 ch鱈nh x叩c c畛a vi棚n 畉n 畛 m滴i phi thuy畛n. C叩c s畛 15 v 2 trong h狸nh ch畛 d湛ng 畛 動畛ng l動畛ng t畛a 畛 m滴i thuy畛n. 5. X畛 l箪 va ch畉m. 但y l ph畉n quan tr畛ng nh畉t c畛a m畛t game v ch炭ng ta s畛 d畛ng hm update() trong PlayState 畛 lm c担ng vi畛c ny. B畉n ch畉t c畛a vi畛c va ch畉m l 2 h狸nh c坦 x畉p ch畛ng l棚n nhau (overlap) hay kh担ng. 畉u ti棚n ch炭ng ta ki畛m tra xem c叩c vi棚n 畉n c坦 va ch畉m v畛i c叩c aliens hay kh担ng qua hm overlapAlienBullet(). Th畛 hai l ki畛m tra va ch畉m gi畛a phi thuy畛n v aliens. C叩c hm callback 動畛c g畛i khi c坦 x畉y ra c叩c tr動畛ng h畛p va ch畉m v ph湛 h畛p v畛i t畛ng tr動畛ng h畛p va ch畉m. V鱈 d畛, khi aliens b畛 b畉n, hay aliens va ch畉m v畛i vi棚n 畉n (bullet) th狸 aliens s畉 n畛 tung v i畛m s畉 tng l棚n, hi畛n th畛 l棚n mn h狸nh. Hay mn h狸nh s畉 rung l棚n m畛t ch炭t khi phi thuy畛n va ch畉m v畛i aliens (s畛 d畛ng FlxG.shake).
  • 13. http://fof.edu.vn Sau khi end game s畉 c坦 m畛t o畉n text th担ng b叩o ch董i l畉i, 畛i t動畛ng text 畛 但y (gameOverText) kh担ng ph畉i l textfield m l FlxText v 動畛c khai b叩o nh動 m畛t private var b棚n trong PlayState 畛 ng動畛i ch董i c坦 th畛 ch董i l畉i khi k畉t th炭c game th狸 trong hm update c畛a PlayState s畛 d畛ng c叩ch sau: Cu畛i c湛ng t畉o ra v湛ng hi畛n th畛 i畛m trong hm create c畛a PlayState v 畉t FlxG.score v畛 0 b棚n trong hm create c畛a PlayState.as
  • 14. http://fof.edu.vn 6. m thanh trong game. V畛i c叩c n畛i dung b棚n tr棚n th狸 game 達 c坦 th畛 ch董i 動畛c r畛i. Tuy v畉y 畛 tng th棚m 畛 h畉p d畉n th狸 c畉n b畛 sung th棚m 但m thanh cho game. G畉n 但m thanh vo t畛ng action 畛 tng th棚m t鱈nh sinh 畛ng cho game. T畉t c畉 c叩c tham chi畉u t畛i c叩c file sound 畛u 動畛c khai b叩o 畛 ph畉n 畉u c畛a class PlayState. S畛 d畛ng FlxG.play() 畛 ch畉y c叩c 但m thanh tr棚n trong c叩c tr動畛ng h畛p:
  • 15. http://fof.edu.vn B但y gi畛 ch炭ng ta 達 c坦 m畛t game 董n gi畉n lm t畛 Flixel engine !