【发布时间】:2016-06-13 12:37:40
【问题描述】:
最近,我的朋友向我提出挑战,让我制作一个用 Java 玩著名的 2048 游戏的 AI。我做到了,它工作了几分钟,然后卡住了。经过一点调试,我意识到它没有正确读取板,它认为 32 是 1024。为了解释它为什么这样做,我必须先解释它是如何获取屏幕上瓷砖的值的。
它首先让用户在游戏板周围画一个正方形。这样做是为了告诉程序游戏在屏幕上的哪个位置。然后它会生成 16 个点,每个点位于一个单独的图块中。使用 Robot 类,它将这 16 个点的颜色存储在一个数组中。
然后它检查是否找到了新颜色。如果它找到了一种新颜色,那么它将下一个 2 的幂分配给该颜色。例如,第一种颜色(背景)分配给 0。下一种颜色(白色)分配给 2,然后下一种颜色分配给 4,依此类推。问题是,当瓷砖移动时,它们是动画的,也就是说,它们不仅会传送到正确的位置,还会移动到正确的位置。这会导致错误的颜色通过 16 个点之一,并且程序错误地读取了该图块。
这让我想到了我的问题:有什么方法可以读取游戏 2048 中的图块值,而无需用 Java 重新创建游戏?
编辑:
更具体地说,我的问题是如何在 java 中获取 2048 年的实际游戏板数据?
我要问的是一种在外部 java 程序中获取图块值的方法。
以这个板子为例:
我想从这个板上获取数字的值并将它们存储在一个看起来像这样的数组中:{0,0,2,4,0,0,32,2,2,2, 16,8,4,32,64,128}
提前致谢:)
【问题讨论】:
-
您的问题应该是:“有什么方法可以读取磁贴并确保我没有错误地读取错误的临时颜色?”
-
非常有趣的问题。可惜太宽泛了。
-
@Dropout 你能告诉我如何让问题不那么广泛吗?
-
@Kayaman 这就是我解决问题的方法。我还问是否有另一种/更好的方法来解决它。
-
重复采样并稍作延迟,直到 3(?) 个采样在每个单元格中返回相同的值?我不知道,到达。
标签: java artificial-intelligence tiles 2048