2017-02-20 3 views
1

Ich mache ein Pong-Spiel in Python. Um dies zu tun, verwende ich Pygame. Ich versuche, ein Bild kontinuierlich auf Tastendruck zu bewegen. Ich habe mehrere Methoden ausprobiert, aber keine hat funktioniert. hier ist mein Code für die Bewegung:Wie verschiebe ich ein Bild in Pygame/Python mit Tastendruck?

import pygame, sys 
from pygame.locals import * 
import time 

try: #try this code 
pygame.init() 

FPS = 120 #fps setting 
fpsClock = pygame.time.Clock() 

#window 
DISPLAYSURF = pygame.display.set_mode((1000, 900), 0, 32) 
pygame.display.set_caption('Movement with Keys') 

WHITE = (255, 255, 255) 
wheatImg = pygame.image.load('gem4.png') 
wheatx = 10 
wheaty = 10 
direction = 'right' 

pygame.mixer.music.load('overworld 8-bit.WAV') 
pygame.mixer.music.play(-1, 0.0) 
#time.sleep(5) 
#soundObj.stop() 

while True: #main game loop 
    DISPLAYSURF.fill(WHITE) 

    bign = pygame.event.get() 
    for event in bign: 
     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_d: 
       pygame.mixer.music.stop() 
    keys_pressed = key.get_pressed() 
    if keys_pressed[K_d]: 
     wheatx += 20 

    #events = pygame.event.get() 
    #for event in events: 
     # if event.type == pygame.KEYDOWN: 
     #  if event.key == pygame.K_p: 
     #   pygame.mixer.music.stop() 
     #  time.sleep(1) 
      #  pygame.mixer.music.load('secondscreen.wav') 
      #  pygame.mixer.music.play() 

    DISPLAYSURF.blit(wheatImg, (wheatx, wheaty)) 

    pygame.display.update() 
    fpsClock.tick(FPS) 


    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 

Einrückungen ist normal, ich bin neu in Stackoverflow! Ich habe eine Ausnahme, weshalb der Versuch dort ist. Danke für die Hilfe!

+0

Erhalten Sie Fehler? Du hast gesagt, es funktioniert nicht, aber was funktioniert nicht? Sie rufen auch 'key.get_pressed()' auf, aber es sollte 'pygame.key.get_pressed()' sein, wenn ich nicht irre. –

Antwort

0

Dieser Code wird das Bild nach unten auf die Pfeiltaste nach unten gedrückt und nach oben, wenn die Pfeiltaste gedrückt wird (sollten Sie nicht sein Änderung der Y-Achse und wheaty, wenn der Benutzer die Abwärts-Taste, anstatt zu verändern wheatx bewegen ?). Tun Sie das ähnlich für die anderen Pfeiltasten.

while True: 
    DISPLAYSURF.fill(WHITE) 
    bign = pygame.event.get() 
    for event in bign: 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 
     elif event.type == pygame.KEYDOWN: 
      pygame.mixer.music.stop() 
      if event.key == pygame.K_DOWN: 
       wheaty +=20 
      elif event.key == pygame.K_UP: 
       wheaty -= 20 
    DISPLAYSURF.blit(wheatImg, (wheatx, wheaty)) 
    pygame.display.update() 
    fpsClock.tick(FPS) 
+0

Danke, hat perfekt funktioniert! Nicht viel anders als der Code, den ich verwendet habe, bevor ich alles verändert habe, aber ich denke, dass der 'event.type == QUIT' damit zu tun hatte, da er separat war. Aber wie bekomme ich kontinuierliche Bewegung, wenn ich den Schlüssel festhalte? Vielen Dank! :) –

+1

Mach dir keine Sorgen, repariert es! –

Verwandte Themen