使用极大极小值算法,在满足电脑下棋的时候自己的局势能够获得最大权值的情况下判断在当前局势下的玩家的最小的权值,这样能够保证算法最优。

先从一个故事说起,比如说现在有有一个小偷偷了一些物品,小明看到后跟小偷说如果小偷给他一部分东西他就不报警,并且小明只取一件物品,图中的三个箱子里面分别有两个不同价值的物品,那小偷也说了,你选择箱子,我给你拿物品,这个时候为了获得最大的利益,小明应该选择2号箱子,这样按照博弈的思想,小明和小偷都能够让利益最大化。

那么我们可以把这个思想枚举到我们的象棋上面来:

现在按照两步来说,作为电脑,在第一步下棋的时候选择的肯定是最大分,但是如果说直接用搜索一层的分值来下棋的话,人机象棋的棋力其实是十分十分弱的,那么我们就应该考虑n步人机,按照前面提到的小偷的例子,在电脑下棋的时候,在满足电脑和玩家都是绝顶聪明的情况下进行判断,那么在1这一步,电脑选择的应该是权值最大的,下一步玩家下棋,这时候,电脑应该选择的是人下期完之后的权值的最小值。

C++ QT开发人机象棋(搜索算法)相关推荐

  1. C++与Qt开发人机象棋(第二部分)

    C++与Qt开发人机象棋(第二部分) 项目目录 文件名->(包含)类名1->(包含)类名2 ChessBy ChessBy.pro Headers Board.h – – – Source ...

  2. C++ QT开发人机象棋(大纲)

    目录 1 系统需求分析: 1.1游戏简介: 1.2机器下棋史: 1.3研究内容: 1.4编译环境:QT 2 总体设计 2.1系统功能分析: 1.界面表示 2.鼠标点击 3.棋子走法 4.评估函数 5. ...

  3. C++ QT开发人机象棋(界面表示)

    目录 1.1界面表示: 1.1.1棋盘表示: 1.1.2.棋子表示: 2.1界面表示: 2.1.1棋盘绘制 一:作用 二:执行时间 2.1.2棋子绘制 1.1界面表示: 1.1.1棋盘表示: 使用十条 ...

  4. C++ QT开发人机象棋(剪枝算法)

    改变singleGame()里面的_level的值为5的话,程序就会崩溃,很显然由于最大值最小值算法遍历整个棋盘几层的话时间复杂度十分的高,为了优化程序我们就应该减少程序的运行量,那么也就有了剪枝算法 ...

  5. C++ 与Qt开发人机象棋(第一部分)

    MyWidget.h //Hearders #include <QWidget> #include "MyWidget.h" #include <QPushbut ...

  6. C++ QT开发人机象棋(鼠标点击)

    鼠标点击棋子,棋子能够进行相应的操作. mouseReleaseEvent(QMouseEvent *ev) 鼠标点击了以后,我们要知道鼠标点击的这个棋子的横纵坐标和这一点的棋子的id,这个时候需要调 ...

  7. C++ QT开发人机象棋(评估函数)

     每个棋子在当前点的所有可能走的情况用一个容器存储起来,根据搜索的层数输出相应的权值. 在搜索到最底层的时候进行权值的判断,判断的最终结果为棋盘上面的黑棋的棋子分减去棋盘上面的红棋的棋子分. long ...

  8. 使用Qt开发中国象棋(一):概述

    最近看了一些关于中国象棋的实现书籍,里面讲述了如何开发一个完整的中国象棋游戏,看了里面的内容,感觉里面的内容特别巧妙的,比如书中提到了用位棋盘来表示中国象棋的棋盘以及一些精妙的走棋算法.基于这些,自己 ...

  9. 使用Qt开发中国象棋(三):走棋着法列表

    在一个完整的中国象棋游戏中,一般界面上都显示了中文着法,为了简单起见,我开发的这个用了两个着法列表,红方一个,黑方一个,其实用一个就够了,只是感觉那样稍微会麻烦些.着法列表显示了每一步的走棋.下图是着 ...

最新文章

  1. java 爬中 验证码识别_JAVA爬虫---验证码识别技术(一)
  2. 你写的 Python 代码可以更“瘦”
  3. 稀缺:百分之二的选择
  4. sql相同顺序法和一次封锁法_率土之滨追击战法攻略
  5. WebRTC第六步:下载webrtc
  6. hdu 6168 Numbers
  7. App Engine中的Google Services身份验证,第2部分
  8. AWS服务器上安全组端口设置和访问的问题
  9. 【kafka】消费组 死掉 kafka Marking the coordinator dead for group
  10. Span中显示内容过长显示省略号---SpringCloud Alibaba_若依微服务框架改造_前端基于Vue的ElementUI---工作笔记011
  11. 数字集群通信的业务与功能
  12. 2019年DNS服务器速度排行榜
  13. 人人都可以成为记忆高手--罗马室记忆法则
  14. coffeescript html5,深入浅出CoffeeScript
  15. NB物联网之天翼物联(7)——一次性通过电信NB平台自助测试
  16. IIS HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
  17. TensorFlow通过Cholesky矩阵分解实现线性回归
  18. 新的里程碑,海洋元宇宙AQUANEE即将登陆Gate以及BitMart
  19. sql dateadd 和datediff的用法
  20. oracle12c amm,oracle 11gR2和12C中引入AMM和hugepage的使用

热门文章

  1. 程序员不爱炫富?不,那是你了解的程序员
  2. Swift-ScrollView轮播图的简易封装和使用
  3. Metal 系列教程
  4. HTML5期末大作业:饮食食品主题设计——绿色简洁生鲜超市网站设计(5页) HTML+CSS+JavaScript web前端大二实训大作业
  5. 2021-08-23 多模态反讽识别系列文章阅读(一)
  6. 非计算机专业学生计算机基础知识和应用能力,全国高校非计算机专业学生计算机基础知识和应用能力等级考试大纲...
  7. 由七芒星引出来的——关于142857
  8. Tomorrow never knows? (C程序设计进阶 第2周)
  9. python标准库math中用来计算平方根的函数是_2020超星尔雅网课透过性别看世界完整满分见面课答案...
  10. 请叫我程序员!(一)