Ich habe gerade angefangen zu versuchen, über Pygame zu lernen, und ich habe in Schwierigkeiten geraten, wenn ich versuche, mein Rechteck um den Bildschirm zu bewegen. Ich habe es so eingestellt, dass, wenn ich jede der Pfeiltasten drücke, das Rechteck nach oben, unten, links und rechts bewegt wird. Wenn ich jedoch die Tasten gedrückt halte, wird es sich nicht weiter bewegen. Ich muss die Tasten mehrmals drücken, damit sie sich überall bewegen kann.glatte Bewegung in Pygame
Ich habe versucht, mit der pygame.key.get_pressed() -Methode wie in der Post Python - Smooth Keyboard Movement in Pygame beantwortet, aber nichts funktioniert.
Ich bemerkte, dass hin und wieder, wenn ich die Pfeiltasten für eine Weile gedrückt halte, das Rechteck sich nur für etwa eine Sekunde bewegt, dann hält es an.
Diese Frage wurde wahrscheinlich schon früher beantwortet, aber ich konnte keine Antwort finden. Hier
ist der Code:
import pygame
import os
import sys
_image_library = {}
def get_image(path):
global _image_library
image = _image_library.get(path)
if image == None:
canonicalized_path = path.replace('/', os.sep).replace('\\', os.sep)
image = pygame.image.load(canonicalized_path)
_image_library[path] = image
return image
def detect_collision(x,y):
if x > 340:
x -= 1
if y > 240:
y -= 1
if y < 0:
y += 1
if x < 0:
x += 1
return x,y
pygame.init()
screen = pygame.display.set_mode((800, 550))
done = False
clock = pygame.time.Clock()
x = 30
y = 30
pygame.mixer.music.load("song.mp3")
pygame.mixer.music.play()
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
pressed = pygame.key.get_pressed()
if pressed[pygame.K_UP]:
y -= 1
x,y = detect_collision(x, y)
if pressed[pygame.K_DOWN]:
y += 1
x,y = detect_collision(x, y)
if pressed[pygame.K_LEFT]:
x -= 1
x,y = detect_collision(x, y)
if pressed[pygame.K_RIGHT]:
x += 1
x,y = detect_collision(x, y)
screen.fill((255, 255, 255))
pygame.draw.rect(screen, (0, 128, 0), pygame.Rect(x, y, 60, 60))
pygame.display.flip()
clock.tick(60)
Ich benutze Python 2.7.11 (gleich mit Pygame) und ich bin auf einem Windows 10 Computer, wenn das einen Unterschied macht. – somerandomnerd