2016-09-22 5 views
0

Ich bin ein Anfänger in Python. Ich versuche, das Bild mit dem Pygame-Modul zu verschieben. Aber ich bin nicht in der Lage, die Position des Bildes in Python zu verschieben. Kannst du mir helfen zu verstehen, was ich falsch mache?Nicht in der Lage, Bild in Pygame zu verschieben

import pygame, sys        
from pygame.locals import *      
pygame.init()         

image = pygame.image.load("ball.jpg") 
image = pygame.transform.scale(image, (100, 100)) 

imgrect = image.get_rect() 

Canvas = pygame.display.set_mode((500, 500)) 
pygame.display.set_caption('Text Input') 

imgrect.left = 200 
imgrect.top = 200 

Canvas.blit(image, imgrect) 
pygame.display.update() 

while True:          
    for event in pygame.event.get(): 

     if event.type == KEYDOWN :    
      if event.key == K_ESCAPE:   
       pygame.quit()     
       sys.exit()  
      if event.key == K_UP: 
       imgrect.top += 1 
      if event.key == K_DOWN: 
       imgrect.top -= 1 
+0

Verwenden Sie Kleinbuchstaben (wie 'Canvas') für Variablen anstelle von' Canvas'. Der zweite wird für Klassen verwendet und könnte andere Programmierer verwirren, wenn Sie die beiden kombinieren. –

Antwort

1

Eine grundlegende Spielschleife sollte drei Dinge tun: Ereignisse behandeln, aktualisieren und zeichnen. Ich sehe die Logik, in der Sie die Position des Rechtecks ​​aktualisieren, aber Sie zeichnen das Bild nicht an der neuen Position neu.

Ich habe Zeilen am unteren Rand der Spielschleife hinzugefügt, um die Szene zu zeichnen.

while True: 
    # handle events 
    # update logic 

    # draw 
    Canvas.fill((0, 0, 0)) # Clears the previous image. 
    Canvas.blit(image, imgrect) # Draws the image at the new position. 
    pygame.display.update() # Updates the screen. 
+0

Wenn der Hintergrund eine andere Farbe als schwarz ist, ändern Sie einfach die R-, G-, B-Werte in 'Canvas.fill ((R, G, B))', damit sie der aktuellen Hintergrundfarbe entsprechen. Oder wenn es ein Hintergrundbild gibt, ersetzen Sie 'Canvas.fill ((0, 0, 0))' durch 'Canvas.blit (bg_image, (0, 0))'. –