캐릭터를 선택하고 해당 캐릭터에게 무기를 부여한 다음 매우 유사한 RPG와 유사한 게임을 작성하려고합니다. 캐릭터와 무기. weapon
클래스는 Equip
이라는 최상위 클래스에 속합니다. 나는 그러나, 무기의 통계를 통합하는 공격력 변수를 설정하려고하면 내가 얻을 : 클래스 속성이 객체에 전달되지 않음
'Char' object has no attribute 'weapon.'
내가 기본적으로
None
로 설정
Char
클래스
weapon
값을 갖는다. 그러나 아래에서는
dean.weapon = sword
(
weapon
)을 사용하여 캐릭터 (
dean
)를 무기로 지정했습니다.
weapon.wgt
을
self.weapon.wgt
으로 변경하려고 시도했지만 도움이되지 않습니다.
attack
코드를 제외하고 코드의 관련 부분을 참조하십시오. 질문과 관련이 없으므로 문제가 복잡해지기 때문에 코드가 필요하지 않으면 생략합니다.
나는이 코드가 엉망이라고 생각한다. 그래서 건설적인 비평은 인정 될 것이다.
코드 :
class Char(object):
def __init__(self, name):
name = name
hp = 300
mp = 10
strn = 1
dmg = 1
dex = 1
armor = 0
weapon = None
attack_speed = dex
intact_bones = ["right arm", "left arm", "right leg", "leg leg", "skull", "sternum", "nose"] # JUST ASSUME RIGHT SIDE IS PRIMARY SIDE FOR NOW
broken_bones = [] ### define what to do per bone if bone is in this list
dmg = strn * self.weapon.wgt
class Equip(object):
wgt = 1
desc = ""
def __init__(self, name):
self.name = name
class weapon(Equip):
impact = 1
sharp = 1
def __init__(self, name):
self.name = name
sword = weapon("Sword")
sword.wgt = 10
sword.impact = 6
sword.sharp = 7
dean.weapon = sword
dean.attack(hamilton)
아, 의미가 있습니다. 좋아, 내가 집에 가서 그걸 고칠 때 나는 이것을 시험 할 것이다. 고맙습니다. – rrr45
좋아, 그랬어. 그래서, 기본적으로, 나는 일반적으로 __init__ 아래에 모든 것을 앞에 놓아야합니다. 또한 동일한 코드에 대해 새로운 문제가 발생했습니다. 나는 StackOverflow에 상당히 새로운 것이다. 여기서 질문하거나 새 스레드를 시작해야합니까? – rrr45
@ rrr45 글쎄, _everything_ 아니지만 모든 인스턴스의 속성이어야합니다. 임시 변수를 선언하면'self'를 사용할 필요가 없습니다. 다행히 도울 수있어. 후속 질문이있는 경우 새로운 질문으로 게시해야하지만 상황에 따라이 질문에 대한 링크를 추가해야합니다. –