一个简单的Python应用程序毫无理由地运行不稳定



我一直在使用Python 2.7和Pygame学习一些Python教程,我决定挑战自己。教程展示了如何使球在屏幕上移动(向右),然后以特定的速度弹回屏幕的另一侧(向左)。我想让球从左到右来回反弹,所以我写了这个:

   bif = "bg.jpg"
    mif = "ball1.png" 
    import pygame, sys
    from pygame import *
    from pygame.locals import * 
    pygame.init() 
    screen = pygame.display.set_mode((816,460),0,32) 
    background = pygame.image.load(bif).convert()
    ball = pygame.image.load(mif).convert_alpha()
    x = 0
    clock = pygame.time.Clock()
    while True:
            for event in pygame.event.get():
                    if event.type == QUIT:
                            pygame.quit()
                            sys.exit()
            screen.blit(background, (0,0))
            screen.blit(ball, (x, 160))
            speed = 500
            milli = clock.tick() #A tick is 1 millisecond
            seconds = milli/1000.000000
            dm = seconds * speed
            if x == 0:
                    a = dm
            elif x == 770:
                    a = -dm
            x += a

            pygame.display.update()

"bg.jpg"是816 x 460像素的jpeg图像,"bif.png"是半径为50像素的球的png图像。球不是以每秒500像素的速度来回移动,而是以随机速度向右移动,然后以随机速度从屏幕右侧向左反弹,并随机重复多次。然后球一直朝着一个方向前进,却没有回来。我不明白它为什么这么做。每次我运行它时,它的表现都不一样。如果有人能找出原因,我会非常感激。

tick(),不带参数,返回自上次调用以来经过的时间。在使用中,它取决于渲染速度,而渲染速度总是不同的,这就是为什么每次都会获得不同的速度。

speed = 500到末尾替换为:

speed = 1
if x == 0 or x == 770:
    speed = -speed
x += speed
pygame.display.update()
clock.tick(60)

最新更新