0

我只学习 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 但它永远不会起作用,延迟只会持续更长时间,球一旦回到中心就会移动。

4

0 回答 0