2012-01-16 56 views
0

基本上,我想回到Python中,所以我決定在pygame中做一個小遊戲,在那裏有一個彈跳球,你需要保持在空中彈跳。問題是,當我使用函數clock.tick()clock.get_time()時,get_time應該返回以毫秒爲單位的時間,但它以毫秒* 10爲單位傳遞時間。Pygame時鐘函數返回一個奇怪的值

我的代碼:

GRAVITY = 10 

def move(self, delta): 
    self.x+= (self.vx * delta) 
    self.y+= (self.vy * delta) 

def speed(self, delta): 
    self.vy += (GRAVITY * delta) 

clock.tick() 

while True: 
    clock.tick() 
    delta = (clock.get_time()/100) #should be /1000 
    ball.move(delta) 
    ball.speed(delta) 

工作平穩就像在現實世界中,當其/ 100,但作品真的那麼它/ 1000慢。

+1

嘗試使用'clock.get_ticks',這應該使用毫。 pygame文檔中還有這個需要注意的地方:「pygame中的時間以毫秒(1/1000秒)表示。大多數平臺的時間分辨率有限,大約爲10毫秒。該分辨率以毫秒爲單位,在TIMER_RESOLUTION常量中給出 – TyrantWave 2012-01-16 14:04:24

回答

0

我認爲問題的一部分可能是從「1000」而不是「1000.0」除以截斷。您可以驗證clock.tick正在與此:

import pygame 
pygame.init() 
i = 0 
clock = pygame.time.Clock() 
while i < 10: # Just run a few cycles to check the output 
    res = clock.tick(1) # Caps framerate to 1 fps 
    print res # This should print out 1000 
    i += 1 

注意clock.tick已經返回三角洲和通常用於帽的幀率。如果沒有封頂,你可能會有一個非常高的FPS,給出一個小的三角洲,併除以一個整數,不大於1,所以你很少得到一個數字。

此外,還要確保你把所有的單位吧,你真要轉換爲秒