C++ QT开发人机象棋(评估函数)
每个棋子在当前点的所有可能走的情况用一个容器存储起来,根据搜索的层数输出相应的权值。
在搜索到最底层的时候进行权值的判断,判断的最终结果为棋盘上面的黑棋的棋子分减去棋盘上面的红棋的棋子分。
long long singleGame::calcScore()
{long long redTotalScore=0;long long blackTotalScore=0;//enum TYPE{JIANG,CHE,PAO,MA,BING,SHI,XIANG};static long long chessScore[]={10000,90,45,40,10,20,20};for(int i=0;i<16;++i){if(_s[i]._dead) continue;redTotalScore+=chessScore[_s[i]._type];}for(int i=16;i<32;++i){if(_s[i]._dead) continue;blackTotalScore+=chessScore[_s[i]._type];}return blackTotalScore-redTotalScore;
}
C++ QT开发人机象棋(评估函数)相关推荐
- C++与Qt开发人机象棋(第二部分)
C++与Qt开发人机象棋(第二部分) 项目目录 文件名->(包含)类名1->(包含)类名2 ChessBy ChessBy.pro Headers Board.h – – – Source ...
- C++ QT开发人机象棋(大纲)
目录 1 系统需求分析: 1.1游戏简介: 1.2机器下棋史: 1.3研究内容: 1.4编译环境:QT 2 总体设计 2.1系统功能分析: 1.界面表示 2.鼠标点击 3.棋子走法 4.评估函数 5. ...
- C++ QT开发人机象棋(搜索算法)
使用极大极小值算法,在满足电脑下棋的时候自己的局势能够获得最大权值的情况下判断在当前局势下的玩家的最小的权值,这样能够保证算法最优. 先从一个故事说起,比如说现在有有一个小偷偷了一些物品,小明看到后跟 ...
- C++ QT开发人机象棋(界面表示)
目录 1.1界面表示: 1.1.1棋盘表示: 1.1.2.棋子表示: 2.1界面表示: 2.1.1棋盘绘制 一:作用 二:执行时间 2.1.2棋子绘制 1.1界面表示: 1.1.1棋盘表示: 使用十条 ...
- C++ 与Qt开发人机象棋(第一部分)
MyWidget.h //Hearders #include <QWidget> #include "MyWidget.h" #include <QPushbut ...
- C++ QT开发人机象棋(鼠标点击)
鼠标点击棋子,棋子能够进行相应的操作. mouseReleaseEvent(QMouseEvent *ev) 鼠标点击了以后,我们要知道鼠标点击的这个棋子的横纵坐标和这一点的棋子的id,这个时候需要调 ...
- C++ QT开发人机象棋(剪枝算法)
改变singleGame()里面的_level的值为5的话,程序就会崩溃,很显然由于最大值最小值算法遍历整个棋盘几层的话时间复杂度十分的高,为了优化程序我们就应该减少程序的运行量,那么也就有了剪枝算法 ...
- 使用Qt开发中国象棋(一):概述
最近看了一些关于中国象棋的实现书籍,里面讲述了如何开发一个完整的中国象棋游戏,看了里面的内容,感觉里面的内容特别巧妙的,比如书中提到了用位棋盘来表示中国象棋的棋盘以及一些精妙的走棋算法.基于这些,自己 ...
- 使用Qt开发中国象棋(三):走棋着法列表
在一个完整的中国象棋游戏中,一般界面上都显示了中文着法,为了简单起见,我开发的这个用了两个着法列表,红方一个,黑方一个,其实用一个就够了,只是感觉那样稍微会麻烦些.着法列表显示了每一步的走棋.下图是着 ...
最新文章
- java添加删除用户信息泄露_java删除用户404错误!!神奇!增改查都没问题啊!!...
- How to allow/block PING on Linux server – IPTables rules for icmp---reference
- 程序猿段子_【新年新气象】今年,能为程序员男友做点什么?
- 关于编译FFMPEG的初级教程
- int linux 原子操作_linux c++编程之多线程:原子操作如何解决线程冲突
- 百度seo排名规则_百度关键词seo优化排名如何上首页
- 腾讯视频怎么禁止别人登录我的会员
- Jquery Highcharts 参数配置说明
- java 异步上传一张图片,java异步上传图片示例
- jQuery点击图片弹出大图遮罩层
- 访问tomcat服务器文件路径,外置tomcat映射服务器路径以及springboot内置tomcat映射路径配置...
- Emacs启动时窗口全屏两种方法
- cannot register datanode 0.0.0.0:1002,because current license expired time is
- 微软面试智力题 (附答案)
- 用C#实现汉字转化为拼音
- 车载系统模块资料整理
- 华为路由器 wifi网速慢解决办法
- 古典恺撒移位密码破解
- 计算机网络技术基础教程,计算机网络技术基础教程材料.pdf
- 不服不行!盘点那些编程界的天才少年,11岁参加国际比赛,靠奖金赚了40万美金
热门文章
- [翻译]-马丁·福勒-page对象
- Android 腾讯手机管家 报毒 a.gray.PiggyGoldcoin.a
- Android开发UI新技能,你get这个新技能了吗?(附源码详解)
- 冒着被打风险,揭秘软件测试工程师面试套路和暗语
- React Native常用第三方组件汇总【建议收藏】
- 一首励志的歌曲《我相信》
- 黑苹果 服务器系统安装教程,黑苹果安装教程,详细教您黑苹果怎么安装
- 强制删除五笔字型输入法
- Android 报错处理:All flavors must now belong to a named flavor dimension,Learn more at https://d.android
- 【正点原子STM32连载】第六章 新建寄存器版本MDK工程 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1