2017-06-24 20 views
0

私は単純なゲームのpygameを試しています。私はクラスPlayerを持っていますので、2番目または3番目のプレイヤーを作ることができます。属性を設定するのに__init__を使用してください

私はプレーヤーにHPのような属性を持たせたいと思っています。だから私のコードは

class Player(): 
    HP=100 
    Speed=5 
    ICON=pygame.image.load('somepic.ipg') 

あるしかし、その後、私はプレイヤーが異なるアイコンやHPを持ちたいので、私は

class Player(): 

    def __init__(self,HP,ICON): 
    self.HP=HP 
    self.ICON=ICON 

をしようとした私のコードは次のようでした:

P1=Player(80,someicon) 
P1.HP=P1.HP-damage 

と、このような何か。しかし、私は私が__init__のドキュメントを読んで、それが働いていない理由を私は理解していない

AttributeError P1 doesn't have attribute.HP 

を得ました。私は使用できることを知っています:についてもっと知りたいと思います。

+1

[mcve]を投稿してください。 – melpomene

+0

チュートリアルは始めるのに適しているかもしれません - [9。クラス](https://docs.python.org/3/tutorial/classes.html#classes) – wwii

+0

ありがとうございました。 –

答えて

2

あなたのinitメソッドでは、関数defの下の行をインデントしていません。 self。*代入はさらにインデントされるべきです。

+0

ありがとうございますが、ここで入力したときは失敗です。私がそれらを使用したときは正解でした。 –

+0

私はあなたのコードを修正したインデントをjupyterノートブックで試しました。私は期待された結果を得たように見えて、あなたのようなエラーはありません。あなたの例にコードがないかもしれませんか? – LhasaDad

関連する問題