Tuesday, October 7, 2014

Cocos2d-x: Game Sky Defense (Phần 2)


1 Chuẩn bị Resource

1.1 Hình ảnh game




Các hình ảnh trong game, chúng ta sử dụng một công cụ hỗ trợ để tạo ra Sprite như trên, đó là một trong các công cụ Texture Atlas có tên là Zwoptex. Công cụ này sẽ hỗ trợ tạo ra file ảnh dạng sheet như trên cùng với file .plist ánh xạ vị trí của từng loại sprite, giúp Cocos2d-x có thể đọc được từng ảnh.

1.2 Font bitmap


Font bitmap là loại font được tạo bằng hình ảnh, font này có thể không cần có đủ tất cả các ký tự như bảng chữ cái, nó chỉ cần “phục vụ” đủ nội dung mà game cần.

Để tạo ra font bitmap ta có thể sử dụng công cụ: GlyphDesigner

Về mặt cơ chế hoạt động thì font bitmap cũng tương tự như sprite sheet, cũng có 1 sheet của ký tự và 1 file “plist”.



info face="SFJuggernaut" size=35 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=2,2

common lineHeight=35 base=29 scaleW=128 scaleH=128 pages=1 packed=0

page id=0 file="font.png"

chars count=14

char id=37 x=2 y=2 width=52 height=34 xoffset=1 yoffset=1 xadvance=50 page=0 chnl=0 letter="%"

char id=52 x=56 y=2 width=32 height=28 xoffset=1 yoffset=4 xadvance=29 page=0 chnl=0 letter="4"

char id=55 x=90 y=2 width=32 height=28 xoffset=1 yoffset=4 xadvance=28 page=0 chnl=0 letter="7"

char id=50 x=2 y=38 width=32 height=28 xoffset=1 yoffset=4 xadvance=29 page=0 chnl=0 letter="2"

char id=54 x=36 y=38 width=32 height=28 xoffset=1 yoffset=4 xadvance=29 page=0 chnl=0 letter="6"

char id=56 x=70 y=38 width=32 height=28 xoffset=1 yoffset=4 xadvance=29 page=0 chnl=0 letter="8"

char id=57 x=2 y=68 width=32 height=28 xoffset=1 yoffset=4 xadvance=29 page=0 chnl=0 letter="9"

2 Xây dựng Game

2.1 Định nghĩa các hằng số

Ta định nghĩa các hằng số sẽ dùng trong game vào file Constant.h

typedef struct tagResource
{
    Size size;
    char directory[100];
} Resource;


static Resource tabletResourceSD    =  { Size(1024, 768),    "sd"};
static Resource tabletResourceHD    =  { Size(2048, 1536),   "hd"};

static Size designResolutionSize    = Size(1024, 768);

#define ZODER_BG                    0
#define ZODER_CITY_BACKGROUND       ZODER_BG + 1
#define ZODER_CLOUD                 ZODER_CITY_BACKGROUND + 1
#define ZODER_METEOR                ZODER_CLOUD + 1
#define ZODER_CITY_FOREGROUND       ZODER_METEOR + 1
#define ZODER_BOMB                  ZODER_CITY_FOREGROUND + 1
#define ZODER_TEXT                  ZODER_BOMB + 1

#define TAG_SPARKLE                 1001
#define TAG_HALO                    TAG_SPARKLE + 1
#define TAG_METEOR                  TAG_HALO + 1
#define TAG_HEALTH                  TAG_METEOR + 1

// android effect only support ogg
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
    #define MUSIC_BG            "sound/music.mp3"
    #define SFX_BOMB_FAIL        "sound/bombFail.mp3"
    #define SFX_BOMB_RELEASE    "sound/bombRelease.mp3"
    #define SFX_BOMB            "sound/bomb.mp3"
    #define SFX_HEALTH          "sound/health.mp3"
    #define SFX_FIRETRUCK       "sound/fireTruck.mp3"
#else
    #define MUSIC_BG            "music.mp3"
    #define SFX_BOMB_FAIL        "bombFail.mp3"
    #define SFX_BOMB_RELEASE    "bombRelease.mp3"
    #define SFX_BOMB            "bomb.mp3"
    #define SFX_HEALTH          "health.mp3"
    #define SFX_FIRETRUCK       "fireTruck.mp3"
#endif


Về phần play sound, chúng ta sẽ sử dụng lại mã nguồn tương tự như game Air Hockey, lớp AudioUtils.

No comments:

Post a Comment