2012-06-26 45 views
2

我正在嘗試在iOS 5中製作突圍風格的遊戲,並且有幾個關於設計的問題。 (這僅僅是一個學習的過程)iOS 5 iPhone突圍風格應用程序設計

我計劃有2個主控制器:

  • BlockBreakerViewController - 設置初始設置,如電源UPS和困難
  • GameViewController - 管理遊戲狀態和其子視圖(球,棒,塊)

UiViews

  • PaddleView(之一)
  • BallView(之一)
  • BlockView用來(許多)

模型

  • 遊戲 - 管理整個遊戲狀態包括球,槳,塊,和得分

我的問題是...

  1. 我應該把模型分解成單獨的對象嗎?
  2. UiViews和模型之間應該有什麼關係?

編輯:現在我已經回答了一般問題,我該如何將它應用到「球」對象。

現在我有一個實現drawRect的BallView。我想創建一個Ball模型。我需要一個Ball模型,BallView和BallViewController嗎?這似乎是矯枉過正。 GameViewController應該與BallViewController對話嗎?

+0

將模型和視圖集成到遊戲的同一對象上是很常見的,例如Cocos2D sprite。也許你可以有一個包含所有塊的Stage對象。如果我沒有記錯的話,有些塊一次會給你多個球...... –

+0

我認爲每個遊戲對象都應該是一個獨立的對象。面向對象和遊戲邏輯混合良好。 –

+0

請參閱編輯,我已更新問題 –

回答

1

這是我的問題的答案基於我喜歡結構模型 - 視圖 - 控制器風格的遊戲方式:

(1)是的,我會建議你建立你的模型在非常面向對象的方式,因爲這是遊戲中最邏輯的部分,也是遊戲的核心。這是結構最簡單的部分,同時它的結構對構建遊戲的過程有很大的影響。在構建模型時應該考慮的一個好方法就是思考如下:

「如果我要在兩個完全不同的平臺上製作同一款遊戲,可以說iPhone和Xbox,以及他們應該能夠互相對抗 - 兩場比賽有什麼共同點?「

將完全相同的代碼部分是型號

在這種情況下,我會說它是這樣的:GameBoard(或其他適合球區域彈跳的區域名稱),Paddle,Ball,Block等。還有Level,ScoreKeeper,GameHandler跟蹤遊戲規則),玩家(代表一個物理玩家的類)等等,可能是合適的類別。

該模型會跟蹤與遊戲規則有關的所有事情,例如遊戲領域中的球和槳的位置,速度等。

(2)您的用戶界面類有另一項任務 - 將您的遊戲對象轉移到iPhone,以便用戶可以看到,移動和聽到它們。

有很多方法來構造這個。通常,對於每種類型的對象,您都不需要具有UIView子類或CCSprite(Cocos2D)子類。畢竟,他們大多隻是一件事,一個精靈。然而,必須有邏輯將遊戲世界中的物體位置轉移到屏幕上的精靈。 (即使爲了簡單起見,建議使用1:1關係)

例如,每個遊戲對象都可以引用一個精靈,或者您可以擁有一個包含所有精靈等的GameScene類。我建議嘗試分割這些東西最多有一些結構,比如有一個類可以繪製遊戲板和遊戲對象,另一個繪製平視顯示器,第三個繪製漂亮的背景,並且有一些運動等等,但是這需要你有一些一種層結構。

最後一件重要的事情是,您擁有一個控制器,它具有一個由遊戲引擎定期運行的更新方法,並且此更新方法首先觸發模型進行更新,然後觸發要繪製的UI,如以及用戶進行交互。這是將所有東西結合在一起的控制器。

我建議你也試用Cocos2d。它可以幫助你掌握遊戲編程中的許多概念。你會發現Cocoa Touch做得更好,Cocos2d做得更好。

+0

非常感謝! –