Skip to content

a gobang game based on vue2+vue-router2+iview+express+typescript

Notifications You must be signed in to change notification settings

Barry215/Gobang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

4de9b39 · Aug 20, 2017

History

41 Commits
Jul 15, 2017
Jul 8, 2017
Aug 20, 2017
Jun 19, 2017
Jun 19, 2017
Jun 19, 2017
Jun 19, 2017
Jul 15, 2017
Jun 19, 2017
Jun 19, 2017
Jul 4, 2017
Jul 8, 2017
Jul 2, 2017
Jul 6, 2017
Jun 19, 2017
Jun 19, 2017
Jun 19, 2017

Repository files navigation

五子棋游戏

游戏方式

  • 玩家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

About

a gobang game based on vue2+vue-router2+iview+express+typescript

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published