ゲームの実装を行う

ゲームのためのデータ構造第1回で「Rabbit Maze」というゲームの企画/仕様の概略を説明した。今回からはその仕様をどのように実装しているかを解説していく。「Rabbit Maze」にはゲームとして色々な画面があるのだが、本連載ではメインのゲーム部分に絞って解説していく。必要な場合はサンプルコ

北村 真二

2011年4月18日 20:00

ゲームのためのデータ構造

第1回で「Rabbit Maze」というゲームの企画/仕様の概略を説明した。今回からはその仕様をどのように実装しているかを解説していく。「Rabbit Maze」にはゲームとして色々な画面があるのだが、本連載ではメインのゲーム部分に絞って解説していく。必要な場合はサンプルコードを交えながら解説していくが、「Rabbit Maze」で実装しているそのままのコードを掲載しているわけではないということを最初にお断りしておく。必要な部分のみをピックアップして解説していきたいと思う。

第1回でも述べたように、元々はボードゲーム(将棋盤と駒の動き)を作るためにボードゲームのためのクラスを作成しており、その「タイル上で駒を移動させる」という処理を元に「Rabbit Maze」を作成している。まずはこのクラスでどのように「ゲーム盤」と「駒」の移動を制御しているかを説明する。クラス名の下の()内がそのスーパークラスだ。矢印はそれそれのオブジェクトの保持関係を表している。

図1:ボードゲームクラス構成(クリックで拡大)
(1)GameBoardView(UIView)
GameBoardViewはタップイベントを受け取り、背景画面を表示するためのUIViewのサブクラスだ。ゲームで表示されるビューは全てGameBoardViewの上にサブビューとして配置される。盤面は複数の「タイル」として存在しその「タイル」を配列として保持して管理している。
(2)GameBoardTile(NSObject)
GameBoardTileはタイル1つを管理するNSObjectのサブクラスだ。GameBoardViewが配列で持っているタイルはこのクラスだ。タイルにはそのタイルの状態やタイプ、GameBoardView上での座標位置が記録されている。またタイルにはゲームの「駒」が1つ置かれることが想定されている。
(3)GameObjectView (UIView)
GameObjectViewは「駒」を表示するためのUIViewのサブクラスだ。GameBoardTileが管理する「駒」はこのクラスになる。
(4)GameController
GameControllerはゲームそのものを管理するためのクラスだ。全てのボードゲームクラスを直接的、間接的に保持し参照することができるようになっている。ゲームのルールなどゲームに関わる全てを制御する。スーパークラスは特になんでもよい(通常はNSObjectにしておく)。

(1)から(3)までのクラスが行うことはあくまでも「ゲーム盤」の上の「駒」を管理して動かすことだけだ、駒を動かすルールはゲームによって異なるのでそれをコントローラークラスが制御する事になる。GameBoardViewやGameObjectViewのデリゲートとなり、デリゲートメソッドを実装することでこれらを行う。

人気記事トップ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