Например, я пытаюсь создать класс врага для простой игры. Каждый противник, который появляется у него, имеет тип, который влияет на его статистику, которая является полями в противникам. класс.Когда класс требует подкласс?
class Enemy:
#Base Stats for all enemies
name = "foo"
current_health = 4
max_health = 4
attack = 0
defense = 0
armor = 0
initiative = 0
initMod = 0
alive = True
Если каждый типа быть подкласса из противника как так ..
class goblin(Enemy):
name = goblin;
current_health = 8
max_health = 8
attack = 3
defense = 2
armor = 0
def attack(){
//goblin-specific attack
}
Но этот метод означает, что я должен был бы создать класс для каждого отдельного типа (что будет 80 + классов), или есть лучший способ сделать это? Это враг собирается быть рандомизированы, так что я думал о типы можно также положить в словарь который использует имена типов в качестве ключевых слов. Хотя я не совсем уверен, как это реализовать.
С этим множеством потенциальных подклассов вы, вероятно, не очень хорошо моделируете проблему. С одной стороны, это звучит так, будто вы вводите в заблуждение «is-a» с «has-a» отношениями и, возможно, с классами и экземплярами классов. Большинство перечисленных атрибутов, вероятно, будут инициализированы в конструкторе класса или подкласса ('__init __()'). Кроме того, все определения методов класса автоматически получают первый аргумент, обычно называемый 'self', который является экземпляром класса. Поэтому вам нужно будет иметь 'def attack (self):'. Кроме того, Python не использует '{' и '}' скобки таким образом. – martineau