Category Archives: Thiết kế

Word Play Healthy Food

Một game nhỏ giúp bạn nhớ những từ ngữ tiếng Anh của những loại rau quả tốt cho sức khoẻ.

Với hơn 65 loại trái cây và rau quả, kiến thức về từ vựng tiếng Anh của bạn lại tăng thêm nữa.

Thêm vào khả năng phát âm các từ vựng của game sẽ giúp bạn gắn kết giữa viết, hình ảnh và âm thanh.

Game không chỉ nhấn vào chữ cái mà là cầm và đưa vào ô chính xác giúp bạn hình dung ra từ ngữ một cách dễ dàng hơn.

Link: Download

Advertisements

Bạn nên làm gì trên shutterstock

Link to refer:

http://submit.shutterstock.com/?ref=2433512

Khi giới thiệu về Shutterstock trên blog, rất nhiều người đã hỏi mình là nên vẽ về những chủ đề gì?

Thực ra, bạn phải hiểu là thế giới là nơi rất rộng lớn. Thứ bạn vẽ sẽ phục vụ được cho một số đối tượng nào đó. Bạn không nên giới hạn mình vào bất cứ thứ gì cụ thể, bạn thích thì bạn vẽ. Có những người thích vẽ nhà cửa, lại có người thích vẽ nhân vật. Thế sao bạn phải làm theo người khác mà không tự mình suy nghĩ ra chủ đề của bản thân?

* Nếu bạn vẫn muốn một chủ đề hợp lý thì đây nên là chủ đề của bạn:

– Mình làm game nên những thiết kế thuộc về game mình rất cần và những lập trình game đơn lẻ (indie) như mình cũng sẽ như thế.

I. Tiêu đề game:

1. Tiêu đề:

a. Tạo một tiêu đề ví dụ:

– Tiêu đề của game cần phải nổi bật giữa hình nền trên menu. Ngoài ra nó còn có thể được sử dụng để quảng cáo, ghi lại dấu ấn dành cho game. Bạn có thể tách nó ra riêng lẻ để lập trình viên tiện sử dụng.

– Những tiêu đề hay dòng chữ cách điệu rất dễ được những người thiết kế lấy về để làm game và các tác phẩm khác. Đây là thứ dễ làm nhưng khó khăn về mặt ý tưởng.

stock-vector-a-red-background-with-stripes-star-and-green-text-for-christmas-219818977

b. Tạo sẵn bảng chữ cái:

– Ngoài ra bạn có thể liệt kê 24 chữ cái tiếng Anh với phong cách riêng thì lập trình viên có thể sử dụng một cách dễ dàng.

stock-vector-original-golden-alphabet-set-of-luxury-metallic-letters-for-your-text-designs-or-logos-vector-font-134505191

Tip: Nên có thêm ghi chú về font sử dụng trong hình để lập trình viên biết mà sử dụng lại vì hình vector trên Shutterstock bắt buộc phải outline nên rất khó để làm lại nếu không biết font.

2. Phông nền mở đầu:

Đây là hình nền mở đầu vào trong game, thông thường sẽ bao gồm cả tiêu đề game.

stock-vector-interface-game-design-resource-bar-and-resource-icon-for-game-vector-illustration-part-193725569

Tip: Không tô màu theo kiểu trên mặt vì lập trình viên sẽ tốn rất nhiều thời gian để tạo lại nền.

II. Những thông báo về game:

1. Những loại thông báo thường:

Những thông báo sau luôn có trong game cho dù đó là game gì:

– Game over

– Start

– High score

stock-vector-set-of-blue-green-round-buttons-menu-elements-for-web-or-game-design-217376134

2. Cách dạng thông báo khác nhau:

Các hình dạng khác nhau để có thể làm game

stock-vector-set-of-green-glossy-buttons-beautiful-sparkling-elements-for-web-or-game-design-217373191

III. Những ý tưởng game:

– Bản thân người làm game có thể đưa ra những game theo ý kiến của mình như thế này?

Minh hoạ

– Ý tưởng của bạn được đưa ra chỉ trong hình ảnh

