资源简介
开发环境:LinuxMint 17.1
开发工具:QtCreator 3.3.1
Qt版本:5.4.1
功能:实现了人机对战,网络对战,自己和自己下棋三种模式。主要功能包括重复局面检测,长将判负,悔棋,提示音播放,死棋检测,中文着法显示,步时限制,保存棋局到文件和从文件加载棋局。总共代码有5000行左右,历时200多个小时。
代码片段和文件信息
#include “chessboard.h“
#include “commdef.h“
#include
#include
ChessBoard::ChessBoard(QWidget *parent) : QWidget(parent)
{
resize(CHESSBOARD_WIDTH CHESSBOARD_HEIGHT);
move(CHESSBOARD_STARTX CHESSBOARD_STARTY);
fliped = false;
loadPixmap(STARTUP_LAYOUT);
}
ChessBoard::~ChessBoard()
{
}
void ChessBoard::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
int xx = 0;
int yy = 0;
int index = 0;
QPainter painter(this);
painter.drawPixmap(0 0 background);
for (int row = 0; row < CHESSBOARD_ROW; ++row)
{
for (int column = 0; column < CHESSBOARD_COLUMN; ++column)
{
index = row * CHESSBOARD_COLUMN + column;
getPixmapPos(row column xx yy);
painter.drawPixmap(xx yy arrChessman[index]);
}
}
}
void ChessBoard::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
int row = 0;
int column = 0;
getPixmapIndex(event->pos().x() event->pos().y() row column);
int sq = getChessmanIndex(row column fliped);
emit doMove(sq);
}
}
void ChessBoard::loadPixmap(const char *chessman)
{
int sq = 0;
char pc = 0;
int index = 0;
background.load(“:/images/WOOD.GIF“);
for(int row = 0; row < CHESSBOARD_ROW; ++row)
{
for (int column = 0; column < CHESSBOARD_COLUMN; ++column)
{
index = row * CHESSBOARD_COLUMN + column;
sq = getChessmanIndex(row column fliped);
pc = chessman[sq];
arrChessman[index].load(getChessmanPic(pc false false));
}
}
}
void ChessBoard::showMoveRoute(char movingChessman int move bool show)
{
int srcPos = SRC(move);
int dstPos = DST(move);
int srcIndex = 0;
int dstIndex = 0;
if (srcPos > 0)
{
srcIndex = getChessboardCoord(FILE_X(srcPos) RANK_Y(srcPos) fliped);
arrChessman[srcIndex].load(getChessmanPic(dstPos > 0 ? 0 : movingChessman show false));
}
if (dstPos > 0)
{
dstIndex = getChessboardCoord(FILE_X(dstPos) RANK_Y(dstPos) fliped);
arrChessman[dstIndex].load(getChessmanPic(movingChessman show false));
}
}
void ChessBoard::updateGeneralDisplay(char chessman int pos bool dead)
{
int index = getChessboardCoord(FILE_X(pos) RANK_Y(pos) fliped);
arrChessman[index].load(getChessmanPic(chessman true dead));
}
void ChessBoard::changeFlip()
{
fliped = !fliped;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-10-11 22:37 QtChess\
目录 0 2015-10-11 22:37 QtChess\audios\
文件 5850 2015-10-11 22:37 QtChess\audios\AttackKing.wav
文件 862 2015-10-11 22:37 QtChess\audios\Choose.wav
文件 24444 2015-10-11 22:37 QtChess\audios\Draw.wav
文件 5802 2015-10-11 22:37 QtChess\audios\Eat.wav
文件 6278 2015-10-11 22:37 QtChess\audios\Forbid.wav
文件 8560 2015-10-11 22:37 QtChess\audios\Loss.wav
文件 1962 2015-10-11 22:37 QtChess\audios\Move.wav
文件 121720 2015-10-11 22:37 QtChess\audios\NewGame.wav
文件 32122 2015-10-11 22:37 QtChess\audios\Win.wav
文件 2509 2015-10-11 22:37 QtChess\chessboard.cpp
文件 747 2015-10-11 22:37 QtChess\chessboard.h
文件 22229 2015-10-11 22:37 QtChess\chesshandler.cpp
文件 3029 2015-10-11 22:37 QtChess\chesshandler.h
文件 1453 2015-10-11 22:37 QtChess\clientnetwork.cpp
文件 624 2015-10-11 22:37 QtChess\clientnetwork.h
文件 27057 2015-10-11 22:37 QtChess\commdef.h
文件 185 2015-10-11 22:37 QtChess\Config.ini
文件 2467 2015-10-11 22:37 QtChess\gamesettings.cpp
文件 908 2015-10-11 22:37 QtChess\gamesettings.h
目录 0 2015-10-11 22:37 QtChess\images\
文件 2425 2015-10-11 22:37 QtChess\images\chess.png
文件 2383 2015-10-11 22:37 QtChess\images\fail.png
文件 2232 2015-10-11 22:37 QtChess\images\fallback.png
文件 486 2015-10-11 22:37 QtChess\images\fileexit.png
文件 1662 2015-10-11 22:37 QtChess\images\fileopen.png
文件 1205 2015-10-11 22:37 QtChess\images\filesave.png
文件 944 2015-10-11 22:37 QtChess\images\flip.png
文件 1096 2015-10-11 22:37 QtChess\images\helpabout.png
文件 1231 2015-10-11 22:37 QtChess\images\newgame.png
............此处省略60个文件信息
- 上一篇:MPC 自动驾驶 轨迹跟踪
- 下一篇:Qt开发的文本编辑器
相关资源
- Qt开发的文本编辑器
- jz2440的DHT11驱动 +QT5.6的温湿度监测系
- qt aes加密 源代码
- 多平台QT USB设备热插拔检测库
- qt面试相关
- MyGraphics.rar
- visual studio 2017中英文企业版离线安装
- QTP10破解
- 二叉树指定第i层输出以及打印叶子结
- 基于QT聊天室设计+部分论文内容
- qt5QjsonDemo
- Qt写的网络版五子棋游戏源代码
- Qt写的单机版的五子棋游戏源代码
- 基于Chan-Vese模型图像分割算法代码
- QT5.9.2+OpenGL,使用最新的QOpenGLWidget框
- 基于qt实现的画图板
- 编写QT键盘插件自定义GPIO按键
- QT vs2013编译 x64 patch
- QT Graphiview中的graphicItem的各种变化
- Qt线程间通信,线程控制界面显示
- KMeans GMM
- 非常完整的A*算法具体代码
- 图像的载入显示和输出程序by浅墨
- 基于Qt的实时曲线绘制
- Qt QGraphics View架构
- windef.h && windows.h
- Qt编写的列车运行预警系统
- QT 之 插件编写
- QT串口通讯(linux)
- 自己分装的一个winhttp类
评论
共有 条评论