问题标签 [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 投票
0 回答
103 浏览

python - 如何在pygame中分配图像

所以我在 python (pygame) 中做 2048 游戏,它已经在工作,但我想用我制作的一些图像替换数字,但我做不到。如果有人能帮助我,我将不胜感激。提前致谢。

我试过这个(其中jk是数字的行和列; str(value(game,j,k))是中的值j,kwood是我上传的图像的名称)

在这种情况下,我想用木质图像替换 2

0 投票
2 回答
528 浏览

c++ - 2048游戏中的undo操作实现

我已经用 C++ 实现了 2048 游戏,github 链接:2048

为了实现撤销操作,即回到之前的游戏状态,我维护了一个用于之前的棋盘配置的矩阵,但是如果我允许连续进行许多撤销操作,我就无法维护那个数量的矩阵。

有什么方法可以改进这种方法?

我认为的一种方法是只保留以前的移动(上、下、左或右),但只有这些信息无助于重新生成以前的状态,如果我在这种方法中遗漏了什么或者可以扩展,请建议一种方法来做到这一点。

0 投票
0 回答
246 浏览

python - python 2048 实现

我正在阅读 2048 游戏的代码并遇到以下代码段

根据我的理解,游戏是一个矩阵,它被传递给一个函数,该函数执行多个函数以在游戏中预先形成逻辑。我无法理解这条线

done 是一个布尔变量。

我的另一个疑问是

Temp 是矩阵的临时变量。boolean = True/false OR Matrix 这对我来说没有意义。请帮助我使用以下语法,我是 python 新手。谢谢

0 投票
2 回答
520 浏览

python - 在python中相互分配两个自变量的问题

我正在开发一款 2048 游戏并尝试构建一个停止条件。但是面临两个变量的一些问题。我尝试的想法很简单——当两个矩阵值(一个保存当前 4x4 板值,另一个保存上一步的值)彼此相等时停止执行。

所以基本上代码是这样的。

这是执行游戏的一个步骤的方法,并且该方法被重复调用,直到获得上面提到的停止标准。问题是当我尝试这种方式时, self.prev_board 值在调用 self.populate() 之前和之后发生变化。只是不明白发生了什么。

输出是,

PS:self.next_move(direction) - 进行下一步移动,self.populate() - 在矩阵中填充一个新的随机值。

0 投票
1 回答
251 浏览

reactjs - 尝试用 React 制作 2048 游戏。状态中的数据在不应该发生变化时发生了变化

这是我的代码仓库https://github.com/540376482yzb/2048game_react

这是我的现场演示https://objective-fermat-0343a3.netlify.com/

游戏的当前状态只向左和向右。

但是,当没有移动时,它会在按下左箭头键时生成新数字。已识别的问题this.state.gridData在我运行之前被翻转,this.diffGrid(grid)因此它将始终返回 true 并添加新数字。

这个问题的嫌疑人是:

或者

有人能告诉我我在哪里做错导致状态突变吗?

0 投票
1 回答
84 浏览

python - TensorFlow 神经网络作为 API?

我正在为游戏 2048 编写 AI。目前,我可以从浏览器中提取游戏状态并将动作发送到游戏,但我不知道如何将其与 TensorFlow 集成。该项目的性质不利于训练数据,所以我想知道是否可以通过游戏状态,让网络抛出一个动作,运行这个动作,重复直到游戏结束,然后有培训吗?

0 投票
0 回答
48 浏览

javafx - 使用 javafx 中的关键交互修改接口

我正在尝试使用 JavaFX 编写 2048 游戏,但遇到了问题。

所以在这里我打开用 firstContent 初始化的窗口(基本上它创建一个空图块数组,并用 2 或 4 个随机填充其中两个),显示它并开始监听按键。这个想法是为每个箭头键(UP DOWN LEFT RIGHT)设置一个行为,这将相应地移动图块。这是通过以下 createContent() 方法完成的:

现在的问题是:当应用程序运行时,如果我按下向下箭头,我会在我的终端上得到“received DOWN”文本,就像我按预期那样多次按下键。但是如果我按下向上箭头,应用程序只会收到一次,并且应用程序似乎被冻结(这意味着如果我再次按下,什么也不会发生)。正如您可能猜到的那样,我希望能够为每次按键调用我的方法,以便能够移动我的图块并最终将它们组合在一起以获得可播放的 2048 版本......有人知道我的应用程序为什么会冻结吗?

如果需要,我可以提供其他代码,但我认为我提供了必要的。只需知道 firstContent() 现在的工作原理与 createContent 基本相同,只是它生成两个随机数来获取游戏的第一个图块。

在此先感谢您的帮助。

0 投票
1 回答
58 浏览

c# - 如何在我的游戏中保存和加载进度?

我正在开发一款 2048 游戏,但在保存和加载瓷砖位置时遇到了问题。每个人都知道游戏场的样子,有行有列。因此,每块棋子都有行索引 ( indRow) 和列索引 ( indCol),它们设置了棋子在游戏场上的位置。如何在游戏中保存此索引以在下次启动时加载它?
我的 GameManager 脚本 =

0 投票
2 回答
180 浏览

java - 2048变更检查方法java

我正在尝试用 java 编写一个 2048 游戏。我正在尝试使它检查板是否已更改,如果已更改,它将添加到移动计数器并在板上添加一个数字。否则它不应该做任何事情。我遇到了一个错误,检查它是否已更改的方法每次都返回 true,我似乎无法弄清楚原因。

这是我的 isChecked 方法,如果电路板已更改,则该方法应返回 true,否则返回 false。

下面是处理左移、组合等的方法。上下左右基本相同,只是稍微改变了方向,所以我决定不将它们包含在这篇文章中,因为我觉得它们没有必要

addNum() 只是一个将数字添加到棋盘上随机空位置的函数。board 是类变量(它们都在同一个类中),它是一个代表游戏板的 2d int 数组。

0 投票
2 回答
192 浏览

javascript - 2048:使用 lodash/fp 的地图中 reduceRight 的奇怪行为

下面的代码是尝试使用 lodash- fp制作我的 2048 版本(游戏)的开始。我习惯了常规的 lodash,但这是我第一次接触 fp 的味道。

它使用两个函数实现将一行的瓷砖向右推的动作:

  • slide如果有空格(由值 0 表示),则将行向右推。实际上,这相当于把所有的零都放在左边。
  • merge合并成对的相同值的连续图块,生成一个空白空间和一个新的值加倍的图块。(在清除该步骤可能产生的零slide之后第二次调用)。merge

这些函数使用_.reduceRight从右到左迭代图块的方法。

moveLine似乎运作良好。例如,moveLine(game[0])转换[2, 2, 0, 0][0, 0, 0, 4].

奇怪的是,moveBoard(game)(映射moveLine到 4 行)给出了一个奇怪的结果,每次迭代都会变长,就好像前面步骤的结果被附加了一样:

我看到问题来自merge,但我真的看不到这里发生了什么。