stock-vector-sweet-elements-for-making-your-own-cake-vector-cake-constructor-207357349

IV. Những vật dụng trong game (Item):

– Những vật dụng hỗ trơ trong game là không thể thiếu, vậy bạn hãy cung cấp cho các lập trình viên những món đồ đó để làm game hay hơn đi:

stock-vector-game-resources-icons-149103440

 

=> Việc liệt kê đầy đủ các biểu tượng trên nền đen đem lại cơ hội bán hàng cực cao dành cho người bán như chúng ta. Đây là một trong những bộ vector về game bán rất chạy và gần như ai cũng muốn mua ngay khi nhìn vào.

 

V. Những nhân vật trong game:

Nhân vật chính là xương sống của game, những nhân vật dễ thương vui nhộn có thể được bán rất nhiều.

stock-vector-cute-simple-characters-and-elements-for-game-on-the-blue-game-board-216890770

Những nhân vật này, các lập trình viên nhìn vào là muốn mua ngay.

Tập trung vào các chủ đề khác nhau sẽ đem lại các lợi ích cao hơn

1. Các loài cá:

– Cá và đại dương là một trong các chủ đề rất tốt dành cho các lập trình viên. Đơn giản vì với những game thuộc về biển, các lập trình viên có thêm chiều dọc để làm game. Việc một nhân vật đi theo chiều dọc của game không hề cần thêm một thứ gì hỗ trợ khác với trên bờ, khi nhân vật đi lên thì chắc chắn phải đi xuống.

Đây là một trong những bộ hình yêu thích của mình

stock-vector-cute-cartoon-sea-creatures-all-in-different-layers-for-easy-editing-32547703

=> Những động vật biển trong hình thật sự thân thiện phù hợp với mọi lứa tuổi và hợp với nhau.

2. Các loại thú:

Ngoài biển, thì môi trường rừng cũng là một trong những môi trường dễ làm game. Bất cứ người nào cũng có thể biết được những loại thú.

stock-vector-vector-illustration-of-animals-set-cartoon-201895072

3. Các loại chim:

Những con chim thế này:

stock-vector-set-of-cartoon-funny-birds-215515183

4. Nhân vật dễ thương:

Các nhân vật dễ thương thường được sử dụng trong các game dành cho mọi lứa tuổi.stock-vector-little-cute-cartoon-fluffy-monster-in-different-colors-207977251

5. Các đồ vật:

– Các đồ vật hằng ngày cũng là một trong những nguyên liệu rất tốt của những nhà thiết kế game. Những game tìm đồ vật hay làm liên quan đến đời sống hằng ngày làm cho game được chơi nhiều hơn và cần ít hướng dẫn cũng như người chơi sẽ dễ dàng nhận ra cách chơi hơn.

stock-vector-cartoon-collection-of-normal-tool-in-home-color-219857065

VI. Những hình nền trong game:

– Những phông nền phía sau (background) làm cho game đẹp hơn rất nhiều

VII. Những nút thuộc về game:

1. Những nút cơ bản của game:

Những nút cơ bản mà game nào cũng có:

stock-vector-big-set-of-cartoon-wooden-vector-buttons-for-game-ui-214972030

2. Các nút đặc biệt:

VIII. Những thành phần đặc biệt chỉ game mới có:

1. Thanh tính thời gian (Progress bar)

Tip: Những hình ảnh được sử dụng trong game thường đơn giản nên dễ vẽ. Tuy nhiên, những nhà thiết kế như các bạn cần phải tách ra từng layer khác nhau để tô màu , đừng tạo shape từ Illustrator vì mình không sử dụng được thể loại đó. Mình cần tách nền và vật dụng ra khỏi nhau thì mới lập trình được.

– Những item và các nhân vật trong game cần có ít nhất 6 để bảo đảm việc mở rộng game. Bạn vẽ cho mình 2 cái rồi sau đó game hay thì mình làm tiếp thế nào?

