这段代码只有在我声明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块人为地限制更新更好的方法,因为你发现它受到任何代码可能或可能没有事先执行的影响。