我在努力使我的代碼更加面向對象。C++:事件序列不是很面向對象
我有一個小程序希望完成2個非常簡單的狀態:輸入狀態和結果狀態。
輸入狀態似乎很容易解決,因爲它雖然是圖形化的,卻是「自我更新」。用戶放棄精靈並將精靈移除到屏幕上以產生輸入。
結果狀態令人討厭,因爲我爲它製作了一些非常難看的代碼,這並不是面向對象的。
這種狀態是需要做的事情按順序和我正在努力找到如何完成對象的例子。它基本上是一些具有相同對象的動畫:這裏是一些僞代碼。
Static int objectx = 120, object y = 120;
Static int state=0
switch(state)
{
Case 0:
//....move object right
//....once object is far enough right
state = 1;
Case 1:
//....move object down
//....once object is far enough down
state = 2;
...etc
所以我猜它需要移動到某種狀態引擎,但我很努力地看到如何使用狀態完成順序事件。這些狀態總是相同的,所以可以進行硬編碼,它們不會根據給定的輸入而改變。
任何幫助將最感激地收到。
UPDATE
也許我們可以想想這第二個狀態作爲一個2D遊戲切場景。我們希望一個角色走到屏幕上,說點什麼,然後走開。
所以我現在做的方式是通過switch語句管理這部分程序狀態。每次我們進入程序的「結果」部分時都會調用這個函數,我們使用switch語句來更新我們精靈的位置。一旦我們到達第一組運動的末尾,我們就轉到下一個開關語句,並繼續這樣做直到它完成。它工程但我希望能使用「遊戲狀態」類,它可以取得圖形和聲音的所有權,並適當地移動東西。
「我正在努力使我的代碼更加面向對象。」 - 在1995年,在E3宣佈這個名爲「Java」的新事物之後,每個人都是這樣。 「超過18個gazillion不同的整數,你永遠無法探索它們,每個班都不同,以光速執行你的代碼。」 –
你需要重構你的代碼,而不是隻是跳到「面向對象的編程訓練」,直到它被重構。除非我們看到你沒有發佈的功能中常見的東西,否則這就是所有可以說的。 – PaulMcKenzie