0

ねえ、矢印キーを使用して重力を実装するゲーム用の Player クラスを作成しようとしていますが、クラスメソッドで初期化パラメーターを使用して位置などを更新することはできません。誰か教えてください。私のエラーは

File "playerClass.py", line 83, in <module>
CircleMan.update()

ファイル "playerClass.py"、28 行目、更新 self.yPos += self.yVel AttributeError: Player インスタンスに属性 'yPos' がありません

class Player:
def __init__(self,image,xPos,yPos,xVel,yVel):
    self.xPos = xPos
    self.xPos = yPos
    self.xVel = xVel
    self.yVel = yVel
    self.Image = image

def draw(self):
    screen.blit(Image,(xPos,yPos))

def update(self):
    self.xPos += self.xVel
    self.yPos += self.yVel

    for event in pygame.event.get():
            if event.type == QUIT:
                    pygame.quit()
                    sys.exit()
            if event.type == KEYDOWN:
                    if event.key == K_LEFT:
                        self.xVel = -2
                    elif event.key == K_RIGHT:
                        self.xVel = 2
                    elif event.key == K_UP:
                        if self.yPos == 469:  ## if player presses down up and player is on the ground, subtract y value making him jump
                            self.yVel = -3
                    elif event.key == K_DOWN:
                         pass


            if event.type == KEYUP:
                    if event.key == K_LEFT:
                        self.xVel = 0
                    elif event.key == K_RIGHT:
                        self.xVel = 0
                    elif event.key == K_UP:
                        self.yVel = 0
                    elif event.key == K_DOWN:  
                        self.yVel = 0

    playerGravity()
    draw()

def playerGravity(self):
    if self.yPos < 469:
        self.yVel = self.yVel + 2
    elif yPos == 469:
        self.yVel = 0
    else:
        pass
4

3 に答える 3

2

init () 関数でタイプミスをした可能性があります。self.xPos を 2 回設定していますが、self.yPos は設定されていません。

def init (self,image,xPos,yPos,xVel,yVel): self.xPos = xPos self.xPos = yPos self.xVel = xVel self.yVel = yVel self.Image = 画像

于 2013-01-30T14:07:08.170 に答える
1

コンストラクターで間違いを犯しました:

self.xPos = yPos

する必要があります:

self.yPos = yPos
于 2013-01-30T13:40:13.723 に答える
0

self.xPos2回定義した質問のタイプミスでない限り

  self.xPos = xPos
  self.xPos = yPos

決して定義しないself.yPos

于 2013-01-30T13:43:18.317 に答える