当前位置:网站首页 > 游戏攻略 > 正文

2048怎么玩高分(高分攻略与技巧详解)

mxj 发布:2023-09-19 14:09:44 315


1。导言

很多人都玩过2048,所以我比较守旧,因为我一直很不屑这种单机游戏。但是在某一天泡脚的无聊时间里,我拿着老婆的手机,左看右看,莫名其妙的打开了2048。嗯(表示踌躇等)...这真是一个消磨无聊时间的好游戏。通过滑动,每一行或每一列中相邻且相同的数字相加得到一个最大值。最终数字越大,分数越高!所以我在想,是不是可以有一定的套路来帮助我们决定每一步该往哪个方向滑,就像魔方一样,从而得到最好的结果?

2。2048怎么玩

2048是在4times4格子里玩的游戏。框的每个位置可能是空,也可能是有数字的框。

游戏开始时,会在格子上随机位置生成两个方块,数字为2或4。每个方块都有10%的几率是4,否则就是2。

通过向某个方向(上、下、左或右)移动所有的方块来玩游戏。这样做时,所有彼此相邻并一起移动的相同值的方块将合并成一个新的方块,这个方块的值等于前两个方块的和:

小游戏2048最佳算法怎么实现?思路全解析

滑动后会在随机位置生成一个新的方块。新的魔方有90%的几率是2,10%的几率是4。

然后,继续游戏,直到格子中不再有可移动的方块。

从逻辑上来说,这个游戏的目标是达到一个值为2048的方块就结束了。但是,我们从未停止,我们可以继续打比赛,争取更大的胜利。理论上盒子的最大值是131072。

3。问题描述

要解决这个游戏,就是刺少的问题。因为我们不仅要正确预测每个新方块产生的位置,还要正确预测它是2还是4。这是一个随机事件,理论上不可能每次都预测正确。

所以,一个算法不可能每次都能轻松正确地解决难题。我们可以尽可能地玩好这个概率游戏,确定每一步的最佳操作。

在任何时候,我们只能采取四种行动,然后面临的挑战是确定这四种措施中的哪一种会达到最佳的长期效果。

我们的算法基于[Expectimax]算法,这是[Minimax]算法的一个变种,但是树的路由会根据它们的可能性进行加权。

本质上,我们把游戏看成一个双人游戏:

  • 玩家1(人类玩家)可以向四个方向之一移动方块。
  • 玩家2(电脑玩家)可以将方块放置在方块的任意空白位置。
  • 基于此,我们可以根据每个动作发生的概率,为其生成一个结果树。然后,这可以为我们提供所需的详细信息,以确定什么样的人事行动可能会产生最佳结果。

    3.1。游戏流程图

    游戏的一般流程:

    小游戏2048最佳算法怎么实现?思路全解析

    我们可以在添加随机方块的过程中看到游戏的随机性。我们不仅要找到随机的正方形来添加正方形,还要为它们选择一个随机值。

    那么,我们面临的挑战就是在确定下一步的时候,要确定做什么。这是我们玩游戏的算法。

    总的来说,看起来很简单:

    小游戏2048最佳算法怎么实现?思路全解析

    我们需要做的是模拟每一种可能性,确定哪一种滑法给出最好的结果,然后使用它。

    因此,我们现在简化算法来模拟任何给定的运动,并为结果生成一个分数。

    这是一个由两部分组成的过程。第一步,看能不能动。如果不能移动,以0分提前终止。如果我们可以移动,那么我们将继续使用真正的算法,其中我们将确定移动的效果:

    小游戏2048最佳算法怎么实现?思路全解析

    3.2确定下一步

    到目前为止,算法的主要部分是模拟滑行,但关键问题是:如何给每一个可能的动作打分。这是Expectimax算法发挥作用的时候了!

    我会模拟两个玩家所有可能的动作,分几步走,看哪一个能带来最好的结果。

    对于人类玩家来说,只有上、下、左、右四个动作。 对于计算机,在空白色位置随机放置2或4个方块:

    小游戏2048最佳算法怎么实现?思路全解析

    这个算法是递归的,每一步递归只有在距离真实游戏中的实际移动有一定深度时才会停止。这会导致流程图循环回自身,但实际上我们会这样做:

  • 1。如果在极限深度,停下来计算当前模拟网格的分数。
  • 2。所有可能动作的计算机模拟:模拟任何可能的人类玩家动作,返回人类动作,计算得分。
  • 3。将模拟动作计算出的分数相加,然后对动作的可能性进行加权。
  • 在这个操作之后,我们将所有计算出的分数相加,这就是我们要从当前游戏棋盘做出的移动的最终分数。因为我们进行了四次操作(从当前游戏界面开始,每一个可能的动作都得到了一次),所以最终得到了四个分数,其中最高分就是应该做出的动作。

    3.3。得分

    至此,剩下的就是计算格子的分数了。但是我们仍然需要考虑如何从这个位置继续得分。

    加上几个因子和适当的权重,可以实现很多方法。例如:

  • 空方块数
  • 可能合并的次数mdash,即同一个数在两个相邻位置的次数。
  • 每个盒子的最大值
  • 所有平方和
  • 正方形的奇异性mdash决定了正方形的结构,使得正方形的值在一个方向上增加。
  • 4。伪代码

    现在我们知道了算法的工作原理,下面我们来探究一些详细描述算法的伪代码。

    我对游戏的实际玩法不感兴趣,对确定移动的算法有点兴趣,就从这里开始吧:

    小游戏2048最佳算法怎么实现?思路全解析

    现在是时候从第一个盒子开始,模拟每一个可能的动作,返回得分最高的那个。所以我们需要为新模拟的方块生成分数。

    因为使用了递归算法,所以我加了一个深度限制来阻止它,否则可能会无休止的运行。

    小游戏2048最佳算法怎么实现?思路全解析

    小游戏2048最佳算法怎么实现?思路全解析

    这是另一种递归,模拟每个人移动一定数量的步数,确定哪些移动可以得到最好的结果。

    剩下的唯一事情就是计算移动后每个方块的最终得分。当然,没有完美的算法,不同的因素会导致不同的结果。

    小游戏2048最佳算法怎么实现?思路全解析

    5。性能优化

    到目前为止,我们有一个算法试图解决博弈问题,但是效率很低。由于流程的特点,总会有一些重复。

    我们在上面的算法中做了一些优化,不处理对游戏没有影响的移动。不过也有其他方法可以减少工作量,比如跟踪累计移动概率,移动概率太低就停下来。

    我们还可以动态确定深度时间的限制。上面伪代码的硬编码极限是3,但是我们可以在计算之初根据网格的形状动态计算极限

    另外,因为我们可以多次重访同一网格的位置,所以我们可以记住这些位置并缓存它们的分数,而不用每次都重新计算。[/s2/]潜在的,我们可以提前生成每个块的可能位置,但是最多有2048个块,281,474,976,710,656个可能位置,所以这个可能不可行。

    但是,我们能做的最重要的优化就是调整生成网格分数的算法。评分的因素和权重与我们算法的表现直接相关。

    版权说明:如非注明,本站文章均为 零度游戏网 原创,转载请注明出处和附带本文链接;

    本文地址:http://www.00line.com/gamegl/137283.html


    < img src="http://www.00line.com/zb_users/theme/tx_app/style/img/gg1.jpg">
    < img src="http://www.00line.com/zb_users/theme/tx_app/style/img/gg1.jpg">

    分享到

    温馨提示

    下载成功了么?或者链接失效了?

    联系我们反馈

    立即下载