【问题标题】:I've made an unbeatable Tic Tac Toe AI, but I'd want to make it "dumber" [closed]我制作了一个无与伦比的井字游戏 AI,但我想让它“更笨”[关闭]
【发布时间】:2015-09-18 11:55:35
【问题描述】:

我使用以下规则制作了井字游戏 AI:(https://en.wikipedia.org/wiki/Tic-tac-toe)

获胜:如果玩家连续获得两个,他们可以放置第三个以获得连续三个。

格挡:如果对手连续两个,玩家必须自己出第三个来格挡对手。

分叉:创造一个机会,让玩家有两个获胜威胁(两条未阻挡的 2 线)。 阻挡对手的叉子:

  • 选项 1:玩家应该连续创造两个来迫使对手防守,只要这不会导致他们创造一个叉子。例如,如果“X”有角球,“O”有中锋,而“X”也有对角角,则“O”必须不打角球才能获胜。 (在这种情况下玩角球会为“X”赢得一个分叉。)

  • 选项 2:如果存在对手可以分叉的配置,则玩家应阻止该分叉。

中心:玩家标记中心。 (如果这是游戏的第一步,在角球上玩会给“O”更多犯错的机会,因此可能是更好的选择;但是,完美玩家之间没有区别。)

对角:如果对手在角球,则球员打对角。

空角:玩家在角落广场上比赛。

空方:玩家在 4 条边中任意一条的中间方格中进行游戏。

所以现在,我想实现某种系统,动态地改变它的难度。

【问题讨论】:

  • 添加一个随机数生成器。选择招式时,使用RNG判断是否会选择随机招式,而不是选择最优招式。
  • 我认为你在这里指的是人工无智能:-)
  • 人为的无知?
  • 这里列出了 6 条规则。您可以让级别 1 只知道第一条规则,如果不适用则随机播放,级别 2 可以知道前两条规则,如果不适用则随机播放,依此类推。
  • 我曾经在集市上和一只鸡玩过井字游戏,也无法击败。

标签: c# artificial-intelligence tic-tac-toe


【解决方案1】:

要构建一个不完美的 AI,你可以根据它们的好坏来排序所有可能的动作,然后并不总是选择最好的。

最好的应该始终是您的规则列表中给出的那个,但您必须定义所有其他组合的值(即,如果有可能将第三个组合放在一排,则玩角球,这不是角等)。

【讨论】:

    【解决方案2】:

    您可以根据难度应用上述规则的一部分,例如:

    简单 - 格挡、空角、空边、获胜

    Medium - Block, Center, Empty Corner, Empty Side, Win

    硬 - 阻挡,中心,空角,空边,对角,获胜

    Insane - Block, Fork, Center, Empty Corner, Empty Side, Opposite Corner, Win

    这不会太难实现,只需添加绑定到难度单选按钮的类型枚举,该单选按钮在启动时会停用。然后检查每项检查的难度:

    If(some stuff && difficulty.In("HARD", "INSANE")) 
        OppositeCorner();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多