Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Не двигается квадрат в 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()

По дате
По рейтингу
Аватар пользователя
Оракул

Ваш код не работает, потому что вы проверяете нажатие клавиш вне основного цикла игры. Ваш код должен выглядеть примерно так:

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
 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)) перед отрисовкой квадрата, чтобы очистить экран перед каждым кадром. Это позволит квадрату двигаться без оставления следа.