我正在尝试实现一个脚本,该脚本将使用a *算法来玩蛇游戏。游戏是由其他人(我的老师)提供给我的,我必须编写一个工作脚本,使用此精确算法或其某些变体来尽可能出色地玩游戏。
现在,我已经编写了算法并尝试了各种模拟,结果证明它可以正常工作,但是由于游戏是.exe,因此我必须对游戏屏幕进行截图并将其转换为输入数据为此,我构建了一条路径,并使用pyautogui
向蛇发送了命令。
因此,总结一下,该算法:
我面临的问题是,蛇有一定的移动时间,因此我会相应地延迟按键的时间,但是当我达到目标时,我必须重复所有步骤和步骤{ {1}}大约要花费1-2
才能完成,到那时候我的蛇就会死了,因为它的反应速度不够快。那么防止这种情况的好方法是什么?
我想出的解决方案有时会起作用,但是会形成时间延迟,并且在某些时候致命的蛇会太早或太迟地动作:
45-55ms
延迟可能导致的示例:
图像中的蛇已经死亡,但是提供了正确的路径,但是由于它没有及时做出反应(由于提到的延迟),因此撞到了角落。例如,是否有一种方法可以制作一些介于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
直到计算出下一步。