我已经使用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个像素来回移动,而是以随机的速度向右移动,然后以随机的速度向左侧反弹到屏幕右侧,并随机重复一次。然后球继续向一个方向前进并且不会再回来。我无法弄清楚它为什么会这样做。每次运行它时它的行为都不同。如果有人能弄明白为什么,我真的很感激。
答案 0 :(得分:0)
tick(),不带参数返回自上次调用以来经过的时间。在你的使用中,它取决于渲染速度,这总是不同的,这就是你每次都获得不同速度的原因。
从speed = 500
替换为结尾:
speed = 1
if x == 0 or x == 770:
speed = -speed
x += speed
pygame.display.update()
clock.tick(60)