2010-04-20 117 views
3

我看到this视频,我真的好奇它是如何执行的。有没有人有任何想法?我的直觉是,他从屏幕上刮取了像素(每个“盒子”一个),然后将其输入到某个程序中以确定下一步行动。从Flash(游戏)刮数据

是以像素为单位进行拼接的方式,还是有更好的方法?我正在寻找与Java或Python类似的东西。

谢谢

+0

你可以屏幕刮擦,我敢肯定,你可以使用足够的时间和工具侵入闪存对象本身。我只是不知道如何。 ;) – Drew 2010-04-20 19:52:26

回答

2

也许这是最可靠的方法。有一些方法可以检查进程内部发生的情况 - 直接关注其内部状态和内存 - 但是它们是特定于平台的,并且很容易出现错误行为,因为您处理的是某种稍微不同的版本 - 包括与以及作为应用程序的不同版本。这些方法更常用于exe游戏的“培训者”,其中通常只有一两个版本的可执行文件需要担心。

大量的屏幕截图,比较,找出可靠的指标像素似乎是要走的路 - 当然,还要记录您期望发生的事情。当应用程序运行时,它应该一次从屏幕截图工作(希望确保画面一致,没有半更新的视图),然后使用(可能)决策树测试所需的最小像素数。

有些方法可以自动化构建有效的决策树,但根据比较屏幕截图手动执行操作可能更容易。在这种情况下,由于俄罗斯方块通常会在同一位置创建所有新的棋子,颜色和形状之间的关系为1:1,因此您可以从一个像素颜色中确定新棋子的形状和位置 - 因此“决策树”可能是一个错误的术语,在这种情况下 - 尽管机器人需要从屏幕读取其他内容。

更有趣的是实际制定游戏决策的逻辑,因为这个机器人显然不是将每件作品放入最直接明显的位置,而是有意识地创造一次清除3或4行的机会。

+0

你必须是广告商! – elias 2010-04-21 08:51:32

2

是的,我认为他扫描像素。实际上它应该非常简单,因为您只需要为每次移动扫描新形状。有了这些信息,您可以在本地计算网格并进一步将其用于AI计算。