– Hãy tạo thành 1 bộ với đầy đủ các đối tượng như trên thì khi mua mình sẽ mua toàn bộ nó 1 lúc. Thiếu những thứ như trên làm game sẽ rất khó khăn mà muốn kiếm cái khác để hợp cũng rất khó. Vì vậy, một khi đã hướng tới game, mình cần tất cả những thứ trên. Hãy tạo thành 1 bộ và với mỗi phong cách các bạn sẽ có được nhiều tấm cùng lúc.

stock-vector-game-resource-bar-set-149103266

Khái niệm chung về Sprite Kit

Sprite Kit là engine riêng của Apple viết dành cho việc làm game 2D trong hệ sinh thái Apple (bao gồm IOS cả Ipad lẫn Iphone và tren môi trường Mac OS). Sprite Kit hiện nay sử dụng engine vật lý Chipmunk2D tuy nhiên đó là việc chạy ngầm. 

 

Sử dụng Sprite Kit có rất nhiều điểm lợi:

– Không chỉ có thể đơn giản hoá việc viết game 2D trên IOS mà còn có thể sử dụng engine vật lý làm game trở nên hấp dẫn hơn nhiều.

– Không bị giới hạn ở IOS mà còn có thể phát triển game cho máy tính của Apple trên Mac OS.

– Nói là giới hạn trên hệ sinh thái của Apple nhưng với các plugin hiện nay bạn hoàn toàn có thể port qua Android.

– Nhận được sự hỗ trợ mạnh mẽ của Apple từ việc nâng cấp đến sửa lỗi và quan trọng nhất là nó hoàn toàn tương thích với thư viện và môi trường của IOS và Mac OS.

– Miễn phí hoàn toàn.

– Không cần phải cài thêm bất cứ thứ gì để phát triển trên Xcode và đưa game lên Appstore cực dễ.

 

Trong Xcode chỉ cần New Project và chọn Sprite Kit là có thể bắt đầu chương trình:

 

Screen Shot 2014-09-01 at 10.39.22 PM

Hướng dẫn làm game đuổi hình bắt chữ

Game “Đuổi hình bắt chữ” đã trở thành một trào lưu trên các chợ ứng dụng vì cách chơi đơn giản, dễ dàng mà ai cũng chơi được. Nó không những giúp cho người chơi có thể nhớ thêm các từ ngữ tiếng Việt mà còn đem lại những tiếng cười sảng khoái vì đã giải được một câu đố khó, một chữ khó trong game.

Mình đã viết gong một game giống thế và hôm nay sẽ chia sẽ cách làm để các bạn làm quen với việc làm game:

Download game chính

Hôm nay chúng ta sẽ viết một game đuổi hình bắt chữ với Xcode và engine Sprite Kit của Apple. Nói chung thì dùng engine viết game nên cũng không khó lắm.

1. Đầu tiên chúng ta cần hiểu rõ game cần gì?

– Phần hiển thị của game bao gồm:

+ Hình nền của game tạo cảm giác thân thiện cho người dùng

+ 1 hình ảnh hiển thị để người chơi nhìn vào và đoán chữ

+ Dãy đáp án dành cho game

+ Dãy chữ gợi ý để người chơi nhập vào khi tìm kiếm đáp án

– Phần ngầm của game chính là đáp án của game được chúng ta lưu trữ lại trong bộ nhớ để kiểm tra đáp án của game xem có chính xác không.

* Phần quan trọng không kém là những file hình ảnh đi kèm để làm game. Mình kèm theo cho các bạn để quá trình học tập nhanh chóng hơn:

https://drive.google.com/folderview?id=0B38uO5_VDZL4NFV4MDlpLTM4WG8&usp=sharing

* Ngoài ra đây là game đã hoàn chỉnh của mình trên AppStore, có gì các bạn download ủng hộ nhé ^.^

Download game Đuổi hình bắt chữ trên AppStore

2. Sau khi đã biết tất cả những thứ cần thiết dành cho game thì chúng ta có thể bắt đầu rồi:

– Đầu tiên là thêm hình nền vào trong chương trình

SKSpriteNode * lkBackground = [SKSpriteNode spriteNodeWithImageNamed:@”Background”];

lkBackground.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));

[self addChild:lkBackground];

