井字棋的小研究

作者: 继续海阔天空 | 来源:发表于2016-07-06 13:17 被阅读259次

相比之下3×3连子棋(也叫做井字棋,英文名:Tic-Tac-Toe)其实还并不算复杂,3×3的棋盘最多可以放9个棋子,先下棋的人最多可以下5颗棋子,也就是说机器最多可以预推出接下来的9步的所有可能性。

如果不考虑游戏规则的话,井字棋总共有 19,683种可能的棋面布局,也就是说在棋盘上的9个位置分别都可以防止黑棋,白棋或者不放置任何棋子(3^9),所有的棋局可能是362880(如果不把追求获胜的判定算进去的话,9步下完,第一步是有9个格子选择,第二步是有8个格子选择……:9!=362880),但是考虑到

  • 一旦有一方连成三子,则此局棋结束
  • 如若白棋先走,则棋局之中,总是白棋比黑棋多一子或白棋黑棋数量相同。

实际的可能情况会小很多,只有138种棋局了。91种棋局是执先者胜,44种棋局是执后者胜,而只有3种情况是平局。(而在实际的棋局过程中,出现平局的概率是非常高的,但是出现平局概率高并不意味着平局的花样就多),我们甚至可以将这三种平局的局面列出来。

下面两幅图都是在http://playtictactoe.org/ 网站上实际对战过程中出现的棋局:

棋局一 棋局二

实际上这两幅图中棋局外表看似不同,但其实是互为镜像的,如果将下面的图旋转180度,就能够得到如上面图一样的棋局。

因此实际上平局的所有可能 棋局只有

棋局一 棋局二 棋局三

相关文章

  • 井字棋的小研究

    相比之下3×3连子棋(也叫做井字棋,英文名:Tic-Tac-Toe)其实还并不算复杂,3×3的棋盘最多可以放9个棋...

  • 井字棋

    package newPaca; import java.util.Scanner; public class j...

  • Vue井字棋

    v-on:click="onClidkCell(0, $event)有v-on:click的绑定事件,有$even...

  • 井字棋源码

  • 设计井字棋

    1、前言 一般的系统设计题都有主体、input、output。但是游戏设计题可能有点违反常规,它主要有以下几点:玩...

  • C++实现的基于α-β剪枝算法的井字棋游戏

    一、井字棋游戏规则 “井字棋”游戏(又叫“三子棋”),是一款十分经典的益智小游戏,操作简单,娱乐性强。两个玩家,一...

  • JavaScript新手练习——井字棋

    井字棋是一个很简单的游戏,通过穷举,我们轻易的记录井字棋所有可能的走法。因此我们的AI可以实现的能力是 先手:尽可...

  • 多维数组怎么学?看这一篇就够了,带你在游戏中学习。

    tic-tac-toe 游戏 (井字棋游戏) 大家小时候应该都玩过井字棋吧,下课之余和同学来上一把,是多么开心。今...

  • R写的三子棋(井字棋)程序

    我家小朋友最近迷上了井字棋,每天都要拉着大人玩两盘,这两天恰好有闲,写个井字棋程序练练手,同时看看能否提起小朋友对...

  • 9.井字棋

    题目内容:嗯,就是视频里说的那个井字棋。视频里说了它的基本思路,现在,需要你把它全部实现出来啦。你的程序先要读入一...

网友评论

    本文标题:井字棋的小研究

    本文链接:https://www.haomeiwen.com/subject/cbkgdttx.html