Aiuto con le classi python

di il
2 risposte

Aiuto con le classi python

Ciao a tutti,
mi sono addentrato da poco nel mondo della programmazione a oggetti in python e avrei bisogno di una mano.
Questo è un piccolo codice che ho scritto con l'incremento della libreria pygame servendomi delle classi per creare un modello di navicella con determinati metodi. Ecco il codice:

import pygame
import os

pygame.init()

WIDTH, HEIGHT = 800, 600
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Space Invaders")
icon = pygame.image.load(os.path.join("assets", "ufo.png"))
pygame.display.set_icon(icon)

# Load images
playerImg = pygame.image.load(os.path.join("assets", "player.png"))

class Player:
    def __init__(self, img, x, y):
        self.img = img
        self.x = x
        self.y = y

    def draw(self, window):
        self.window = window
        self.window.blit(self.img, (self.x, self.y))

    def handle_movement(self, vel=5):
        self.keys = pygame.key.get_pressed()
        self.vel = vel

        if self.keys[pygame.K_w]:
            Player.y -= self.vel
        if self.keys[pygame.K_s]:
            Player.y += self.vel
        if self.keys[pygame.K_a]:
            Player.x -= self.vel
        if self.keys[pygame.K_d]:
            Player.x += self.vel


def main():
    player = Player(playerImg, 370, 480)

    def redraw_window():
        WIN.fill((0, 0, 0))
        player.draw(WIN)

        pygame.display.update()

    run = True
    while run:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False

        player.handle_movement()
        redraw_window()

    pygame.quit()


if __name__ == "__main__":
    main()

Tutto va finchè non tento di muovermi. Lì subito mi da degli errori e mi interrompe tutto il programma. Mi dice che, dove definivo la funzione handle_movement Player non ha l'attributo x e y anche se poco prima l'avevo definito nel metodo __init__.

Qualcuno può darmi una mano?

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte