資源簡介
Qt寫的網絡五子棋代碼,使用了QTcpSocket類,進行網絡通信。

代碼片段和文件信息
#include?“chessboard.h“
#include?
#include?
#include?
#include?
ChessBoard::ChessBoard(QWidget?*parent)?:
????QWidget(parent)
{
????isLocal?=?false;
????isServer?=?false;
????localImg?=?QImage(“:/images/local.png“).scaled(ZOOM?ZOOM);
????remoteImg?=?QImage(“:/images/remote.png“).scaled(ZOOM?ZOOM);
????localPoints.clear();
????remotePoints.clear();
}
int?ChessBoard::directionNumber(const?QPoint?&p
????????????????????????????????int?xoffset
????????????????????????????????int?yoffset
????????????????????????????????bool?local)
{
????QMap?&points?=?local???localPoints?:?remotePoints;
????int?num?=?1;
????int?i;
????for(i?=?0;?i?5;?i++)
????{
????????if(-1?==?points.key(p?+?QPoint(xoffset?*?i?yoffset?*?i)?-1))
????????????break;
????}
????num?+=?i?-1;
????for(i?=?0;?i?5?-?num?+?1;?i++)
????{
????????if(-1?==?points.key(p?+?QPoint(-xoffset?*?i?-yoffset?*?i)?-1))
????????????break;
????}
????num?+=?i?-1;
????return?num;
}
void?ChessBoard::start(bool?s)
{
????isLocal?=?s;
????isServer?=?s;
}
bool?ChessBoard::isVectory(const?QPoint?&p?bool?local)
{
????if(directionNumber(p?0?1?local)?>=?5)?return?true;
????if(directionNumber(p?1?1?local)?>=?5)?return?true;
????if(directionNumber(p?1?0?local)?>=?5)?return?true;
????if(directionNumber(p?-1?1?local)?>=?5)?return?true;
????return?false;
}
QSize?ChessBoard::sizeHint()const
{
????return?QSize(ZOOM?*?WIDTH?+?ZOOM
??????????ZOOM?*?WIDTH?+?ZOOM);
}
void?ChessBoard::paintEvent(QPaintEvent?*)
{
????QPainter?painter(this);
????//繪制棋盤網格
????for(int?i?=?0;?i?<=?WIDTH;?i++)
????{
????????painter.drawLine(i?*?ZOOM?+?ZOOM?/?2
?????????????????????????ZOOM?/?2
?????????????????????????i?*?ZOOM?+?ZOOM?/?2
?????????????????????????WIDTH?*?ZOOM?+?ZOOM?/?2);
????}
????for(int?i?=?0;?i?<=?HEIGHT;?i++)
????{
????????painter.drawLine(ZOOM?/?2
?????????????????????????i?*?ZOOM?+?ZOOM?/?2
?????????????????????????HEIGHT?*?ZOOM?+?ZOOM?/?2
?????????????????????????i?*?ZOOM?+?ZOOM?/?2);
????}
????//繪制棋子
????for(int?i?=?0;?i?????{
????????painter.drawImage(ZOOM?*?localPoints[i].x()
??????????????????????????ZOOM?*?localPoints[i].y()
??????????????????????????localImg);
????}
????for(int?i?=?0;?i?????{
????????painter.drawImage(ZOOM?*?remotePoints[i].x()
??????????????????????????ZOOM?*?remotePoints[i].y()
??????????????????????????remoteImg);
????}
}
void?ChessBoard::mousePressEvent(QMouseEvent?*e)
{
????int?x?y;
????QPoint?p;
????//是否為本方下棋
????if(!isLocal)?goto?Ret;
????//是否為左鍵點擊
????if(e->button()?!=?Qt::LeftButton)?goto?Ret;
????//是否在有效區域
????x?=?e->pos().x()?/?ZOOM;
????y?=?e->pos().y()?/?ZOOM;
????if(x?>?WIDTH?||?y?>?HEIGHT)?goto?Ret;
????//是否重復坐標
????p?=?QPoint(x?y);
????if(-1?!=?localPoints.key(p?-1))?goto?Ret;
????if(-1?!=?remotePoints.key(p?-1))?goto?Ret;
????isLocal?=?false;
????emit?localDone(p);
????localPoints[localPoints.count()]?=?p;
????this->update();
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????I.A....??????3640??2013-04-21?11:40??netgobang\chessboard.cpp
????I.A....???????928??2013-04-21?11:23??netgobang\chessboard.h
????I.A....??????1630??2005-09-10?16:27??netgobang\images\local.png
????I.A....??????1594??2005-09-10?16:27??netgobang\images\remote.png
????I.A....???????134??2013-04-18?18:42??netgobang\images.qrc
????I.A....??????1440??2013-04-18?18:29??netgobang\logindialog.cpp
????I.A....???????638??2013-04-18?18:29??netgobang\logindialog.h
????I.A....??????7392??2013-04-21?11:32??netgobang\logindialog.ui
????I.A....???????798??2013-04-21?11:49??netgobang\main.cpp
????I.A....??????2524??2013-04-21?12:53??netgobang\netgobang.cpp
????I.A....???????677??2013-04-21?12:44??netgobang\netgobang.h
????I.A....???????272??2013-04-21?09:31??netgobang\netgobang.pro
????I.A....??????7970??2013-06-23?21:45??netgobang\netgobang.pro.user
????I.A....???????427??2013-04-18?12:24??netgobang\tcpserver.cpp
????I.A....???????406??2013-04-17?19:46??netgobang\tcpserver.h
????I..D...?????????0??2013-07-03?20:20??netgobang\images
????I..D...?????????0??2013-07-03?20:20??netgobang
-----------?---------??----------?-----??----
????????????????30470????????????????????17
- 上一篇:labview模擬風扇
- 下一篇:mathcad 經典電路設計
評論
共有 條評論