项目介绍

前几天开发的象棋游戏程序有了一些新的进展,添加了一些新的功能:将军检测与提示、自动判和(双方均无过河子)、悔棋、棋谱导入与导出(自定义棋局),不过源代码也有了很大的改动,主要的源码部分由原来的600多行加到了1000多行,还有其他一些类和头文件的改动就不细说了。可以看看我上一篇博客:用C++实现中国象棋_Shuang_Zhu的博客-CSDN博客,里面有关于本项目的主要介绍,这篇文章主要说说新增的一些功能

效果展示

主菜单界面

以下是棋谱的文本格式

文件流那里测试了好久。。。才终于成功地把这些中英文字符一个个地读入程序中了 ,其中不乏遇到各种乱码~

下面是棋谱导入后的效果

注:棋谱的编码必须是要ANSI的(看右下角),如果被转成了utf8或者GBK,需要改回来,不然导入棋谱以后内存会直接炸掉,之前测试的时候下午还好,到了晚上突然炸了,找了半天才发现是编码的原因,Windows记事本貌似会偷偷强转你的编码

保存棋谱

每次对局结束后会询问是否需要保存棋谱

将军检测与提示

在被将的情况下系统会提示你应将,并告诉你正在将军的棋子,当然,玩家也可以选择不应将(没做强制应将的功能)

自动判和

如果过河子力全部死亡,系统会自动判和

悔棋功能

每次悔棋都会还原到上一回合(红方走一着,黑方走一着算一回合),因此悔棋后下一步还是轮到悔棋方走,棋谱的记录用的是栈存储,每一步都非常符合栈的特性

项目源码

可以看看上一篇文章,这次新增功能后,代码也同步到github上了,如有需求可自行拷贝

GitHub - LunarMeal/Chess

更多功能

后面可能还打算做一些 长将检测,长捉检测之类的,还有一些普通AI,不过越到后面,算法越难,尤其是长捉要判断的条件更多,每走一步都需要遍历所有棋子,还需要检测是否循环着法(长将,长捉都是建立在循环基础上的),棋子是否为有根子力(被己方棋子保护着),长捉子是否为兵卒类、将帅类(这两类棋子是允许长捉的)、子力价值判断(炮长捉有根车依然是长捉)等等

用C++实现中国象棋(2.0)相关推荐

  1. 中国象棋-1.0开源啦

    代码下载地址:https://code.csdn.net/FansUnion/chinesechess-v1 /** * 项目名称: FansChineseChess * 版本号:1.0 * 名字:雷 ...

  2. 中国象棋程序elephanteye(象眼) v2.0 官网

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  3. JS 中国象棋程序(0):界面设计

    "JavaScript中国象棋程序" 这一系列教程将带你从头使用JavaScript编写一个中国象棋程序.希望通过这个系列,我们对博弈程序的算法有一定的了解.同时,我们也将构建出一 ...

  4. 创建一个中国象棋的阿法狗——阿法象(0)

    创建一个中国象棋的阿法狗--阿法象(0) 最近,阿法狗与李世石九段的人机大战深受关注.我就借着这股东风来写一个系列博客--<创建一个中国象棋的阿法狗--阿法象>. 早在几年前,就在一本书上 ...

  5. BZOJ 1801 [Ahoi2009]中国象棋(线性动规)(洛谷P2051)

    题意:就是在n*m的格子中放"炮"(中国象棋中的棋子)问有多少种放法,使得没有任意的两个炮相互攻击 思路:我们很容易的得到一列或者一行中最多放下两个炮(我也只能得到这些了,满脑子状 ...

  6. java象棋无框架版_Java版中国象棋

    /* *中国象棋Java *作者:yanick *源文件:Chess.java *最后修改时间:2006-11-1 *添加功能:实现了当前棋局的保存 *Chess.java */ import jav ...

  7. P2051 中国象棋

    P2051 中国象棋 题目描述 这次小可可想解决的难题和中国象棋有关,在一个N行M列的棋盘上,让你放若干个炮(可以是0个),使得没有一个炮可以攻击到另一个炮,请问有多少种放置方法.大家肯定很清楚,在中 ...

  8. AHOI2009 中国象棋

    题目链接 题目描述 在一个N行M列的棋盘上,让你放若干个炮(可以是0个),使得没有一个炮可以攻击到另一个炮,请问有多少种放置方法. (在中国象棋中炮的行走方式是:一个炮攻击到另一个炮,当且仅当它们在同 ...

  9. VC++源码分析 - 中国象棋源码分析

    下载自 http://www.newxing.com/Code/VC/game/1750.html 运行界面如下: 看下类图: 资源: 主对话框: 源码说明: 本人机对弈程序采用了多种搜索算法.以下是 ...

最新文章

  1. 斯坦福:「目标检测」深度学习全面指南
  2. 使用 shell 脚本对 Linux 系统和进程资源进行监控
  3. 使用eclipse自带制作帮助系统
  4. EasyUI中Dialog对话框的简单使用
  5. IoC反转控制初步认识
  6. 关于文件中的0D、0A
  7. 计算机双硬盘安装需要跳线吗,双硬盘安装图文教程
  8. 网络安全辅助工具:免费MD5解密网站
  9. 如何绕过mac地址过滤_如何通过路由器来过滤无线MAC地址
  10. USB3300速度调试
  11. mongodb默认的用户名密码_MongoDB 用户名密码登录
  12. 股票量化学习——复权因子计算
  13. c#自定义日历插件,给重要日期添加色彩。以及系统自带的monthCalendar日历插件
  14. luogu_1378 油滴扩展
  15. 用App Designer 制作2048小游戏
  16. Flutter 实现光影变换的立体旋转效果
  17. linux查看sriov端口,sriov查看pf-vf对应关系
  18. 小姐姐拯救计划之我的NAS有ipv6域名之蛇皮操作
  19. GetDataBack Pro V5.57 功能强大且专业的数据恢复
  20. thinkPHP/fastadmin topthink/think-queue 多进程

热门文章

  1. [sdm660 android9.0]摄像头调试
  2. 苹果系统Mac能安装office吗
  3. 利用 UMA 使硬件加速器可直接用于 TVM
  4. Arcpy发布地图服务
  5. 第一章 初入博客——APK禁止在模拟器上使用
  6. Jlink_V9固件修复教程
  7. Mac(1) 环境配置
  8. 郑清 - 日常作息表 - September - 2019
  9. RS-485总线与CAN总线理解
  10. 因果图,鱼骨图,石川图