如何使子画面不在屏幕上复制?出现文字后,如何使子画面消失或重新开始?

时间:2019-04-09 18:15:14

标签: python python-3.x pygame

因此,我再次陷入困境,但是经过大量研究后,如果没有任何反应,我将其用作最后的选择。请不要为此烤我,我是新手。因此,基本上,我试图使我的精灵移动(yoyo),但是随着yoyo上下移动,帧会不断复制。所以,我不知道该如何解决。如果yoyo触碰了游戏窗口的边界,它就会发生碰撞并显示一个文本,然后游戏会重新开始。但是,当yoyo与窗口边框碰撞时,它将重新启动,但是仍然显示卡住的yoyo,并显示新的yoyo。文本会显示,但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 个答案:

答案 0 :(得分:3)

在每帧中重画整个场景。这意味着您还必须在每一帧中绘制背景。

在绘制任何其他内容之前,先在主循环中绘制(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)