– Thế là xong hình nền, giờ ta thêm vào hình gợi ý ở phía trên hình nền nữa:

* Giờ là lúc chuẩn bị chỗ để lưu câu trả lời dành cho game

Trong file MyScene.h ta để một biến NSString để lưu giữ câu trả lời:

@interface LKMyScene : SKScene

{

NSString * lkAnswer;

}

@end

=> Biến NSString để lưu trữ câu trả lời

3. Loading game:

Bây giờ bắt đầu nạp câu hỏi vào trong game với hàm loadGame

-(void)LoadGame{

SKSpriteNode * lkCurrentPicture = [SKSpriteNode spriteNodeWithImageNamed:@”HinhGoiY”];

lkCurrentPicture.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame) + 220);

[self addChild:lkCurrentPicture];

 

lkAnswer = @”MaNao”;

}

=> Thế là ta có hình ảnh gợi ý và câu trả lời đã được nạp vào game

* Đây là tác phẩm cho tới giờ này: bao gồm hình nền và hình gợi ý

Khởi đầu game

Game đã có hình nền và hình gợi ý

4. Sinh ra thêm các chữ không có trong câu trả lời để làm cho game trở nên khó khăn hơn:

a. Hàm sinh chữ cái ngẫu nhiên:

– Để làm được điều này, ta cần có thêm 1 hàm sinh ra chữ cái ngẫu nhiên và đây chính là nó:

-(NSString*)lkGenRandomChar{

NSMutableString* string = [NSMutableString stringWithCapacity:1];

[string appendFormat:@”%C”, (unichar)(‘a’ + arc4random_uniform(25))];

return string;

}

=> Hàm này sẽ trả về một kí tự ngẫu nhiên trong bảng chữ cái

b. Ta lấy câu trả lời và tuần tự thêm các chữ cái ngẫu nhiên sao cho có đủ 12 chữ cái thì ngừng:

NSMutableString * lkQuestion = [NSMutableString stringWithString:lkAnswer];

lkHintCharArray = [[NSMutableArray alloc] init];

while (lkQuestion.length < 12) {

NSString * charNew = [self lkGenRandomChar];

[lkHintCharArray addObject:charNew];

[lkQuestion appendString:charNew];

}

=> Sử dụng một NSMutableString lưu trữ những kí tự để có thể sinh ra 12 chữ gợi ý cho game

c. Lúc này ta có 12 chữ cái vừa có câu trả lời vừa có những chữ cái thừa. Tuy nhiên câu trả lời lại nằm ngay đầu của chuỗi rất dễ đoán ra nên ta thay đổi vị trí nó một cách ngẫu nhiên bằng những dòng lệnh sau:

for (int i = 0; i < lkQuestion.length; i++) {

int randomNum = arc4random() % lkQuestion.length;

 

NSString * lkCharAtToPost = [lkQuestion substringWithRange:NSMakeRange(randomNum, 1)];

NSString * lkChar = [lkQuestion substringWithRange:NSMakeRange(i, 1)];

[lkQuestion replaceCharactersInRange:NSMakeRange(i, 1) withString:lkCharAtToPost];

[lkQuestion replaceCharactersInRange:NSMakeRange(randomNum, 1) withString:lkChar];

}

=> Thế là các chữ cái được trộn lẫn vào nhau và bây giờ không thể nhận ra được câu trả lời một cách dễ dàng nữa.

 

5. Sinh ra những ô chữ gơi ý trên giao diện:

– Để thể hiện các ô chữ trên giao diện chúng ta cần một đối tượng để có thể bắt hành động của người chơi.

a. Ô chữ gợi ý:

Tạo một đối tượng mới có template là SKSpriteNode và có tên là LKTileChar. Xcode sẽ sinh ra 2 file 1 header (.h) và file code (.m)

* Đây là những gì nên có trong file LKTileChar.h

#import <SpriteKit/SpriteKit.h>

@interface LKTileChar : SKSpriteNode

{

SKLabelNode * lkLabel;

}

-(instancetype) initWithCharacter:(NSString *)lkLetter;

@property NSString * lkCharacter;

@end

=> lkLabel để thể hiện chữ cái chứa trong ô còn lkCharacter là nội dung của nó.

 

* Đây là nội dung tong file LKTileChar.m:

#import “LKTileChar.h”

 

@implementation LKTileChar

-(instancetype) initWithCharacter:(NSString *)lkLetter{

LKTileChar * lkTitleChar = [LKTileChar spriteNodeWithImageNamed:@”Tile”];

lkLabel = [SKLabelNode labelNodeWithFontNamed:@”Arial-BoldItalicMT”];

lkLabel.fontSize = 39;

lkLabel.text = lkLetter;

lkLabel.verticalAlignmentMode = SKLabelVerticalAlignmentModeCenter;

lkLabel.position = CGPointMake(0,0);

 

lkTitleChar.lkCharacter = lkLetter;

[lkTitleChar addChild:lkLabel];

lkTitleChar.userInteractionEnabled = YES;

lkTitleChar.name = @”tileChar”;

return lkTitleChar;

}

@end

=> Chúng ta đã tạo ra mộ đối tượng có nền là hình ảnh của file “Tile.png” và có lkLabel để thể hiện chữ cái của nó.

(Chú ý: userInteractionEnabled cần được chuyển thành YES nếu không đối tượng sẽ không nhận được hành động của người dùng đâu, ngoài ra nó còn phải được nằm trên các đối tượng có enable = NO)

b. Thêm các ô gợi ý vào game:

– Thêm đoạn code sau đây vào phần LoadGame:

for (int j = 0; j < 2;j++) {

for (int i = 0;i < 6;i++) {

NSString* letter = [lkQuestion substringWithRange:NSMakeRange(j*6 + i, 1)];

LKTileChar * myChar = [[LKTileChar alloc] initWithCharacter:[letter uppercaseString]];

myChar.position = CGPointMake(CGRectGetMinX(self.frame) + (i + 1)*100 + 39, CGRectGetMidY(self.frame) – 280 – j*100);

[self addChild:myChar];

}

}

=> Chỉ việc cắt ra từng chữ của lkQuestion mà ta đã tạo và trộn ngẫu nhiên sau đó thể hiện trên màn hình là xong.

Bây giờ bạn đã có 12 chữ cái ngẫu nhiên nằm dưới đáy màn hình rồi đó.

* Đây là hình ảnh sau khi đã tới bước này

Hình được thêm vào các chữ cái gợi ý

Hình đã được thêm vào những chữ cái gợi ý

Hình game mỗi lần chạy đều có gợi ý khác nhau

Hình game được chạy lần 2

6. Sinh ra những ô chữ đáp án trên game:

Các ô chữ đáp án cũng cần được quản lý theo những đối tượng riêng.

Tạo File mới LKTargetSlot là một Object

a. Nội dung file LKTargerSlot.h:

#import <SpriteKit/SpriteKit.h>

@interface LKTargetSlot : SKSpriteNode

{

SKLabelNode * lkLetterNode;

}

-(instancetype)initOnScreen;

@property NSString * lkContent;

@property int lkAnswerNumber;

-(void)lkSetContent:(NSString *)lkContentX;

@end

=> Tương tự lkLetterNode sẽ thể hiện còn lkContent là nội dung mà nó được nhận tuy nhiên còn có lkAnswerNumber để có thể biết được đây là ô chữ thứ bao nhiêu để xét tuần tự.

b. Nội dung file LKTargetSlot.m:

– Chúng ta sẽ đưa file .m như sau:

#import “LKTargetSlot.h”

@implementation LKTargetSlot

-(instancetype) initOnScreen{

LKTargetSlot * targetSlot = [LKTargetSlot spriteNodeWithImageNamed:@”Slot”];

 

targetSlot->lkLetterNode = [SKLabelNode labelNodeWithFontNamed:@”Arial-BoldItalicMT”];

targetSlot->lkLetterNode.fontColor = [UIColor whiteColor];

targetSlot->lkLetterNode.text = @””;

targetSlot->lkLetterNode.verticalAlignmentMode = SKLabelVerticalAlignmentModeCenter;

 

 

targetSlot.lkContent = @””;

targetSlot.userInteractionEnabled = YES;

targetSlot.name = @”targetChar”;

return targetSlot;

}

