一个简单的Python应用程序无缘无故地表现不正常?

时间:2014-04-24 07:16:45

标签: python python-2.7 random pygame

我已经使用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"是一个jpeg图像,是816 x 460像素和" bif.png"是一个半径为50像素的球的png图像。球不是以每秒500个像素来回移动,而是以随机的速度向右移动,然后以随机的速度向左侧反弹到屏幕右侧,并随机重复一次。然后球继续向一个方向前进并且不会再回来。我无法弄清楚它为什么会这样做。每次运行它时它的行为都不同。如果有人能弄明白为什么,我真的很感激。

1 个答案:

答案 0 :(得分:0)

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

speed = 500替换为结尾:

speed = 1

if x == 0 or x == 770:
    speed = -speed
x += speed

pygame.display.update()
clock.tick(60)