Ich debugge eines meiner Programme und versuche, einem Rechteck eine benutzerdefinierte Variable zuzuweisen, um seine Position zu aktualisieren.
Das ist mein Code:
import os ; os.environ['PYGAME_HIDE_SUPPORT_PROMPT']='False' import pygame, random pygame.init() display = pygame.display.set_mode((401, 401)) display.fill("white") ; pygame.display.flip() class MyRect(pygame.Rect): def __setattr__(self, attr, value): # Sets a custom attribute to a rectangle super().__setattr__(attr, value) if attr == 'xValue': pygame.Rect.move(self, (value-self.centerx), 0) # Move the rectangle according to the xValue def contains(self, coords): return self.collidepoint(coords) square = MyRect(175, 175, 50, 50) pygame.draw.rect(display, 'steelBlue', square) # Draw the rectangle to the screen square.xValue = 200 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() ; exit() elif event.type == pygame.MOUSEBUTTONDOWN: if square.contains(pygame.mouse.get_pos()): square.xValue = random.randint(0, display.get_width()) # Update the square.xValue property pygame.display.flip() # Update the screen
Wenn ich das Programm ausführe, ändert sich die Eigenschaft „square.xvalue“, aber die Position des Quadrats auf dem Bildschirm ändert sich nicht.
Was habe ich verpasst?
Sie müssen die Szene neu zeichnen. Nach Änderungen muss das Rechteck neu gezeichnet werden. Anzeige löschen und Rechteck in der Anwendungsschleife zeichnen:
while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() ; exit() elif event.type == pygame.MOUSEBUTTONDOWN: if square.contains(pygame.mouse.get_pos()): square.xValue = random.randint(0, display.get_width()) # Update the square.xValue property display.fill("white"); pygame.draw.rect(display, 'steelBlue', square) pygame.display.flip() # Update the screen
Das obige ist der detaillierte Inhalt vonProblem beim Aktualisieren des Rechtecks mit benutzerdefinierten Eigenschaften in Pygame. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!