●GameControllerの拡張

●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を移動先として更新されるようにしておくわけだ。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30