#python #pygame #cursor
#python #pygame #курсор
Вопрос:
Я создаю flappy bird, следуя этому руководству https://www.youtube.com/watch?v=UZg49z76cLwamp;t=1309s но экран обновляется только тогда, когда я перемещаю курсор, кто-нибудь знает, как это исправить
import pygame, sys
def draw_floor():
screen.blit(floor_surface, (floor_animation, 400))
screen.blit(floor_surface, (floor_animation 275,400))
pygame.init()
screen = pygame.display.set_mode((275,512))
clock = pygame.time.Clock()
bg_surface = pygame.image.load('C:/Users/cuerv/Downloads/flappy-bird-assets-master/flappy-bird-assets-master/sprites/background-day.png').convert()
floor_surface = pygame.image.load('C:/Users/cuerv/Downloads/flappy-bird-assets-master/flappy-bird-assets-master/sprites/base.png').convert()
floor_animation = 0
bird_surface = pygame.image.load('C:/Users/cuerv/Downloads/flappy-bird-assets-master/flappy-bird-assets-master/sprites/bluebird-midflap.png').convert()
bird_rect = bird_surface.get_rect(center = (100,256))
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
screen.blit(bg_surface, (0, 0))
screen.blit(bird_surface, (bird_rect))
floor_animation -= 1
draw_floor()
if floor_animation <= -275:
floor_animation = 0
screen.blit(floor_surface, (floor_animation, 400))
pygame.display.update()
clock.tick(120)
enter code here
Комментарии:
1. Скорее всего, вы рисуете сцену в цикле событий, а не в цикле приложения.
2. Вы перерисовываете экран только при возникновении события, вам нужно переместить функции перерисовки вверх
Ответ №1:
Это вопрос отступа. Нарисуйте сцену в цикле приложения, а не в цикле событий:
# application loop
while True:
# event loop
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
#<--| INDENTATION
screen.blit(bg_surface, (0, 0))
screen.blit(bird_surface, (bird_rect))
floor_animation -= 1
draw_floor()
if floor_animation <= -275:
floor_animation = 0
screen.blit(floor_surface, (floor_animation, 400))
pygame.display.update()
Обратите внимание, цикл событий выполняется только при возникновении события, но цикл приложения выполняется непрерывно.
Ответ №2:
Я предполагаю, что в вашей функции действие происходит только тогда, когда мышь наведена на изображение или когда положение мыши в момент времени t1 ! = положение в t2. Также предоставьте код, чтобы мы могли проверить, в чем может быть проблема 🙂