-(void)lkSetContent:(NSString *)lkContentX

{

[lkLetterNode removeFromParent];

self.lkContent = lkContentX;

lkLetterNode.text = lkContentX;

[self addChild:lkLetterNode];

}

@end

=> Với ô chữ đáp án cũng gần giống với ô chữ gợi ý tuy nhiên khác ở chỗ, ô chữ đáp án có thể hiện hoặc không chữ cái trong game nên chúng ta có thê 1 lệnh để thay đổi chữ cái.

=> Vậy là xong phần chuẩn bị cho việc thể hiện mọi đối tượng trong game

c. Thêm vào trong game các ô chữ đáp án:

– Hàm để thêm vào:

-(void)lkCreateTargetSlot:(int)lkNumber{

int lkNumberX = 0;

if(lkNumber % 2 == 1)

{

for (int i = 0; i < lkNumber; i++) {

LKTargetSlot * myChar = [[LKTargetSlot alloc] initOnScreen];

myChar.lkAnswerNumber = lkNumberX++;

myChar.name = @”targetChar”;

myChar.position = CGPointMake(i * (78 + 20) – (lkNumber/2 * 78 + (lkNumber-1)/2*20) + self.frame.size.width/2, CGRectGetMidY(self.frame) – 80);

[self addChild:myChar];

[lkTargetArray addObject:myChar];

}

} else {

for (int i = 0; i < lkNumber; i++) {

LKTargetSlot * myChar = [[LKTargetSlot alloc] initOnScreen];

myChar.lkAnswerNumber = lkNumberX++;

myChar.name = @”targetChar”;

myChar.position = CGPointMake(i * 100 – (((lkNumber +1)/2*70) + (lkNumber)/2*20) + self.frame.size.width/2 +45, CGRectGetMidY(self.frame) – 80);

[self addChild:myChar];

[lkTargetArray addObject:myChar];

}

}

}

=> Đây là lệnh để thêm các ô đáp án vào đúng vị trí của nó. Trong LoadGame ta thêm vào dòng này là xong:

[self lkCreateTargetSlot:(int)lkAnswer.length];

=> Thế là giao diện game đã hoàn chỉnh tuy nhiên các ô chữ vẫn chưa có phản ứng gì cả. Vậy hãy qua phần tiếp theo để hoàn tất cả game nào

* Bây giờ chúng ta có:

Giao diện game giờ đã hoàn chỉnh

Giao diện game hoàn chỉnh

7. Phản ứng dành cho các ô gợi ý:

Trước hết hãy làm cho các ô gợi ý có phản ứng.

a. Vào trong LKTileChar.m thêm vào dòng sau:

– Hàm sẽ chạy khi người dùng chạm vào đối tượng riêng. Đây là cách quản lý khá hay và đơn giản của Sprite Kit. Bạn có thể truy cập ngược từ cấp con sang các cấp cao hơn 1 cách dễ dàng trong khi bình thường phải dùng đến các delegate rất phức tạp.

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

[self -> lkLabel removeFromParent];

LKMyScene * myScene = (LKMyScene *)self.scene;

[myScene lkGetTouch:self];

}

=> Đoạn mã này sẽ tự loại bỏ nó ra khỏi màn hình và sau đó truyền chính nó vào trong LKMyScene để chương trình xử lý.

b. Thêm vào file LKMyScene.h function:

-(void)lkGetTouch:(LKTileChar *)lkTileChar;

– Sau đó vào trong LKMyScene.m để hoàn tất nó:

-(void)lkGetTouch:(LKTileChar *)lkTileChar{

BOOL getChar = NO;

for (int i = 0; i < lkTargetArray.count; i++) {

LKTargetSlot * myChar = [lkTargetArray objectAtIndex:i];

if([myChar.lkContent isEqualToString:@””] && (!getChar)){

[myChar lkSetContent:lkTileChar.lkCharacter];

getChar = YES;

}

}

 

if (getChar) {

[lkSelectedArray addObject:lkTileChar];

[lkTileChar removeFromParent];

}

 

[self lkCheckAnswer];

}

