Как сделать так, чтобы ваш спрайт не воспроизводился на экране? Как вы заставляете свой спрайт уходить или начинать заново, как только появляется текст? - PullRequest
4 голосов
/ 09 апреля 2019

Итак, я снова застрял, но я использую это как последнее средство, когда ничего не работает после обширных исследований. Пожалуйста, не жарь меня за это, я новичок. Итак, в основном я пытаюсь заставить мой спрайт двигаться (йо-йо), но кадры продолжают копироваться, когда йойо движется вверх и вниз. Итак, я не знаю, как это исправить. Если йойо касается границ игрового окна, оно сталкивается, и должно отображаться текст, а затем игра начинается снова. Однако, когда йойо сталкивается с границей окна, оно перезапускается, но застрявшее йойо все еще отображается, и появляется новое йойо. Текст отображается, но не исчезает через 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 Ответ

3 голосов
/ 09 апреля 2019

Перерисовать всю сцену в каждом кадре.Это означает, что вы также должны рисовать фон в каждом кадре.

Нарисуйте (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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...