我正在嘗試做一個有額外功能的蛇遊戲,其中蛇可以吃不同類型的食物,一些食物會給它一段時間的特殊能力。像那樣貪吃蛇遊戲設計
用於設計差異。我正在做食物接口的食物。並且所有類型的食物都執行它。所以只使用食物的參考。我可以製作任何類型的食物。
唯一的問題是代表一個權力。 我可以代表它在船上或蛇。 蛇是最好的選擇,因爲它似乎更符合邏輯。任何人都可以告訴我我想怎麼表達它?
我正在嘗試做一個有額外功能的蛇遊戲,其中蛇可以吃不同類型的食物,一些食物會給它一段時間的特殊能力。像那樣貪吃蛇遊戲設計
用於設計差異。我正在做食物接口的食物。並且所有類型的食物都執行它。所以只使用食物的參考。我可以製作任何類型的食物。
唯一的問題是代表一個權力。 我可以代表它在船上或蛇。 蛇是最好的選擇,因爲它似乎更符合邏輯。任何人都可以告訴我我想怎麼表達它?
你可能想看看Template Pattern或Decorator Pattern。
基本思想是你的「蛇」將其操作導出到被調用的模塊樹中。因此,例如Snake.Move()實際上只是檢查是否存在一個移動修飾符(從您的「權力」提供),否則它將默認爲它自己的內部移動對象。根據您的實施方式,電源可能會取代,暫時覆蓋或級聯其效果。
你可以創建一個基準能級,每個食物都有一個基準。每種食物都可以擁有一定的力量。
對於每一種力量,您都繼承了這個基礎強力類。
當你吃了食物的時候,力量班被轉移到了蛇身上。蛇可以持有一個參考(到最後吃掉的力量),或者甚至是一系列力量(如果多個力量可以同時活動)。
是的,每條蛇更靈活。如果你想讓它成爲多人遊戲,那麼每條蛇都會擁有它的力量。
你似乎缺少的是Power->食物映射。但這真的取決於一個食物是否賦予許多權力,或者一個權力是否可以擁有不同的食物。
那麼有很多方法可以做到這一點。我能想到的最基本的是有一種靜態方法,當通過不同類型的食物時會產生不同的能力。 只要你的蛇吃東西,你叫SuperPower.onNomNom(FoodEaten)
。 例子:
class SuperPower
{
public static SuperPower omNomNom(Food f)
{
if(f==InvisibilityFruit) /*You can use switch but it depends on language*/
{
return InvisibilityPower()
}
else if
{
...
}
}
}
class InvisibilityPower extends SuperPower{...}
靈活的解決方案是創建一個類食品是這樣的:
class Food(object):
def __init__(self, icon, [...], power):
self.icon = icon
self.[...] = [...]
self.power = power
這樣,你的獨立創建的功率/價值/圖標集。 如果你有新的力量,你不需要重新編碼任何東西。
在蛇類:
def eat_food(self, food):
self.score += food.value
self.apply_power(food.power)
def apply_power(self, power):
power.apply(self)
鑑於你的問題的含糊,我不知道有什麼好答案甚至會樣子。因此,我投票結束爲「不是真正的問題」。 – 2010-01-06 17:50:11
他指的是所有諾基亞手機上的'蛇遊戲'(遊戲之前就存在,但諾基亞使它真正受歡迎並且非常有名) – Toad 2010-01-06 17:52:46
在這裏,我認爲DOS使它受歡迎而且衆所周知! :( – 2010-01-08 04:11:57