我一直在使用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)