问题标签 [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.
python - 如何在pygame中分配图像
所以我在 python (pygame) 中做 2048 游戏,它已经在工作,但我想用我制作的一些图像替换数字,但我做不到。如果有人能帮助我,我将不胜感激。提前致谢。
我试过这个(其中j
和k
是数字的行和列; str(value(game,j,k))
是中的值j,k
;wood
是我上传的图像的名称)
在这种情况下,我想用木质图像替换 2
c++ - 2048游戏中的undo操作实现
我已经用 C++ 实现了 2048 游戏,github 链接:2048
为了实现撤销操作,即回到之前的游戏状态,我维护了一个用于之前的棋盘配置的矩阵,但是如果我允许连续进行许多撤销操作,我就无法维护那个数量的矩阵。
有什么方法可以改进这种方法?
我认为的一种方法是只保留以前的移动(上、下、左或右),但只有这些信息无助于重新生成以前的状态,如果我在这种方法中遗漏了什么或者可以扩展,请建议一种方法来做到这一点。
python - python 2048 实现
我正在阅读 2048 游戏的代码并遇到以下代码段
根据我的理解,游戏是一个矩阵,它被传递给一个函数,该函数执行多个函数以在游戏中预先形成逻辑。我无法理解这条线
done 是一个布尔变量。
我的另一个疑问是
Temp 是矩阵的临时变量。boolean = True/false OR Matrix 这对我来说没有意义。请帮助我使用以下语法,我是 python 新手。谢谢
python - 在python中相互分配两个自变量的问题
我正在开发一款 2048 游戏并尝试构建一个停止条件。但是面临两个变量的一些问题。我尝试的想法很简单——当两个矩阵值(一个保存当前 4x4 板值,另一个保存上一步的值)彼此相等时停止执行。
所以基本上代码是这样的。
这是执行游戏的一个步骤的方法,并且该方法被重复调用,直到获得上面提到的停止标准。问题是当我尝试这种方式时, self.prev_board 值在调用 self.populate() 之前和之后发生变化。只是不明白发生了什么。
输出是,
PS:self.next_move(direction) - 进行下一步移动,self.populate() - 在矩阵中填充一个新的随机值。
reactjs - 尝试用 React 制作 2048 游戏。状态中的数据在不应该发生变化时发生了变化
这是我的代码仓库https://github.com/540376482yzb/2048game_react
这是我的现场演示https://objective-fermat-0343a3.netlify.com/
游戏的当前状态只向左和向右。
但是,当没有移动时,它会在按下左箭头键时生成新数字。已识别的问题this.state.gridData
在我运行之前被翻转,this.diffGrid(grid)
因此它将始终返回 true 并添加新数字。
这个问题的嫌疑人是:
或者
有人能告诉我我在哪里做错导致状态突变吗?
python - TensorFlow 神经网络作为 API?
我正在为游戏 2048 编写 AI。目前,我可以从浏览器中提取游戏状态并将动作发送到游戏,但我不知道如何将其与 TensorFlow 集成。该项目的性质不利于训练数据,所以我想知道是否可以通过游戏状态,让网络抛出一个动作,运行这个动作,重复直到游戏结束,然后有培训吗?
javafx - 使用 javafx 中的关键交互修改接口
我正在尝试使用 JavaFX 编写 2048 游戏,但遇到了问题。
所以在这里我打开用 firstContent 初始化的窗口(基本上它创建一个空图块数组,并用 2 或 4 个随机填充其中两个),显示它并开始监听按键。这个想法是为每个箭头键(UP DOWN LEFT RIGHT)设置一个行为,这将相应地移动图块。这是通过以下 createContent() 方法完成的:
现在的问题是:当应用程序运行时,如果我按下向下箭头,我会在我的终端上得到“received DOWN”文本,就像我按预期那样多次按下键。但是如果我按下向上箭头,应用程序只会收到一次,并且应用程序似乎被冻结(这意味着如果我再次按下,什么也不会发生)。正如您可能猜到的那样,我希望能够为每次按键调用我的方法,以便能够移动我的图块并最终将它们组合在一起以获得可播放的 2048 版本......有人知道我的应用程序为什么会冻结吗?
如果需要,我可以提供其他代码,但我认为我提供了必要的。只需知道 firstContent() 现在的工作原理与 createContent 基本相同,只是它生成两个随机数来获取游戏的第一个图块。
在此先感谢您的帮助。
c# - 如何在我的游戏中保存和加载进度?
我正在开发一款 2048 游戏,但在保存和加载瓷砖位置时遇到了问题。每个人都知道游戏场的样子,有行有列。因此,每块棋子都有行索引 ( indRow
) 和列索引 ( indCol
),它们设置了棋子在游戏场上的位置。如何在游戏中保存此索引以在下次启动时加载它?
我的 GameManager 脚本 =
java - 2048变更检查方法java
我正在尝试用 java 编写一个 2048 游戏。我正在尝试使它检查板是否已更改,如果已更改,它将添加到移动计数器并在板上添加一个数字。否则它不应该做任何事情。我遇到了一个错误,检查它是否已更改的方法每次都返回 true,我似乎无法弄清楚原因。
这是我的 isChecked 方法,如果电路板已更改,则该方法应返回 true,否则返回 false。
下面是处理左移、组合等的方法。上下左右基本相同,只是稍微改变了方向,所以我决定不将它们包含在这篇文章中,因为我觉得它们没有必要
addNum() 只是一个将数字添加到棋盘上随机空位置的函数。board 是类变量(它们都在同一个类中),它是一个代表游戏板的 2d int 数组。
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
,但我真的看不到这里发生了什么。