C语言实现中国象棋(Qt实现界面,源码下载,详细注释,易移植)

前言:中国象棋的规则很多人都懂,用C语言做一个中国象棋游戏,其要点是怎么把抽象的规则变成形象、具体的代码。本项目提供详细的实现思路,源码附带大量的注释说明,源码逐步地实现了每一种棋类的走棋规则、吃棋规则,将每一条细化的规则整合起来也就实现了一个完整的游戏规则。

本项目提供两种调试方式,一种是带界面操控(QT实现),一种是终端输入操控。本项目非常适合初学者用以参考学习。

Qt 5.14完整源码下载,点击链接。效果预览:

下载源码:

    源码下载解压后有两个文件夹,分别是QT工程和Dev-C++工程,前者带界面后者是终端输入方式调试。

代码设计:

     两个工程的源码都包含了chess.cppchess.h两个文件,这两个文件实现了象棋的游戏规则,将一盘象棋游戏的所有操作通过接口来实现,非常方便移植到其他的嵌入式平台。下面先对这两个源码文件的部分内容作说明。

typedef struct{
    eChessColour Colour:4;
    eChessClass Class:4;
}ChessPiecesStr;//装载棋子的容器,携带棋子颜色、棋子种类信息


/*由多个棋子容器组成的虚拟棋盘 10(row)*9(col)*/
static ChessPiecesStr CheckerBoard[10][9];

ChessPiecesStr结构体表示一个象棋包含的信息(颜色、棋类),那么可以定义这样一个数组ChessPiecesStr  CheckerBoard[10][9],它代表整个棋盘,10行,9列,每个数组元素代表棋盘的每一个位置上的棋子,如果某个元素的信息是NULL,则代表该位置上没有棋子。我们在游戏过程的走棋、吃棋、悔棋等操作,其实是对数组CheckerBoard里的数据进行操作,然后将操作完的棋盘更新显示出来。

typedef struct{
    ChessPiecesStr ChPs;
    uchar col,row;//位置:列、行
}PickUpChessStruct;//被选中的棋子,携带棋子所在的位置、棋子容器里的信息

PickUpChessStruct结构体表示游戏者当前要操作的棋子,它包含了该棋子的坐标信息、棋色、棋类,这么封装是为了方便实现每一种棋类的走棋规则、吃起规则,下面以炮的走棋规则为例:

bool  MovemenRules_PAO(PickUpChessStruct* pActiveChess,uchar row,uchar col)//【炮】走棋规则
{
    int i,col_min,col_max,row_min,row_max;
    //【炮】走棋规则:走直线,不能跨越棋子
    //穷举法+假设法  要么横着走,要么竖着走,其他都是违规;假设成功了,那么起点到终点之间不能有其他棋子
    if(pActiveChess->row == row){//横着走
         if(pActiveChess->col > col){
            col_min = col
  • 27
    点赞
  • 126
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值