In meinem Textgame soll der spieler verschiedene attacken auswählen können, diese sind mit einer ID und Name in einer Klasse/Instanz des Spielers gespeichert. Es existieren gleichnamige Funktionen zu den attacken welche ich durch eingabe des Users ausführen möchte.
Klasse des Spielers:
Code: Alles auswählen
class character():
def __init__(self, name, npc):
#character properties
self.npc = npc
self.name = name
self.level = 1
#character status values
self.strengh = 10
self.vitality = 100
self.defense = 5
self.dextery = 15
self.combat_experience = 100
#abilitys
self.attacks = {1: "Kick", 2: "Punch"}
#base damage
self.base_damage = int(self.strengh + (self.dextery / 3) +
(self.combat_experience / 10))
Code: Alles auswählen
class Skills():
def __init__(self, character_instance):
self.chara = character_instance
def Punch(self):
self.punch_dmg = int(self.chara.base_damage + 10)
return self.punch_dmg
def Kick(self):
self.kick_dmg = int(self.chara.base_damage + 5)
return self.kick_dmg
Code: Alles auswählen
def attack(player):
# argument "player" is the character instance
atk_input = None
if player.npc is True: # check if "player" is a npc
atk_input = random.randint(1, 2)
elif player.npc is False: # check if "player" is a player
print("-----------")
for attack_id, attack_name in player.attacks.items():
print(attack_id, attack_name)
atk_input = int(input(prompt))
attack = player.attacks[atk_input] # name of the attack
Code: Alles auswählen
1 Kick
2 Punch
Ich möchte es einfach variabel halten und ewige if, elif,elif,elif vermeiden.
Hab bereits mit eval() versucht das player.attack irgendwie umzuwandeln aber ohne Erfolg.
Wäre um anregungen und Tipps dankbar.
Gruss, Kev