2

iOS 5でブレイクアウトスタイルのゲームを作ろうとしていますが、デザインについていくつか質問があります。(これは単なる学習演習です)

私は2つのメインコントローラーを持つことを計画しています:

  • BlockBreakerViewController-パワーアップや難易度などの初期設定を設定します
  • GameViewController-ゲームの状態とそのサブビュー(ボール、パドル、ブロック)を管理します

UiViews

  • PaddleView(1つ)
  • BallView(1つ)
  • BlockView(多く)

モデル

  • ゲームプレイ-ボール、パドル、ブロック、スコアを含むゲーム状態全体を管理します

私の質問は...

  1. モデルを別々のオブジェクトに分割する必要がありますか?
  2. UiViewとモデルの関係はどうあるべきですか?

編集:一般的な質問に答えたので、これを「ボール」オブジェクトに適用するにはどうすればよいですか。

現在、drawRectを実装するBallViewがあります。ボールモデルを作りたいです。Ballモデル、BallView、およびBallViewControllerが必要ですか?これはやり過ぎのようです。GameViewControllerはBallViewControllerと通信する必要がありますか?

4

1 に答える 1

1

これらは、モデル-ビュー-コントローラースタイルでゲームを構築する方法に基づいた、あなたの質問に対する私の答えです。

(1)はい、これはゲームの最も論理的な部分であり、ゲームの中心であるため、非常にオブジェクト指向の方法でモデルを構築することをお勧めします。構造化するのが最も簡単な部分であると同時に、その構造はゲームの構築プロセスに大きな影響を与えます。モデルを構築するときに、モデルに含める必要のあるパーツを考える良い方法は、次のように考えることです。

「この同じゲームを2つのまったく異なるプラットフォームで作成する場合、たとえばiPhoneとXboxを使用すると、お互いに対戦できるはずです。2つのゲームに共通するコードは何でしょうか?」

まったく同じになるコードの部分はモデルです。

この場合、私は次のようなものを言います:GameBoard(またはボールが跳ね回っている領域の他の適切な名前)、Paddle、Ball、Blockなど。また、Level、ScoreKeeper、GameHandler(追跡するマスタークラス)ゲームのルール)、プレーヤー(物理的なプレーヤーを表すクラス)などが適切なクラスである可能性があります。

モデルは、ゲームフィールドでのボールやパドルの位置、速度など、ゲームのルールに関係するすべてのものを追跡します。

(2) UIクラスには別のタスクがあります。ゲームオブジェクトをiPhoneに転送して、ユーザーがそれらを表示、移動、および聞くことができるようにすることです。

これを構成する方法はたくさんあります。通常、オブジェクトのタイプごとにUIViewサブクラスまたはCCSprite(Cocos2D)サブクラスを用意する必要はありません。結局のところ、ほとんどの場合、それらは1つのもの、スプライトにすぎません。ただし、ゲームワールド内のオブジェクトの位置を画面上のスプライトに転送するロジックが必要です。(簡単にするために、ここでは1:1の関係が推奨されますが)

たとえば、各ゲームオブジェクトはスプライトを参照することも、すべてのスプライトなどを保持するGameSceneクラスを作成することもできます。ゲームボードとゲームを描画する1つのクラスを作成するなど、構造を分割することをお勧めします。オブジェクト、HUDを描画するためのオブジェクト、動きのあるきれいな背景を描画するためのオブジェクトなどがありますが、これには何らかのレイヤー構造が必要です。

最後に重要なことは、ゲームエンジンによって一定の時間間隔で実行される更新メソッドを備えたコントローラーがあり、この更新メソッドが最初にモデルを更新し、次にUIを描画してユーザーをトリガーすることです。対話します。これは、すべてをバインドするコントローラーです。

Cocos2dも試してみることをお勧めします。ゲームプログラミングの概念の多くを理解するのに役立ちます。あなたはCocoaTouchがより良くすることとCocos2dがより良くすることをかなり速く見つけるでしょう。

于 2012-06-26T21:57:12.043 に答える