2015-12-16 2 views
0

Я сейчас работаю над основами игры, но по какой-то причине я не могу заставить свой спрайт двигаться. Я знаю, что он регистрируется, когда я нажимаю клавишу вниз, но спрайт почему-то остается неподвижным.Python sprite не перемещается, когда удерживается клавиша

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

pygame.init() 

black = (0, 0, 0) 
white = (255, 255, 255) 

screen = pygame.display.set_mode((800, 600)) 
pygame.display.set_caption("RADICAL") 
screen.fill(black) 

imga = pygame.image.load('coina.png') 
imgb = pygame.image.load('coinb.png') 
sound = pygame.mixer.Sound('coin.mp3') 

FPS = 80 
imgx = 10 
imgy = 10 
pixMove = 10 

steps = 0 
x1 = 0 
y1 = 0 

keystate = pygame.key.get_pressed() 

GameOver = False 

while not GameOver: 
    screen.fill(white) 

    points = (steps) 
    font = pygame.font.SysFont(None, 30) 
    text = font.render('Score: '+str(points), True, black) 
    screen.blit(text, (0,0)) 

    if steps % 2 == 0: 
     screen.blit(imga, (imgx, imgy)) 
    else: 
     screen.blit(imgb, (imgx, imgy)) 

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

     elif event.type == pygame.KEYDOWN: 
      if keystate[pygame.K_UP]: 
       y1 -= pixMove 
      elif keystate[pygame.K_DOWN]: 
       y1 += pixMove 
      elif keystate[pygame.K_LEFT]: 
       x1 -= pixMove 
      elif keystate[pygame.K_RIGHT]: 
       x1 += pixMove 
     elif event.type == pygame.KEYUP: 
      if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: 
       x1 = 0 
      if event.key == pygame.K_UP or event.key == pygame.K_DOWN: 
       y1 = 0 

      steps +=1 

     if event.type == K_SPACE: 
      sound.play() 
      time.sleep(1) 
      sound.stop() 

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

ответ

0

Обычно вы блитирования() изображения на экране (pygame.display.set_mode()), для того, чтобы изменения, чтобы отразить на экране мы называем pygame.display.update(), В вашем случае игра никогда не приходит заявление, которое из цикла While ,

Смежные вопросы