这是一款基于qt开发的中国象棋,功能强大,可以移植到Android和IOS,可以直接运行,代码清晰,可读性强。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-05-10 15:52 Chess
文件 12075 2015-04-17 18:41 ChessBoard.cpp
文件 2525 2015-04-17 18:41 ChessBoard.h
文件 375 2015-04-17 18:41 ChessChess.pro
文件 3071 2015-05-10 15:52 ChessChess.pro.user
文件 18421 2015-04-17 18:41 ChessChess.pro.user.18
文件 806 2015-04-17 18:41 ChessChooseDlg.cpp
文件 327 2015-04-17 18:41 ChessChooseDlg.h
文件 542 2015-04-17 18:41 ChessCtrlPanel.cpp
文件 299 2015-04-17 18:41 ChessCtrlPanel.h
文件 385 2015-04-17 18:41 Chessmain.cpp
文件 1471 2015-04-17 18:41 ChessMainWnd.cpp
文件 295 2015-04-17 18:41 ChessMainWnd.h
文件 114 2015-04-17 18:41 ChessMultiGame.cpp
文件 229 2015-04-17 18:41 ChessMultiGame.h
文件 2035 2015-04-17 18:41 ChessNetGame.cpp
文件 715 2015-04-17 18:41 ChessNetGame.h
文件 4274 2015-04-17 18:41 ChessSingleGame.cpp
文件 585 2015-04-17 18:41 ChessSingleGame.h
文件 91 2015-04-17 18:41 ChessStep.cpp
文件 304 2015-04-17 18:41 ChessStep.h
文件 1339 2015-04-17 18:41 ChessStone.cpp
文件 351 2015-04-17 18:41 ChessStone.h
文件 2851794 2015-04-17 18:56 PC游戏编程(人机博弈).pdf
#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 ChessBoard.cpp
文件 2525 2015-04-17 18:41 ChessBoard.h
文件 375 2015-04-17 18:41 ChessChess.pro
文件 3071 2015-05-10 15:52 ChessChess.pro.user
文件 18421 2015-04-17 18:41 ChessChess.pro.user.18
文件 806 2015-04-17 18:41 ChessChooseDlg.cpp
文件 327 2015-04-17 18:41 ChessChooseDlg.h
文件 542 2015-04-17 18:41 ChessCtrlPanel.cpp
文件 299 2015-04-17 18:41 ChessCtrlPanel.h
文件 385 2015-04-17 18:41 Chessmain.cpp
文件 1471 2015-04-17 18:41 ChessMainWnd.cpp
文件 295 2015-04-17 18:41 ChessMainWnd.h
文件 114 2015-04-17 18:41 ChessMultiGame.cpp
文件 229 2015-04-17 18:41 ChessMultiGame.h
文件 2035 2015-04-17 18:41 ChessNetGame.cpp
文件 715 2015-04-17 18:41 ChessNetGame.h
文件 4274 2015-04-17 18:41 ChessSingleGame.cpp
文件 585 2015-04-17 18:41 ChessSingleGame.h
文件 91 2015-04-17 18:41 ChessStep.cpp
文件 304 2015-04-17 18:41 ChessStep.h
文件 1339 2015-04-17 18:41 ChessStone.cpp
文件 351 2015-04-17 18:41 ChessStone.h
文件 2851794 2015-04-17 18:56 PC游戏编程(人机博弈).pdf
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)