• 大小: 14KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-25
  • 语言: C/C++
  • 标签: QT  

资源简介

基于C++的象棋项目,利用QT实现,入门级的代码,有人机对战、人人对战,可以悔棋,也可以选择网络联网。

资源截图

代码片段和文件信息

#include “Board.h“
#include 
#include 
#include 
#define GetRowCol(__row __col __id) \
    int __row = _s[__id]._row;\
    int __col = _s[__id]._col

Board::Board(QWidget *parent) : Qframe(parent)
{
    this->_r = 20;
    setMinimumSize(_r*18+1 _r*20+1);
    init(true);
}

Board::~Board()
{

}

void Board::init(bool bRedSide)
{
    for(int i=0; i<32; ++i)
    {
        _s[i].init(i);
    }
    if(bRedSide)
    {
        for(int i=0; i<32; ++i)
        {
            _s[i].rotate();
        }
    }

    _selectid = -1;
    _bRedTurn = true;
    _bSide = bRedSide;
    update();
}

void Board::paintEvent(QPaintEvent *)
{
    int r = height()/20;
    _r = r;
    _off = QPoint(r+1 r+1);

    QPainter p(this);
    p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);

    p.save();
    drawPlate(p);
    p.restore();

    p.save();
    drawPlace(p);
    p.restore();

    p.save();
    drawInitPosition(p);
    p.restore();

    p.save();
    drawStone(p);
    p.restore();
}

void Board::drawStone(QPainter &p)
{
    for(int i=0; i<32; i++)
    {
        drawStone(p i);
    }
}

bool Board::isDead(int id)
{
    if(id == -1)return true;
    return _s[id]._dead;
}

void Board::drawStone(QPainter &p int id)
{
    if(isDead(id)) return;

    QColor color;
    if(red(id)) color = Qt::red;
    else color = Qt::black;

    p.setPen(QPen(QBrush(color) 2));

    if(id == _selectid) p.setBrush(Qt::gray);
    else p.setBrush(Qt::yellow);

    p.drawEllipse(cell(id));

    p.setFont(QFont(“system“ _r*1.2 700));
    p.drawText(cell(id) name(id) QTextOption(Qt::AlignCenter));
}

QString Board::name(int id)
{
    return _s[id].name();
}

bool Board::red(int id)
{
    return _s[id]._red;
}

void Board::drawInitPosition(QPainter &p int row int col)
{
    QPoint pt = center(row col);
    QPoint off = QPoint(_r/6 _r/6);
    int len = _r/3;

    QPoint ptStart;
    QPoint ptEnd;

    if(col != 0)
    {
        /* 左上角 */
        ptStart = QPoint(pt.x() - off.x() pt.y() - off.y());
        ptEnd = ptStart + QPoint(-len 0);
        p.drawLine(ptStart ptEnd);
        ptEnd = ptStart + QPoint(0 -len);
        p.drawLine(ptStart ptEnd);

        /* 左下角 */
        ptStart = QPoint(pt.x() - off.x() pt.y() + off.y());
        ptEnd = ptStart + QPoint(-len 0);
        p.drawLine(ptStart ptEnd);
        ptEnd = ptStart + QPoint(0 +len);
        p.drawLine(ptStart ptEnd);
    }

    if(col != 8)
    {
        /* 右下角 */
        ptStart = QPoint(pt.x() + off.x() pt.y() + off.y());
        ptEnd = ptStart + QPoint(+len 0);
        p.drawLine(ptStart ptEnd);
        ptEnd = ptStart + QPoint(0 +len);
        p.drawLine(ptStart ptEnd);

        /* 右上角 */
        ptStart = QPoint(pt.x() + off.x() pt.y() - off.y());
        ptEnd = ptStart + QPoint(+len 0);
        p.drawLine(ptStart ptEnd);
        ptEnd = ptStart + QPoint(0 -len);
        p.drawLine(ptStart ptEnd);
    }
}

void Board::drawInitPosition(QPainter &

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      12075  2018-03-05 18:10  Chess\Board.cpp

     文件       2525  2018-03-05 18:10  Chess\Board.h

     文件        375  2018-03-05 18:10  Chess\Chess.pro

     文件      18447  2018-04-17 18:14  Chess\Chess.pro.user

     文件      18421  2018-03-05 18:10  Chess\Chess.pro.user.ed046f5

     文件        806  2018-03-05 18:10  Chess\ChooseDlg.cpp

     文件        327  2018-03-05 18:10  Chess\ChooseDlg.h

     文件        542  2018-03-05 18:10  Chess\CtrlPanel.cpp

     文件        299  2018-03-05 18:10  Chess\CtrlPanel.h

     文件        385  2018-03-05 18:10  Chess\main.cpp

     文件       1471  2018-03-05 18:10  Chess\MainWnd.cpp

     文件        295  2018-03-05 18:10  Chess\MainWnd.h

     文件        114  2018-03-05 18:10  Chess\MultiGame.cpp

     文件        229  2018-03-05 18:10  Chess\MultiGame.h

     文件       2035  2018-03-05 18:10  Chess\NetGame.cpp

     文件        715  2018-03-05 18:10  Chess\NetGame.h

     文件       4274  2018-03-05 18:10  Chess\SingleGame.cpp

     文件        585  2018-03-05 18:10  Chess\SingleGame.h

     文件         91  2018-03-05 18:10  Chess\Step.cpp

     文件        304  2018-03-05 18:09  Chess\Step.h

     文件       1339  2018-03-05 18:09  Chess\Stone.cpp

     文件        351  2018-03-05 18:09  Chess\Stone.h

     目录          0  2018-04-17 18:14  Chess

----------- ---------  ---------- -----  ----

                66005                    23


评论

共有 条评论