実践!iOSで作るゲームアプリ 3

駒移動のイベント伝達

駒移動のイベント伝達

「駒」はGameObjectViewとして生成される。このクラスはUIViewのサブクラスなのでGameBoardViewに addSubview: されて配置される。そしてGameControllerに保持されると同時にGameBoardViewの持つGameBoardTileにも登録される。そして以下のように移動イベント伝達が行われる。

  • (1)GameBoardViewがタッチイベントを受け付ける
  • (2)コントローラークラスにその座標を伝える
  • (3)GameBoardViewに問い合わせてタッチ位置のGameBoardTileを得る
  • (4)GameObjectViewに移動先としてそのGameBoardTileを設定する
  • (5)移動先を設定されたGameObjectViewはそのタイルに向かって移動する

図2:駒移動のイベント伝達(クリックで拡大)

まず、全体を管理するGameControllerでの移動を制御するためのメソッドが以下になる。これはGameBoardViewのデリゲートメソッドだ。pieceViewがGameObjectViewのインスタンスであり、これをGameControllerがプロパティーとして保持している。

<GameController での実装>

タップされた位置のヒットテスト

移動の開始はまず「ゲームの盤面」をタップすることから始まる。これを行うのがGameBoardViewだ。UIViewのスーパークラスであるUIResponderのタッチイベントを取得する以下のメソッドを実装し、それをデリゲートオブジェクト(GameController)に通知する。そしてGameBoardViewからタッチ位置のGameBoardTileを得る。

<GameBoardView での実装>

<GameBoardTile での実装>

この記事をシェアしてください

人気記事トップ10

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