[英]Can't seem to pass class variables through functions
我對編碼比較陌生,想嘗試一個更長的項目 - 基於文本的 RPG 游戲 - 我在類和對象上摸不着頭腦,有人能指出我更好的方向嗎?
>> Error: enemy has no attribute 'attack'
class Character(object):
def __init__(self, name):
self.name = name
self.maxHealth = health
self.health = self.maxHealth
self.attack = attack
self.AC = AC
self.armour = armour
self.strength = strength
self.equipped_weapon = equipped_weapon
self.xp = xp
class player(Character):
def __init__(self, name):
self.name = "KD"
self.maxHealth = 100
self.health = self.maxHealth
self.attack = 15
self.AC = 15
self.armour = 0
self.strength = 15
self.equipped_weapon = "Pistol"
self.xp = 0
class enemy(Character):
def __init__(self, name):
self.name = "X"
self.maxHealth = 60
self.health = self.maxHealth
self.attack = 8
self.AC = 8
self.armour = 0
self.strength = 5
self.xp = 25
enemyIG = enemy
playerIG = player
def player_combat(player, enemy):
in_combat = 1
while in_combat == 1 and player.health > 0:
player_ac_check = (random.randint(0, player.attack + 1))
enemy_ac_check = (random.randint(0, enemy.attack + 1))...
player_combat(playerIG, enemyIG)
您還沒有初始化對象,只是傳遞了對類的引用。 你必須像這樣實例化:
enemyIG = enemy(name="Bad Guy")
playerIG = player(name="Good Guy")
未初始化的 class 沒有屬性,除非它們在__init__
之外定義
您需要實例化到 class,而不是分配它。
改變這個:
enemyIG = enemy
playerIG = player
對此:
enemyIG = enemy(name = 'enemy1')
playerIG = player(name = 'player1')
這仍然會以無限循環結束,您需要一些邏輯來實現有意義的結束,可能會降低玩家的健康狀況。
while in_combat == 1 and player.health > 0:
player_ac_check = (random.randint(0, player.attack + 1))
enemy_ac_check = (random.randint(0, enemy.attack + 1))
player.health -= 10 # once the health goes below 0, it would end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.