从Flash游戏中抓取数据

3 投票
2 回答
2417 浏览
提问于 2025-04-15 21:50

我看了这个视频,真的很好奇它是怎么做到的。有没有人知道怎么做的?我觉得他可能是从屏幕上逐个抓取像素(每个'框'抓一个),然后把这些数据输入到某个程序里来决定下一步该怎么做。

逐个抓取像素真的是实现这个的方法吗,还是有更好的办法?我想用Java或Python做类似的事情。

谢谢

2 个回答

2

是的,我觉得他是扫描了像素。其实这应该很简单,因为你只需要在每次移动时扫描新的形状。通过这些信息,你可以在本地计算出网格,然后进一步用它来进行你的人工智能计算。

2

这可能是最可靠的方法了。确实有一些方法可以检查一个程序内部发生了什么,比如直接查看它的内部状态和内存,但这些方法通常依赖于特定的平台,而且很容易出问题,因为你可能在处理一个稍微不同版本的东西——这包括不同的闪存版本和应用程序版本。这些方法通常用于“训练器”,也就是那些针对exe游戏的工具,通常只需要担心一两个版本的可执行文件。

很多截图、比较和找出可靠的指示像素似乎是个不错的办法,当然还要跟踪你期望发生的事情。当应用程序运行时,它应该一次处理一张截图(希望确保画面一致,没有半更新的视图),然后测试所需的最少像素数量,可能还要用到决策树。

确实有方法可以自动构建高效的决策树,但手动比较截图可能更简单。在这种情况下,由于俄罗斯方块通常在同一个位置生成所有新方块,并且颜色和形状之间有一一对应的关系,你可能可以通过一个像素的颜色来判断新方块的形状和位置——所以在这种情况下,“决策树”这个说法可能不太准确——不过机器人确实需要从屏幕上读取其他信息。

更有趣的是实际做出游戏决策的逻辑,因为这个机器人显然不仅仅是把每个方块放到最明显的位置,而是有意图地创造机会,一次消除3或4行。

撰写回答