• 大小: 2.52MB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2023-10-29
  • 语言: Java
  • 标签: c++  qt  象棋  

资源简介

这是一款基于qt开发的中国象棋,功能强大,可以移植到Android和IOS,可以直接运行,代码清晰,可读性强。

资源截图

代码片段和文件信息

#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  2015-05-10 15:52  Chess\
     文件       12075  2015-04-17 18:41  Chess\Board.cpp
     文件        2525  2015-04-17 18:41  Chess\Board.h
     文件         375  2015-04-17 18:41  Chess\Chess.pro
     文件        3071  2015-05-10 15:52  Chess\Chess.pro.user
     文件       18421  2015-04-17 18:41  Chess\Chess.pro.user.18
     文件         806  2015-04-17 18:41  Chess\ChooseDlg.cpp
     文件         327  2015-04-17 18:41  Chess\ChooseDlg.h
     文件         542  2015-04-17 18:41  Chess\CtrlPanel.cpp
     文件         299  2015-04-17 18:41  Chess\CtrlPanel.h
     文件         385  2015-04-17 18:41  Chess\main.cpp
     文件        1471  2015-04-17 18:41  Chess\MainWnd.cpp
     文件         295  2015-04-17 18:41  Chess\MainWnd.h
     文件         114  2015-04-17 18:41  Chess\MultiGame.cpp
     文件         229  2015-04-17 18:41  Chess\MultiGame.h
     文件        2035  2015-04-17 18:41  Chess\NetGame.cpp
     文件         715  2015-04-17 18:41  Chess\NetGame.h
     文件        4274  2015-04-17 18:41  Chess\SingleGame.cpp
     文件         585  2015-04-17 18:41  Chess\SingleGame.h
     文件          91  2015-04-17 18:41  Chess\Step.cpp
     文件         304  2015-04-17 18:41  Chess\Step.h
     文件        1339  2015-04-17 18:41  Chess\Stone.cpp
     文件         351  2015-04-17 18:41  Chess\Stone.h
     文件     2851794  2015-04-17 18:56  PC游戏编程(人机博弈).pdf

评论

共有 条评论