• 大小: 16KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: 其他
  • 标签: QT  象棋  中国象棋  

资源简介

基于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 &

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-11-04 16:33  Chess\
     文件       12075  2018-11-04 16:16  Chess\Board.cpp
     文件        2525  2018-11-04 16:16  Chess\Board.h
     文件         375  2018-11-04 16:16  Chess\Chess.pro
     文件       18682  2018-11-04 16:33  Chess\Chess.pro.user
     文件       18421  2018-11-04 16:16  Chess\Chess.pro.user.ed046f5
     文件         806  2018-11-04 16:16  Chess\ChooseDlg.cpp
     文件         327  2018-11-04 16:16  Chess\ChooseDlg.h
     文件         542  2018-11-04 16:16  Chess\CtrlPanel.cpp
     文件         299  2018-11-04 16:16  Chess\CtrlPanel.h
     文件        1471  2018-11-04 16:16  Chess\MainWnd.cpp
     文件         295  2018-11-04 16:16  Chess\MainWnd.h
     文件         114  2018-11-04 16:16  Chess\MultiGame.cpp
     文件         229  2018-11-04 16:16  Chess\MultiGame.h
     文件        2035  2018-11-04 16:16  Chess\NetGame.cpp
     文件         715  2018-11-04 16:16  Chess\NetGame.h
     文件        4274  2018-11-04 16:16  Chess\SingleGame.cpp
     文件         585  2018-11-04 16:16  Chess\SingleGame.h
     文件          91  2018-11-04 16:16  Chess\Step.cpp
     文件         304  2018-11-04 16:16  Chess\Step.h
     文件        1339  2018-11-04 16:16  Chess\Stone.cpp
     文件         351  2018-11-04 16:16  Chess\Stone.h
     文件         385  2018-11-04 16:16  Chess\main.cpp

评论

共有 条评论