Типичное приложение имеет 1 разовое приложение l oop. Приложение l oop:
- обрабатывает события и изменяет состояния в зависимости от событий
- очищает дисплей
- рисует сцену
- обновить отображение
Событие KEYDOWY
происходит один раз при нажатии клавиши, но не происходит непрерывно при удерживании клавиши.
Для непрерывного движения вы можете получить состояние клавиш на pygame.key.get_pressed()
:
keys = pygame.key.get_pressed()
Например, если нажата состояние s , можно оценить с помощью keys[pygame.K_s]
.
Добавьте координаты (x
, y
) для положения прямоугольника. Постоянно манипулируйте позицией в главном приложении l oop, когда нажимается клавиша.
например,
Увеличение x
, если нажата d , и уменьшение x
, если a .
Увеличение y
при нажатии s и уменьшение y
при нажатии w :
import pygame
r_colour = (200, 100,100)
bg_colour = (0,175,200)
(width, height) = (600, 600)
x, y = 20, 30
screen = pygame.display.set_mode((width, height))
running = True
while running:
# handle the events
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# change coordinates
keys = pygame.key.get_pressed()
if keys[pygame.K_d]:
x += 1
if keys[pygame.K_a]:
x -= 1
if keys[pygame.K_s]:
y += 1
if keys[pygame.K_w]:
y -= 1
# clear the display
screen.fill(bg_colour)
# draw the scene
pygame.draw.rect(screen, r_colour, (x, y, 100, 100), 0)
# update the display
pygame.display.update()
pygame.quit()