@slinxxml

Не работает pygame.keydown,как исправить?

При запуске окна,нельзя передвигать объект,хоть я и написал код для этого
Вот код
import pygame
import sys
import pygame.key
width=1080
height=720
FPS=120
WHITE=(255,255,255)
pygame.init()
screen=pygame.display.set_mode((1080,720))
pygame.display.set_caption('my.game')
clock=pygame.time.Clock()
velocity = 12
x=-400
y=-200
run=True
BLACK = (   0,  0,  0)
while run:
    clock.tick(FPS)

    background_image = pygame.image.load("fonroad.jpg").convert()
    screen.blit(background_image, [0, 0])

    for event in pygame.event.get():
        if event.type==pygame.quit:
            run = False
            pygame.quit()
            quit()

    player_img=pygame.image.load('car.png').convert()
    player_img.set_colorkey(BLACK)
    screen.blit(player_img,(440,520))

    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
  
            if event.key == pygame.K_LEFT:
                x -= velocity
  
            if event.key == pygame.K_RIGHT:
                x += velocity
  
            if event.key == pygame.K_UP:
                y -= velocity
  
            if event.key == pygame.K_DOWN:
                y += velocity
                
        pygame.display.update()
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
@YariKartoshe4ka
for event in pygame.event.get():
    if event.type==pygame.quit:
        run = False
        pygame.quit()
        quit()

в этом цикле вы проходите по всем событиям, при этом pygame.event.get очищает очередь, и уже по пустой очереде вы проходите новым фориком
for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
  
        if event.key == pygame.K_LEFT:
            x -= velocity
  
        if event.key == pygame.K_RIGHT:
            x += velocity
  
        if event.key == pygame.K_UP:
            y -= velocity
  
        if event.key == pygame.K_DOWN:
            y += velocity

Вывод: обрабатывайте все события в одном цикле for
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы