2

我正在尝试在 iOS 5 中制作一款突破风格的游戏,并且对设计有一些疑问。(这只是一个学习练习)

我计划有2个主要控制器:

  • BlockBreakerViewController - 设置初始设置,例如加电和难度
  • GameViewController - 管理游戏状态及其子视图(球、桨、块)

用户界面视图

  • PaddleView(一)
  • 球景(一)
  • 块视图(许多)

楷模

  • GamePlay - 管理整个游戏状态,包括球、桨、块和得分

我的问题是...

  1. 我应该将模型分解为单独的对象吗?
  2. UiViews和models之间应该有什么关系?

编辑:现在我已经回答了一般问题,如何将其应用于“球”对象。

现在我有一个实现drawRect的BallView。我想创建一个 Ball 模型。我需要 Ball 模型、BallView 和 BallViewController 吗?这似乎有点矫枉过正。GameViewController 应该与 BallViewController 对话吗?

4

1 回答 1

1

这些是我根据我喜欢以模型-视图-控制器风格构建游戏的方式对您的问题的回答:

(1)是的,我建议您以非常面向对象的方式构建模型,因为这是游戏中最符合逻辑的部分,也是游戏的核心。它是最容易构建的部分,同时它的结构会对构建游戏的过程产生重大影响。在构建模型以及它应该包含哪些部分时,一个很好的思考方式是这样思考:

“如果我要在两个完全不同的平台上制作同样的游戏,比如说 iPhone 和 Xbox,它们应该能够互相对抗——这两个游戏有什么共同的代码?”

完全相同的代码部分是模型

在这种情况下,我会说它是这样的:GameBoard(或其他适合球弹跳区域的名称)、Paddle、Ball、Block 等。还有 Level、ScoreKeeper、GameHandler(用于跟踪游戏规则)、玩家(代表物理玩家的类)等可能是合适的类。

该模型跟踪与游戏规则相关的所有内容,例如游戏场上的球和桨的位置、速度等。

(2)你的 UI 类还有另一个任务——将你的游戏对象传输到 iPhone 上,以便用户可以看到、移动和听到它们。

有很多方法可以构建它。通常你不需要为你拥有的每种类型的对象都有一个 UIView 子类或一个 CCSprite (Cocos2D) 子类。毕竟,大多数情况下它们只是一个东西,一个精灵。然而,必须有逻辑将游戏世界中的对象位置转移到屏幕上的精灵。(即使为了简单起见,这里建议使用 1:1 的关系)

例如,每个游戏对象都可以引用一个精灵,或者您可以拥有一个包含所有精灵等的 GameScene 类。我建议尝试将事物拆分为某种结构,例如拥有一个绘制游戏板和游戏的类对象,另一个用于绘制 HUD,第三个用于绘制带有一些运动的漂亮背景等,但是这需要您具有某种层结构。

最后一件重要的事情是你有一个控制器,它有一个游戏引擎定期运行的更新方法,这个更新方法首先触发模型更新,然后触发 UI 绘制,以及用户进行互动。这是将所有内容绑定在一起的控制器。

我建议你也试试 Cocos2d。它可以帮助您掌握游戏编程中的许多概念。你会很快发现 Cocoa Touch 在哪些方面做得更好,而 Cocos2d 在哪些方面做得更好。

于 2012-06-26T21:57:12.043 回答