Я пытаюсь переместить прямоугольник в Pygame, используя координаты, но не сработает

Это мой код

    import pygame
    from pygame.locals import *
    import sys
    pygame.init()
    pygame.display.set_caption("*no current mission*")
    size = (1280, 750)
    screen = pygame.display.set_mode(size)
    clock = pygame.time.Clock()
    bg = pygame.image.load("bg1.png")
    guy = pygame.image.load("hero_stand.png")
    rect = guy.get_rect()
    x = 10
    y = 10
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit()
                if event.type == KEYDOWN:
                    _if event.key == K_RIGHT:
                        x += 5
                        rect.move(x,y)_
        rect.move(x,y) 
        screen.blit(bg,(0,0))
        screen.blit(guy, rect)
        pygame.display.flip()

это всего лишь простой тест, чтобы увидеть, смогу ли я получить прямоугольник для перемещения. Кажется, все работает, кроме кода, который я выделил курсивом.

2 ответа

Я ничего не знаю о PyGame, но это выглядит так while цикл никогда не завершится, а отступ будет таким, что все со второго rect.move(x,y) вперед находится вне петли и поэтому недоступен. Сделайте отступ с этого момента, чтобы он был в цикле while, и это может сделать это.

Проблема заключается в методе.flip(). Вы должны вызывать его один раз каждый раз и обновлять, чтобы он отображал изменения на экране. Поместите их в цикл while, и он должен работать. Основной цикл Pygame должен выглядеть следующим образом:

#capture user input and call functions responsible
delta = timer.tick()
#this takes into account the speed of the machine, so it moves the sprites indepented of speed
updateSprites(delta) #moves the sprites
drawSprites()#blits the sprites at their positions
screen.diplay.flip() #flips the screen to show changes.
Другие вопросы по тегам