因此,我再次陷入困境,但是经过大量研究后,如果没有任何反应,我将其用作最后的选择。请不要为此烤我,我是新手。因此,基本上,我试图使我的精灵移动(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()
答案 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)