#python #python-3.x #pygame
#python #python-3.x #pygame
Вопрос:
Итак, я снова застрял, но я использую это в качестве последнего средства, когда после обширных исследований ничего не работает. Пожалуйста, не поджаривайте меня за это, я новичок. Итак, в основном я пытаюсь заставить свой спрайт двигаться (йо-йо), но кадры продолжают реплицироваться, когда йо-йо движется вверх и вниз. Итак, я не знаю, как это исправить. Если йо-йо касается границ игрового окна, он сталкивается и должен отображать текст, а затем игра начинается снова. Однако, когда йо-йо сталкивается с границей окна, он перезапускается, но йо-йо, который застрял, все еще отображается, и появляется новый йо-йо. Текст отображается, но не исчезает через 2 секунды.
import pygame
import time
pygame.init()
width = 900
height = 900
red = (255,0,0)
text = "game over"
screem = pygame.display.set_mode((width,height))
pygame.display.set_caption("yoyo")
clock = pygame.time.Clock()
background = pygame.image.load("room.png").convert()
win.blit(background, [0,0])
yoyo= pygame.image.load("yoyo.png").convert()
def Yoyo (x,y):
win.blit(yoyo, [x,y])
def mainloop():
x = 87
y = 90
yc = 0
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
Exit = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
Yoyo(x,y)
y = yc
if y > 23 or y < -90:
pygame.display.update()
clock.tick(60)
mainloop()
pygame.quit()
quit()
Комментарии:
1. После публикации кода вопроса (или ответа) немедленно выберите то, что вы только что вставили, и либо введите Ctrl K, либо нажмите
{}
кнопку в интерфейсе редактора. Это позволит правильно отформатировать ваш код без риска появления ошибок отступа при попытке его форматирования вручную.
Ответ №1:
Перерисуйте всю сцену в каждом кадре. Это означает, что вы также должны рисовать фон в каждом кадре.
Draw ( blit
) фон в основном цикле, прежде чем будет нарисовано что-либо еще:
while not Exit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
Exit = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
y_change = -5
elif event.key == pygame. K_DOWN:
y_change = 5
if event.type == pygame.KEYUP:
if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
y_change = 0
y = y_change
if y > 405 or y < -200:
collision()
GameLoop()
win.blit(bg, [0,0]) # <----- draw background
Bee(x,y) # <----- draw the bee on the background
# [...] all further drawing has to be done here
pygame.display.update()
clock.tick(60)