Я пытаюсь переместить прямоугольник в 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.