=> Thay nội dung vào trong ô chữ đáp án và xem ô chữ đã được giải xong chưa nếu xong rồi thì kết thúc game.

8. Phản ứng dành cho ô đáp án:

– Nếu người chơi lỡ tay nhấn nhầm hoặc đoán không đúng thì sẽ chuyển đáp án ra.

a. Thêm vào trong LKTargetSlot.m những dòng lệnh sau:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

LKMyScene * myScene = (LKMyScene *)self.scene;

[myScene lkGetBackTileChar:self];

}

=> Gọi ngược về scene khi có chạm vào trong đáp án

b. Trong LKMyScene.h ta thêm interface:

-(void)lkGetBackTileChar:(LKTargetSlot *)lkTargetChar;

Trong file LKMyScene.m, hoàn thành nó:

-(void)lkGetBackTileChar:(LKTargetSlot *)lkTargetChar{

for (int i = 0; i < lkSelectedArray.count; i++) {

LKTileChar * lkTileChar = [lkSelectedArray objectAtIndex:i];

if ([lkTileChar.lkCharacter isEqualToString:lkTargetChar.lkContent]) {

[self addChild:lkTileChar];

[lkSelectedArray removeObject:lkTileChar];

[lkTargetChar lkSetContent:@””];

break;

}

}

}

=> Thế là xong phần phản ứng của game

9. Kiểm tra kết thúc:

Kiếm tra xem câu trả lời của người chơi đã đúng chưa nếu đúng rồi thì kết thúc trò chơi hiện câu thông báo Game đã hoàn thành.

-(BOOL)lkCheckAnswer{

NSMutableString * lkResult = [NSMutableString stringWithString:@””];

 

for (int i = 0; i < lkTargetArray.count; i++) {

LKTargetSlot * lkSlot = [lkTargetArray objectAtIndex:i];

if([lkSlot.lkContent isEqualToString:@””]){

return NO;

} else {

[lkResult appendString:lkSlot.lkContent];

}

}

 

if([[lkResult uppercaseString] isEqualToString:[lkAnswer uppercaseString]])

{

[self lkGameOver];

return YES;

} else

return NO;

}

-(void)lkGameOver{

SKLabelNode * lkGameOverLabel = [SKLabelNode labelNodeWithFontNamed:@”Arial-BoldItalicMT”];

lkGameOverLabel.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));

lkGameOverLabel.text = @”You got this string!! This game is over!!”;

[self addChild:lkGameOverLabel];

}

=> Hoàn tất game

* Hình game khi kết thúc:

Kết thúc game với thông báo

Kết thúc game

 

C. Những thứ cần thiết để phát triển game:

1. Những tài nguyên cần có:

– Mình kèm theo những hình ảnh mà mình sử dụng trong game để các bạn tiện sử dụng và làm cho nhanh.

https://drive.google.com/folderview?id=0B38uO5_VDZL4NFV4MDlpLTM4WG8&usp=sharing

=> Những file này được lưu trên google của mình nên các bạn cứ tự nhiên download về và thực hành nhé.

2. Chương trình mẫu cho những ai không làm được:

– Mình kèm theo chương trình đã được viết hoàn chỉnh để các bạn sử dụng tham khảo luôn

<Các bạn chịu khó vào blog huygamer.wordpress.com để tải nhé>

https://drive.google.com/file/d/0B38uO5_VDZL4RlRPQjBZdGtlNVE/edit?usp=sharing

3. Chương trình hoàn chỉnh trên AppStore:

– Chương trình hoàn chỉnh có quá nhiều thứ nên mình không thể hướng dẫn chi tiết như chương trình mẫu được. Tuy nhiên nếu các lập trình viên IOS Việt Nam muốn có để tham khảo thì có thể liên hệ. Mã nguồn của game này cũng không quá quý giá đến mức mình không chia sẽ được, nên thấy ai hợp thì cùng nhau chia sẽ thôi.

Đây là link để download game trên AppStore, nếu được các bạn úng hộ download cho game Việt nhé. Viết hướng dẫn này mất cả 7 h (nguyên 1 ngày chủ nhật đoá).

Download game on App Store

4. Lời nhắn:

– Đây chỉ là một game nhỏ của mình và mình muốn đưa ra cho mọi người tham khảo, việc viết một hướng dẫn như thế này rất tốn công sức vì vậy, nếu muốn đăng trên các website của các bạn thì làm ơn để lại đường link tới website của mình và để lại 1 dòng comment trên blog huygamer.wordpress.com này để mình biết cái. Mình không muốn giấu những kiến thức này nhưng cũng không muốn những người chỉ đi copy và paste để ra bài chẳng ra 1 cái gì hết chỉ toàn chữ từ trên xuống dưới lại không có bold hay quote nào cả thật là mất thẩm mỹ vô cùng.

– Vì viết quá nhiều có những khúc mình quên mất một số dòng code và vị trí nó ở đâu thì các bạn có thể để lại comment để mình chỉnh sửa lại cũng được. Mình cũng sẽ để lại source code dành cho các bạn, nếu muốn sử dụng cứ pm. Những nước khác đang phát triển game cực thịnh và sẵn sàng chia sẽ kiến thức để phát triển ngành game của họ nhanh hơn còn Việt Nam có được tí code hay kiến thức thì cố gắng giấu vì sợ mọi người biết sẽ giành chén cơm củ mình. Thế thì muôn đời Việt Nam cũng chả bao giờ phát triển nổi.

 

 

 

Tiny Sea – Wonderful Undersea World

Tiny Sea – Wonderful Undersea World

New world is opened for you. You can feed your fish and do a lot of things for fun here.

Your tiny sea will become more and more beautiful with your hand.

It is the tiny world of sea with colourful fish and great environment.

* More than 8 decorates for your tiny sea

From coral to seaweed or sea star

* Beautiful fish

* Easy to feed your fish

* See your fish swing

Touch to the screen to drop the fish food.

Game Center is enable for see what you have with all the world.

DON’T LET YOUR FISH HUNGRY. Come and make the tiny world with us!

Link to download: View in App Store

Starting Menu screen 

 

Shopping to make your tiny sea more beautiful 

 
Beautiful Sea
 

 

 

Bộ sưu tầm về cây cối

Link cho bộ sưu tầm này:

http://www.shutterstock.com/g/Huyleader/sets/3905044-tree-set?rid=2433512

Với cây cối, màu xanh đóng vai trò chủ đoạn, việc đưa các màu khác vào rất khó khăn. Khác với cái loài hoa, hoa thì muôn màu muôn sắc, càng nhiều màu càng đẹp. Đưa thêm màu vào hoa làm cho hoa thêm sặc sỡ, với cây cối thì lại khác, sự khác biệt nằm ở hình thái đa dạng của thân cây, lá. Có những loài cây mà lá đặc biệt tới nỗi chỉ cần nhìn qua là biết, có những loại lại nhờ vào hình dạng hay hoa của nó.

Như cây dừa này:

stock-vector-how-to-draw-coconut-palm-206748871 stock-vector-how-to-draw-cypress-206748898 stock-vector-how-to-draw-palm-tree-206748865 stock-vector-how-to-draw-walnut-tree-206748907

Vài bộ sưu tầm về hoa

Link để xem profile: http://shutterstock.com/g/Huyleader

Lần trước là các sinh vật biển thì kì này là những bộ sưu tầm về hoa:

stock-vector-collection-for-flower-203165782

Link to Shutterstock

Đây là bộ được vẽ đầu tiên, dĩ nhiên có các hình riêng lẽ với cách vẽ của từng hoa.

stock-vector-collection-for-flower-203165779

Link to shutterstock

Bộ hoa có màu nhạt hơn và dịu hơn dành cho những loại game khác

stock-vector-collection-for-flower-203165788

Link to Shutterstock

Link để xem profile: http://shutterstock.com/g/Huyleader