代码只有在pygame库中使用print()时才能工作



这段代码只有在我声明print("abc")时才有效,否则它根本无法工作,原因很明显我使用pygame的扫雷项目,我正在做

:

for Sprite in self.CellsSprites:
if Sprite.rect.colliderect(self.rect):
print("abc")
if time.time() - self.time > 0.1 and self.block == False:
self.block = True
self.time = time.time()
Cell_Hold((Sprite.rect.x,Sprite.rect.y),{self.CellsSprites})
break

行不通:

for Sprite in self.CellsSprites:
if Sprite.rect.colliderect(self.rect):
if time.time() - self.time > 0.1 and self.block == False:
self.block = True
self.time = time.time()
Cell_Hold((Sprite.rect.x,Sprite.rect.y),{self.CellsSprites})
break

它的作用是寻找每个与另一个精灵发生碰撞的精灵,并在其上绘制另一个精灵

time.time() - self.time > 0.1

也许print("abc")行减慢了执行时间,足以让这个if子句为真?然而,如果没有打印行,代码运行得太快,所以这个子句是假的?试着降低浮点数一点,看看你是否注意到不同。或者在执行print语句时暂停一毫秒?

编辑:在这个答案中添加一个有用的建议,由@Jskkc提供,他在下面评论,使用pygame.time.Clock()来限制帧率-这是一个比用笨拙的if块人为地限制更新更好的方法,因为你发现它受到任何代码可能或可能没有事先执行的影响。

相关内容

最新更新