Skip to content

Latest commit

 

History

History
executable file
·
59 lines (37 loc) · 1.71 KB

README.md

File metadata and controls

executable file
·
59 lines (37 loc) · 1.71 KB

五子棋游戏

游戏方式

  • 玩家vs人机
  • 玩家vs玩家

具体功能

人机

可以选择白棋或黑棋,先下或后下,与机器人进行五子棋练习

简单版

电脑只搜索当前最佳一点,速度快

困难版

电脑搜索4步之后的最佳子,但是速度慢,尤其手机速度感人

算法实现
  1. 利用了博弈树的极大极小值的思想,分数越高,电脑越有利,玩家越不利

    即电脑从所有低分结果中选出最高分,玩家假设聪明到能从所有高分结果中选出最低分

  2. 由于博弈树的分支会越来越大,呈指数型增长,所以采用AlphaBeta剪枝算法

    即假设min层中,已得最大值为a,则之后遍历的兄弟节点中的子节点一旦出现小于a的值,该兄弟节点就会被裁剪掉

    因为兄弟节点会选择子节点中最小的值作为自己的值,而兄弟节点的上一层需要最大的值,所以该兄弟节点已无用

  3. 虽然有了剪枝,但是速度依旧不快,而且AlphaBeta剪枝依赖遍历所得的最优解,但是从头开始遍历的要很久才会找到最优解,所以我们需要先找到一个最优解,然后再对其兄弟节点计算,这样会剪枝掉更多的节点,这就是所谓的启发式搜索

  4. 关于棋盘评分函数,也就是是各个点的得分总和,每个点的评分函数则是关键,有模式匹配的,有赢法加权的

玩家

  • 查看玩家
  • 邀请玩家
  • 修改昵称
  • 悔棋功能
  • 认输功能
  • 标记新棋
  • 智能提醒

技术方案

vue2+vue-router2+iview+socket.io+webpack+nodejs+express+typescript

使用

cnpm install
//debug
npm run dev
//product
npm run build