Wenn ich eine Klasse, die Elemente für einen textbasierten RPG, wie so erzeugt - bedenken Sie dies eine vereinfachte Version des Codes verwende ich:Wie verwendet man die Klasse, die durch eine Funktion zurückgegeben wird?
from random import choice, randint
class Weapon(object):
def __init__(self, name, value, damage):
self.name = name
self.value = value
self.damage = damage
class CreateWeapon(object):
def __init__(self):
self.prefix = ['rusty', 'polished', 'blessed']
self.weaponType = ['long sword', 'halberd', 'axe']
def generate(self):
weaponName = choice(self.prefix) + ' ' + choice(self.weaponType)
print weaponName
if weaponName[0] == 'r':
weaponDamage = randint(5, 20)
else:
weaponDamage = randint(20, 40)
weaponValue = randint(1, weaponDamage * 3)
return Weapon(weaponName, weaponValue, weaponDamage)
Meine Frage Wesen: Wie kann ich die manipulieren Waffenobjekt, das ich über die Methode generate()
der CreateWeapon-Klasse erstelle? Zum Beispiel, wenn ich eine Spielerklasse mit einem Inventarattribut habe:
class Player(object):
def __init__(self):
self.inventory = {'weapons': []}
def addWeaponDrop(self):
createweapon = CreateWeapon()
createweapon.generate()
print 'What do?'
"""self.inventory['weapons'].append()"""
player = Player()
... und ich rufe die Spieler Methode addWeaponDrop()
eine randomisierte Waffe zu schaffen, wie füge ich diese Waffe Objekt, das Inventar des Spielers? Danke für jede Hilfe.
direkt Im Allgemeinen schlägt eine Klasse ein Verb für einen Namen zu geben, dass Sie die falschen Design Wahl machen. Wie unten vorgeschlagen, und im wahrscheinlichen Fall, dass Sie keine komplexe 'WeaponFactory' benötigen, könnten Sie die Logik als alternativen Konstruktor in eine Klassenmethode verschieben. – jonrsharpe