これらは、モデル-ビュー-コントローラースタイルでゲームを構築する方法に基づいた、あなたの質問に対する私の答えです。
(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がより良くすることをかなり速く見つけるでしょう。