• 大小: 11KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-13
  • 语言: 其他
  • 标签: Qt  

资源简介

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 < localPoints.count(); i++)
    {
        painter.drawImage(ZOOM * localPoints[i].x()
                          ZOOM * localPoints[i].y()
                          localImg);
    }
    for(int i = 0; i < remotePoints.count(); 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


评论

共有 条评论