如何在 Java 中获取 2048 年的图块值
How to get the values of tiles in 2048 in Java
最近,我的朋友向我提出挑战,要我制作一个可以玩 Java 中著名的 2048 游戏的 AI。我做到了,它工作了几分钟,然后就卡住了。经过一些调试,我意识到它没有正确读取板,它认为 32 是 1024。为了解释它为什么这样做,我必须首先解释它是如何获取屏幕上瓷砖的值的。
它首先让用户在游戏板周围画一个正方形。这样做是为了告诉程序游戏在屏幕上的位置。然后它生成 16 个点,每个点位于一个单独的图块中。使用机器人 class,它将这 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}
提前致谢:)
完成此操作的一种方法是弄清楚每个图块代表的颜色。这假设您使用的是原始版本。
- 无图块:
#cdc1b4
- 2:
#eee4da
- 4:
#ede0c8
- 8:
#f2b179
- 16:
#f59563
- 32:
#f67c5f
- 64:
#f65e3b
- 128:
#edcf72
- 256:
#edcc61
- 512:
#edc850
- 1024:
#edc53f
- 2048+:
#edc22e
正如您可能看到的,这最多只能工作到 2048。之后,它们共享相同的颜色。
因此,如果您打算超过 2048,则可能需要使用光学字符识别库。这会更慢,但可能会允许任何最大值,只要它可以被解析。 There are quite a few posted here.
字体似乎是 Clear Sans
。
所有颜色和字体均取自 the game 的电子表格。
最近,我的朋友向我提出挑战,要我制作一个可以玩 Java 中著名的 2048 游戏的 AI。我做到了,它工作了几分钟,然后就卡住了。经过一些调试,我意识到它没有正确读取板,它认为 32 是 1024。为了解释它为什么这样做,我必须首先解释它是如何获取屏幕上瓷砖的值的。
它首先让用户在游戏板周围画一个正方形。这样做是为了告诉程序游戏在屏幕上的位置。然后它生成 16 个点,每个点位于一个单独的图块中。使用机器人 class,它将这 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}
提前致谢:)
完成此操作的一种方法是弄清楚每个图块代表的颜色。这假设您使用的是原始版本。
- 无图块:
#cdc1b4
- 2:
#eee4da
- 4:
#ede0c8
- 8:
#f2b179
- 16:
#f59563
- 32:
#f67c5f
- 64:
#f65e3b
- 128:
#edcf72
- 256:
#edcc61
- 512:
#edc850
- 1024:
#edc53f
- 2048+:
#edc22e
正如您可能看到的,这最多只能工作到 2048。之后,它们共享相同的颜色。
因此,如果您打算超过 2048,则可能需要使用光学字符识别库。这会更慢,但可能会允许任何最大值,只要它可以被解析。 There are quite a few posted here.
字体似乎是 Clear Sans
。
所有颜色和字体均取自 the game 的电子表格。