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?