私は私には説明できないこの奇妙な速度の振る舞いに偶然出くわしました。メインループ内のprint clock.tick()
行が表示されていない場合は、赤い四角が画面幅全体にわたってより滑らかに移動します。誰が原因でこれが起こっているのか説明できますか?パイガム速度の問題
import pygame
from pygame.locals import *
class Box(pygame.sprite.Sprite):
def __init__(self,color,init_pos):
super(Box, self).__init__()
self.image=pygame.Surface([50,50])
self.image.fill(color)
self.rect=self.image.get_rect()
self.rect.topleft=init_pos
self.speed=300
def update(self,time_passed):
moved_distance=self.speed*time_passed
self.rect.left+=moved_distance
pygame.init()
screen=pygame.display.set_mode([640,480])
box=Box((255,0,0),(0,0))
clock=pygame.time.Clock()
while True:
for e in pygame.event.get():
if e.type==QUIT:
pygame.quit()
screen.fill((0,0,0))
time_passed=clock.tick()/1000.0
box.update(time_passed)
print clock.tick() #this line uncommented moves the red sqaure faster, why?
screen.blit(box.image,box.rect)
pygame.display.flip()
私は印刷行を 'print 'に変更しました!''と '' clock.tick() 'と同じ効果があります。私の目的は、赤い四角形を動かすのではなく、移動させないことでしたが、なぜ「プリント」を置くのがスピードにそのような影響を与えるのかを理解することでした。また、 'print'がコメントアウトされるとすぐに、メインループに' print' **をどこかに置くとループが高速化されます。 – amirteymuri
@AmirTeymuri私の最初の答えの更新をご覧ください。 –
これは絶対に意味をなさない! – amirteymuri