


Не двигается квадрат в Pygame
Написал код, чтобы квадрат двигался в направлениях лево, право, вверх и вниз, нажимая на стрелки. Движений не происходит. Что не так?
import pygame
pygame.init()
#Размеры экрана
display_width = 925
display_height = 525
display = pygame.display.set_mode((display_width, display_height))
# Название
pygame.display.set_caption ("DAGON")
# Загрузка другой иконки
icon = pygame.image.load('Images/Иконка для игры.png')
pygame.display.set_icon(icon)
# Размеры персонажа и его расположение на экране
x = 100
y = 150
player_width = 50
player_height = 70
speed = 100
#Объект
pygame.draw.rect (display, (0, 0, 100), (x, y, player_width, player_height))
#Передвижение
keys = pygame.key.get_pressed()
if keys [pygame.K_LEFT]:
x -= speed
if keys [pygame.K_RIGHT]:
x += speed
if keys [pygame.K_UP]:
y -= speed
if keys [pygame.K_DOWN]:
y += speed
pygame.display.update()
# Цикл для выключения
run = True
while run:
pygame.time.delay(100)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
pygame.quit()
Ваш код не работает, потому что вы проверяете нажатие клавиш вне основного цикла игры. Ваш код должен выглядеть примерно так:
import pygame
pygame.init()
#Размеры экрана
display_width = 925
display_height = 525
display = pygame.display.set_mode((display_width, display_height))
# Название
pygame.display.set_caption ("DAGON")
# Загрузка другой иконки
icon = pygame.image.load('Images/Иконка для игры.png')
pygame.display.set_icon(icon)
# Размеры персонажа и его расположение на экране
x = 100
y = 150
player_width = 50
player_height = 70
speed = 10
# Цикл для выключения
run = True
while run:
pygame.time.delay(100)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
#Передвижение
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
x -= speed
if keys[pygame.K_RIGHT]:
x += speed
if keys[pygame.K_UP]:
y -= speed
if keys[pygame.K_DOWN]:
y += speed
#Объект
display.fill((0,0,0))
pygame.draw.rect(display, (0, 0, 100), (x, y, player_width, player_height))
pygame.display.update()
pygame.quit()
В этом коде я переместил проверку нажатия клавиш внутрь основного цикла игры. Теперь квадрат будет двигаться в направлениях лево, право, вверх и вниз при нажатии соответствующих стрелок. Также я добавил display.fill((0,0,0)) перед отрисовкой квадрата, чтобы очистить экран перед каждым кадром. Это позволит квадрату двигаться без оставления следа.