連載 :
実践!iOSで作るゲームアプリゲームのロジック作成
2011年5月13日(金)

●GameControllerの拡張
次にGameControllerクラスの更新だ。interfaceにオオカミ用のGamePieceViewのインスタンスを追加する。
@interface GameController : NSObject {
GameBoardView *gameView;
GamePieceView *pieceView; //うさぎ
GamePieceView *enemyView; //オオカミ 追加
BOOL isPieceMoveing;
}
@property (nonatomic, retain) GameBoardView *gameView;
- (id) initWithBaseView:(UIView*)baseview;
@end
実装部の初期化メソッドにてうさぎと同じようにオオカミのビューを生成して配置する。オオカミの画像はwlof00_000.png 〜 wlof00_011.png のファイルをあらかじめプロジェクトに追加しておく。画像は前回に説明した移動パターン計12枚だ。
|
|
| 図2:オオカミの画像 |
- (id) initWithBaseView:(UIView*)baseview {
self = [super init];
if (self != nil) {
~ 略 ~
//オオカミ
NSMutableArray* array = [NSMutableArray array];
int i;
for(i=0; i < 12; i++){
NSString* name = [NSString stringWithFormat:@"wlof00_%03d.png", i];
UIImage* image = [UIImage imageNamed:name];
[array addObject:image];
}
enemyView = [[GamePieceView alloc] initWithFrame:
CGRectMake(0, 0, 48, 48)
Images:array
Delegate:self];
enemyView.type = PIECETYPE_WLOF;
//配置
[gameView addSubview:enemyView];
GameBoardTile* tile = [self.gameView tileAtIndex:22];
tile.piece = enemyView;
enemyView.tile = tile;
enemyView.center = [tile center];
//タイマースタート
[enemyView timerStart];
~ 略 ~
}
return self;
}
そしてデリゲートメソッドをGameControllerで以下の様に実装する。やっているのはうさぎが現在表示されているGameBoardTileを返しているだけだ。
// うさぎキャラの配置されているGameBoardTileを返す
-(GameBoardTile*)gamePieceTargetMovTile:(GamePieceView*)piece {
GameBoardTile* tile = [pieceView tile];
return tile;
}
マップをタップしたときに、その位置のGameBoardTileをうさぎに対して移動先として設定するのと同じように、オオカミの場合はタイマーで常にうさぎのいるGameBoardTileを移動先として更新されるようにしておくわけだ。
「ゲームのロジック作成」サンプルプログラム
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。


