我只学习 pygame 几个星期,主要是遵循不同的街机风格游戏教程。已经改编了一个乒乓球游戏,我试图插入两个延迟,一个是当球击中边界(球拍后面的屏幕边缘)时,然后是重置和时间延迟,然后球再次从中心开始移动。通过这种方式,玩家可以看到球接触屏幕边缘的位置,然后将所有精灵重置到其原始位置,然后再次离开。
这是当前代码:
class Paddle(pygame.sprite.Sprite):
def reset(self):
paddleA.rect.x = 20
paddleA.rect.y = 200
paddleB.rect.x = 670
paddleB.rect.y = 200
class Ball(pygame.sprite.Sprite):
def reset(self):
ball.rect.x = 345
ball.rect.y = 195
pygame.time.delay(1000)
self.velocity = [randint(4,8), randint(-8,8)]
def hit(self):
self.velocity = 0
pygame.time.delay(500)
asl = pygame.sprite.Group()
asl.add(paddleA)
asl.add(paddleB)
asl.add(BorderA)
asl.add(BorderB)
asl.add(ball)
while GameOn:
asl.update()
if pygame.sprite.collide_mask(ball, BorderA):
scoreB+=1
ball.hit()
paddleA.reset()
paddleB.reset()
ball.reset()
if pygame.sprite.collide_mask(ball, BorderB):
scoreA+=1
ball.hit()
paddleA.reset()
paddleB.reset()
ball.reset()
我的猜测是那里需要更新,但我尝试在几个不同的位置添加 asl.update() 和 pygame.display.flip() 以尝试让它在进入第二个之前重置精灵time.delay 但它永远不会起作用,延迟只会持续更长时间,球一旦回到中心就会移动。