如何防止python中的时间延迟/竞赛?

时间:2018-10-22 17:54:47

标签: python algorithm pyautogui

我正在尝试实现一个脚本,该脚本将使用a *算法来玩蛇游戏。游戏是由其他人(我的老师)提供给我的,我必须编写一个工作脚本,使用此精确算法或其某些变体来尽可能出色地玩游戏。

现在,我已经编写了算法并尝试了各种模拟,结果证明它可以正常工作,但是由于游戏是.exe,因此我必须对游戏屏幕进行截图并将其转换为输入数据为此,我构建了一条路径,并使用pyautogui向蛇发送了命令。

因此,总结一下,该算法:

  1. 获取屏幕截图
  2. 计算路径和移动
  3. 迈向目标
  4. 重复直到蛇死亡或达到一定分数。

我面临的问题是,蛇有一定的移动时间,因此我会相应地延迟按键的时间,但是当我达到目标时,我必须重复所有步骤和步骤{ {1}}大约要花费1-2才能完成,到那时候我的蛇就会死了,因为它的反应速度不够快。那么防止这种情况的好方法是什么?

我想出的解决方案有时会起作用,但是会形成时间延迟,并且在某些时候致命的蛇会太早或太迟地动作:

45-55ms

延迟可能导致的示例:

enter image description here

图像中的蛇已经死亡,但是提供了正确的路径,但是由于它没有及时做出反应(由于提到的延迟),因此撞到了角落。例如,是否有一种方法可以制作一些介于def simulate_movement(moves, speed): for move in moves: text, pause = move interval1 = round(pause * speed, 1) if move == moves[-1]: interval1 = 0.05 # I speed up the final move because steps 1 and 2 take about 0.05ms pyautogui.press(text, interval=interval1) 之间的代码块以使其运行50-60ms,以便在这段时间过去之前什么都不做,因为这样我可以通过减去减法来消除延迟100ms从最后一步开始,然后等待100ms直到计算出下一步。

0 个答案:

没有答案