QT黑白棋AI项目详解:一种另类的绘制方式

这个项目有启发意义,棋盘不是绘制的,而是图片贴上去的。

考察:坐标,pixmap,黑白棋的逻辑

想了解传统的绘制方式和棋类AI的传统高级方法,请看我关于五子棋的系列文章




开源项目:
https://github.com/zhuimengshaonian66/BlackWriteChess

第一步:

绘制UI



棋盘是一张图,这个项目的难点是找坐标。但是我们有不传的法宝,通过鼠标的移动时间轻松搞定。

将起点坐标和方格的大小都记录下来。

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
 
    ui->setupUi(this);
    //去除边框
    this->setWindowFlags(Qt::FramelessWindowHint);
 
    startPoint = QPoint(147,68); //起点坐标
    endPoint = QPoint(1003,670); //终点坐标
 
    gridWidth = (endPoint.x() - startPoint.x())/8;
    gridHigh = (endPoint.y() - startPoint.y())/8;
 
    initChess();
    connect(&timer, &QTimer::timeout, this, &Widget::machinePlay);
}


初始化棋盘,用

 chessStatus数组的状态代表棋盘的状态。

void Widget::initChess()
{
 
    whiteFlag = blackFlag = true;//一开始双方都能落子
    overFlag = false;   //一开始游戏不结束
 
    bNumber = wNumber = 0;
 
    memset(chessStatus,0,sizeof(chessStatus));
    //中间四子:两白两黑
    chessStatus[3][3] = Black;
    chessStatus[4][3] = White;
    chessStatus[3][4] = White;
    chessStatus[4][4] = Black;
 
    role = 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值