예제 #1
0
void RollitWidget::dragMoveEvent(QDragMoveEvent *event)
{



    QRect updateRect = highlightedRect.united(targetSquare(event->pos()));

    if (event->mimeData()->hasFormat("image/x-puzzle-piece")
        && findPiece(targetSquare(event->pos())) == -1) {

        highlightedRect = targetSquare(event->pos());
        event->setDropAction(Qt::MoveAction);
        event->accept();
        possible_pos=true;
    } else {
        highlightedRect = targetSquare(event->pos());
        possible_pos=false;
        //highlightedRect = QRect();
        event->ignore();
    }

    QPoint a=event->pos();

    int n=a.x()/80;
    int m=a.y()/80;


    if((getValue(n,m)==NOIR)||(getValue(n,m)==BLANC)) highlightedRect = QRect();


    update(updateRect);
}
예제 #2
0
void PuzzleWidget::dropEvent(QDropEvent *event)
{
    if (event->mimeData()->hasFormat("image/x-puzzle-piece")
        && findPiece(targetSquare(event->pos())) == -1) {

        QByteArray pieceData = event->mimeData()->data("image/x-puzzle-piece");
        QDataStream dataStream(&pieceData, QIODevice::ReadOnly);
        QRect square = targetSquare(event->pos());
        QPixmap pixmap;
        QPoint location;
        dataStream >> pixmap >> location;

        pieceLocations.append(location);
        piecePixmaps.append(pixmap);
        pieceRects.append(square);

        highlightedRect = QRect();
        update(square);

        event->setDropAction(Qt::MoveAction);
        event->accept();

        if (location == QPoint(square.x()/pieceSize(), square.y()/pieceSize())) {
            inPlace++;
            if (inPlace == 25)
                emit puzzleCompleted();
        }
    } else {
예제 #3
0
void tileset::dropEvent(QDropEvent *event)
{
    if (event->mimeData()->hasFormat(getMimeType())
        && findPiece(targetSquare(event->pos())) == -1) {

        QByteArray pieceData = event->mimeData()->data(getMimeType());
        QDataStream stream(&pieceData, QIODevice::ReadOnly);
        QRect square = targetSquare(event->pos());
        int objID;
        stream >> objID;

        //QPixmap scaledPix = pixmap.scaled(m_baseSize, m_baseSize,Qt::KeepAspectRatio);
        QPixmap scaledPix = getScaledPixmapById(objID);

        piecePixmaps.append(scaledPix);
        pieceRects.append(square);
        pieceID.append(objID);

        highlightedRect = QRect();
        update();

        event->setDropAction(Qt::MoveAction);
        event->accept();

    } else {
예제 #4
0
void tileset::dropEvent(QDropEvent *event)
{
    if(event->mimeData()->hasFormat(getMimeType())
       && findPiece(targetSquare(event->pos())) == -1)
    {

        QByteArray pieceData = event->mimeData()->data(getMimeType());
        QDataStream stream(&pieceData, QIODevice::ReadOnly);
        QRect square = targetSquare(event->pos());
        int objID;
        stream >> objID;

        QPixmap scaledPix;
        Items::getItemGFX(m_type, (unsigned long)objID, scaledPix, scn, false, QSize(m_baseSize, m_baseSize));

        piecePixmaps.append(scaledPix);
        pieceRects.append(square);
        pieceID.append(objID);

        highlightedRect = QRect();
        update();

        event->setDropAction(Qt::MoveAction);
        event->accept();

    }
예제 #5
0
void tileset::dragMoveEvent(QDragMoveEvent *event)
{
    if (event->mimeData()->hasFormat(getMimeType())
        && findPiece(targetSquare(event->pos())) == -1) {

        highlightedRect = targetSquare(event->pos());
        event->setDropAction(Qt::MoveAction);
        event->accept();
    } else {
        highlightedRect = QRect();
        event->ignore();
    }

    update();
}
예제 #6
0
void PuzzleWidget::dragMoveEvent(QDragMoveEvent *event)
{
    QRect updateRect = highlightedRect.united(targetSquare(event->pos()));

    if (event->mimeData()->hasFormat("image/x-puzzle-piece")
        && findPiece(targetSquare(event->pos())) == -1) {

        highlightedRect = targetSquare(event->pos());
        event->setDropAction(Qt::MoveAction);
        event->accept();
    } else {
        highlightedRect = QRect();
        event->ignore();
    }

    update(updateRect);
}
예제 #7
0
void RollitWidget::dropEvent(QDropEvent *event)
{



    if (event->mimeData()->hasFormat("image/x-puzzle-piece")
        && findPiece(targetSquare(event->pos())) == -1) {


        if (gameBeg==0) gameBeg++;
        QByteArray pieceData = event->mimeData()->data("image/x-puzzle-piece");
        QDataStream dataStream(&pieceData, QIODevice::ReadOnly);
        QRect square = targetSquare(event->pos());
        QRect all(0,0,640,640);

        QPoint cent=square.center();

        int x=cent.x()/80;
        int y=cent.y()/80;



        if(playbynetwork) {






            essayer_coup(x,y,colo,1);  update();

            envoyer_coup(x,y,colo);

            canPlay=false;

        }


        else {



            essayer_coup(x,y,NOIR,1);


        update();



        int xx=x;
        int yy=y;



        approfondissement_iteratif(BLANC, &xx, &yy);
                if (!essayer_coup(xx, yy, BLANC,1)) {


                }

        lastx=xx;
        lasty=yy;

        update();

        toString();

        }




        QPixmap pixmap;
        QPoint location;
        dataStream >> pixmap >> location;

        pieceLocations.append(location);
        piecePixmaps.append(pixmap);
        pieceRects.append(square);

        highlightedRect = QRect();
        update(square);
        update(all);

        event->setDropAction(Qt::MoveAction);
        event->accept();



        if (location == QPoint(square.x()/80, square.y()/80)) {
        //    inPlace++;
        }
    } else {