问题标签 [2048]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
893 浏览

artificial-intelligence - 如何在使用 minimax 算法实现 2048 AI 代理中应用 alpha-beta 剪枝?

我正在为 2048 年开发一个 AI,并且即将应用 minimax 算法。

但是,2048 的搜索树实际上就像没有 Min 角色的 Expectiminimax 树。我想知道如果我没有 Min 角色,我如何在实践中应用 alpha-beta 修剪?

如果我不应该在这种情况下应用 alpha-beta 修剪,我该如何减少无用的搜索分支?

任何想法将不胜感激。谢谢你。

0 投票
0 回答
140 浏览

c - C - 查看游戏是否达到“GameOver”点的函数。(2048副本)

我正在用 C 编写一个 2048 游戏副本。但我无法弄清楚游戏结束功能。我有这个结构:

这是我给棋盘坐标的函数:

只需使用使用值 bloco[i].[x]/[y] 的函数将它们放在屏幕上。这是我的“GameOver”函数,在其当前状态下: PS:“quant”整数接收 16 值。如果一个块是空的,则它的值为 0。如果是“游戏结束”,则函数返回 1。

你们能帮帮我吗?对不起我的英语不好。

谢谢。

0 投票
2 回答
130 浏览

c - 2048年的C,搬家的问题

我正在用 C 语言制作 2048 游戏,我需要帮助。移动是通过按W, A, S,D键进行的,例如W向上移动,S向下移动。

但是,在每封信之后,您都必须按下enter才能接受。我怎样才能让它在不按的情况下工作enter

0 投票
1 回答
425 浏览

matlab - 用matlab编程2048

我实际上是 matlab 的新手并尝试编写这个游戏......问题是当我输入 2 或 6 时,我的程序必须在 2 和 4 之间添加一个随机的新数字而不是零,但它没有......请帮助我找出问题出在哪里...我几乎可以肯定 for 循环是正确的,我猜问题出在 while 循环中...对不起我的语言...谢谢

0 投票
0 回答
1619 浏览

artificial-intelligence - 2048 AI:Expectimax 比 Minimax 更好?

我正在构建一个 2048 AI,它导致了一个相当奇特的观察(对我来说很奇怪)。
优化现在还没有达到标准(再加上代码是用 python 编写的),这让我只能达到 3 步(层)的深度。

使用这两种算法玩一些游戏后的总结

从结果中可以明显看出,就产生的结果而言,Expectimax 比 minimax 具有相当的优势(在 minimax 中没有 alpha-beta 修剪可以看到类似的结果)。两者都使用相同的评估函数,并且不会继续超过 3 步。AFAIK,极小极大应该在此类游戏中发挥最佳效果,但这里似乎并非如此。我的问题是,这种观察是由于以下事实:

  1. 我没有深入到搜索树?
  2. 2048 是一个随机游戏,这会阻碍 minimax 的性能(或提高 expectimax 的性能)?
  3. 对手(2048 游戏逻辑)没有达到最佳状态(90-10 % 的机会放 2-4 个牌,随机对手)(如果是,那么为什么这会影响 minimax 的性能)?
  4. 还有什么对我来说不明显的吗?
0 投票
2 回答
257 浏览

2048 - 什么时候在游戏 2048 中没有创建新图块?

我是Java的新手。我正在尝试在 NetBeans IDE 中创建游戏 2048。到目前为止,我已经设法创建了以下内容:

  1. 合并相同的瓷砖(按键盘箭头时)。
  2. 移动瓷砖(按键盘箭头时)。
  3. 以 90/10% 的几率在 2/4 的随机位置创建一个新图块。

但!

唯一让我无法完成游戏的是创建规则:游戏何时停止创建新图块?在下图中,我展示了一些来自真实游戏的示例,当游戏阻止玩家在按下向下箭头时创建新图块时: 示例

这同样适用于其余方向和键盘键(左、右、上)。

显然,当最后一行的一部分被瓷砖填满时,玩家在按下时无法创建新的瓷砖。或者如果填充了两行,或者三行。

但是该规则有任何算法吗?

屏幕上是否有特定数量的图块阻止创建新图块?

或者是否有一个特定的得分步骤来创建预防?

0 投票
2 回答
2915 浏览

python - Python:证明 NumPy 数组的合理性

请我有点新Python,它一直很好,我可以评论说 python 非常性感,直到我需要移动一个 4x4 矩阵的内容,我想用它来构建一个 2048 游戏演示在这里我有这个功能

如果你这样调用它,这就是这个函数的作用

它将覆盖左侧的零并产生

请我需要有人帮助我以一种numpy我相信会更快并且需要更少代码的方式来帮助我(我在深度优先搜索算法中使用),更重要的是实现cover_up,cover_downcover_left.

0 投票
1 回答
1176 浏览

python - 2048 游戏 - AI 的平均得分不能超过 256

我正在尝试使用 MiniMax 和 Alpha-Beta 修剪实现 2048 年的 AI,基于蛇策略(参见本文),这似乎是最好的单一启发式方法。

不幸的是,人工智能在大多数游戏中都达到了 256,这并不比空单元启发式算法好多少。我已经在这里阅读了相关主题,但我自己找不到解决方案。

这是代码:

grid是一个对象,grid.map是一个二维数组(列表列表)。

我有什么错误吗?如何改进代码?

添加游戏日志:https ://pastebin.com/eyzgU2dN

0 投票
0 回答
970 浏览

c++ - 2048游戏中检查游戏是否结束的功能

我花了几天时间编写 2048 游戏。而现在我做了大部分功能,只有一个,测试游戏是否结束。为了编写这个游戏,我的想法是首先将相同的数字与函数合并up(down, left or right)_merge,并使所有数字都转到用户使用函数按下的箭头方向all_go_up(down, left or right)add_new_number然后使用该功能添加一个新号码。

这是我上面提到的一些代码:

我还有一些其他功能可以检查网格是否已满等。我也尝试过使用一些while()for()做到这一点。但是我不知道我在哪里写错了代码来测试游戏是否结束。

我希望我能很好地表达我的问题。希望在test_fail不更改太多代码的情况下获得一些对函数进行编码的建议。谢谢。

0 投票
1 回答
44 浏览

java - 将 N*N 矩阵原地旋转 9à 度

我正在尝试用 Java 制作控制台 2048 游戏,我想实现板向右旋转 90 度,我在网上搜索并实现了一个功能,但它并没有交换每一行和每一列,可以有人请查看我写的内容并帮助我查明代码中的实际错误。

这实际上应该使第一行成为最后一列,最后一列成为最后一行等等......

我实际上得到的是:

正如您所看到的,最后一行正确交换了,但是很多值不在正确的位置,我找不到原因。任何帮助将不胜感激