Maze」というゲームの企画/仕様の概略を説明した。今回からはその仕様をどのように実装しているかを解説していく。Maze」にはゲームとして色々な画面があるのだが、本連載ではメインのゲーム部分に絞って解説していく。Maze」で実装しているそのままのコードを掲載しているわけではないということを最初にお断りしておく。必要な部分のみをピックアップして解説していきたいと思う。Maze」を作成している。このクラスでどのように「ゲーム盤」と「駒」の移動を制御しているかを説明する。クラス名の下の()内がそのスーパークラスだ。矢印はそれそれのオブジェクトの保持関係を表している。図1:ボードゲームクラス構成(クリックで拡大)(1)GameBoardView(UIView)GameBoardViewはタップイベントを受け取り、背景画面を表示するためのUIViewのサブクラスだ。ゲームで表示されるビューは全てGameBoardViewの上にサブビューとして配置される。盤面は複数の「タイル」として存在しその「タイル」を配列として保持して管理している。(2)GameBoardTile(NSObject)GameBoardTileはタイル1つを管理するNSObjectのサブクラスだ。GameBoardViewが配列で持っているタイルはこのクラスだ。タイルにはそのタイルの状態やタイプ、GameBoardView上での座標位置が記録されている。タイルにはゲームの「駒」が1つ置かれることが想定されている。(UIView)GameObjectViewは「駒」を表示するためのUIViewのサブクラスだ。GameBoardTileが管理する「駒」はこのクラスになる。(4)GameControllerGameControllerはゲームそのものを管理するためのクラスだ。全てのボードゲームクラスを直接的、間接的に保持し参照することができるようになっている。ゲームのルールなどゲームに関わる全てを制御する。スーパークラスは特になんでもよい(通常はNSObjectにしておく)。(1)から(3)までのクラスが行うことはあくまでも「ゲーム盤」の上の「駒」を管理して動かすことだけだ、駒を動かすルールはゲームによって異なるのでそれをコントローラークラスが制御する事になる。GameBoardViewやGameObjectViewのデリゲートとなり、デリゲートメソッドを実装することでこれらを行う。iOSアプリの開発を主な生業とする。20年ほど前から家庭用ゲーム開発に携わりファミコンからDS、PSP、Wiiまで幅広く開発。Xアプリケーションを開発「DotShotX」「GIFQuickMaker」などを公開。Maze」などを開発。ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。誠にありがとうございます。下記日程にて、メンテナンスを行います。ご理解いただけますよう、お願い申し上げます。状況により前後する場合がございます。※上記以外の会員機能(サイトへのログインなど)はご利用いただけます。VeloCloudが選ばれる理由SD-WANとはなにか。Linuxエンジニア育成への思いF5とNGINXの組み合わせで、サービス公開をよりセキュアに。ITがお届けするポッドキャストです。