• 大小: 9KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签: 拼图  qt5  

资源简介

很古老的游戏,类似大家小时候玩的拼图板。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include
#include 
#include “dialog.h“
#include “ui_dialog.h“

using namespace std;

Dialog::Dialog(QWidget *parent) :
    QDialog(parent)
    ui(new Ui::Dialog)
{


    source_picture_show=false;
    ui->setupUi(this);
    ui->spinBox->setMinimum(2);
    ui->spinBox->setValue(4);
    n=ui->spinBox->value();
    //n=4;
    N=n*n;

    a   =   new   int* [n+2];
    for(int   i=0;   i         a[i]   =   new   int[n+2];

    wsubsize=100;
    hsubsize=100;

    bak.load(“:/new/prefix1/background3.png“);
    Bak=bak;

    setbak();
    ui->verticalWidget->setGeometry(n*wsubsize10100150);
    //wsize=400;
    //hsize=400;
    //move(10010);
    //max_n=5;




    //initpicture();
    //update();

}



Dialog::~Dialog()
{
    delete ui;
}


void Dialog::setbak()
{

    Bak=Bak.scaled( n*wsubsize  n*hsubsizeQt::IgnoreAspectRatio Qt::SmoothTransformation);
    QPainter pb(&Bak);
    for (int i=0;i<=n*wsubsize/127;i++ )
        for (int j=0;j<=n*hsubsize/127;j++)
            pb.drawPixmap( i*127 j*127 bak);
}

void Dialog::paintEvent(QPaintEvent *)
{
    //move(  (QApplication::desktop()->width() - width())/2 (QApplication::desktop()->height() - height())/2);

    //()<<“start paint“;
    //setFixedHeight(n*hsubsize);

    //setFixedWidth(n*wsubsize+100);


    int ijp;
    QPainter painter(this);
    if (source_picture_show)
        painter.drawPixmap( 0 0 pix);
    else
    {



        painter.drawPixmap( 0 0 Bak);
        for (int l=1;l<=pixmaps.size();l++)
        {
            i=(l-1)%n+1;
            j=(l-1)/n+1;
            p=a[i][j]-1;
            if (p                painter.drawPixmap( (i-1)*wsubsize (j-1)*hsubsize pixmaps[p]);
        }
    }


}

void Dialog::mousePressEvent(QMouseEvent *m)
{

    if (source_picture_show)
        return;
    else
    {
        int x = m->pos().x();
        int y = m->pos().y();
        hit(x/wsubsize+1  y/hsubsize+1);
    }
}

void Dialog::hit(int iint j)
{
    if (i<1 || j<1 || i>n || j>n)
        return;
    if (a[i-1][j]==N)
    {

        a[i-1][j]=a[i][j];
        a[i][j]=N;
    }
    else if (a[i+1][j]==N)
    {
        a[i+1][j]=a[i][j];
        a[i][j]=N;
    }
    else if (a[i][j-1]==N)
    {
        a[i][j-1]=a[i][j];
        a[i][j]=N;
    }
    else if (a[i][j+1]==N)
    {
        a[i][j+1]=a[i][j];
        a[i][j]=N;
    }

    update();
    if (check())
    {
        QMessageBox msgBox(this);
         msgBox.setText(tr(“大功告成!“));
         msgBox.exec();
         //initrandom();
         //refresh();
    }
}

void Dialog::randomp()
{
    for(int   i=0;   i         for(int   j=0;   j         {
            if (i==0 || j==0 || i==n+1  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-06-21 12:48  painter01\
     文件         116  2012-09-13 12:24  painter01\background3.png
     目录           0  2015-06-21 12:49  __MACOSX\
     目录           0  2015-06-21 12:49  __MACOSX\painter01\
     文件         181  2012-09-13 12:24  __MACOSX\painter01\._background3.png
     文件         105  2012-10-13 19:23  painter01\bak.qrc
     文件         181  2012-10-13 19:23  __MACOSX\painter01\._bak.qrc
     文件        6756  2015-06-21 12:48  painter01\dialog.cpp
     文件         871  2012-10-13 22:07  painter01\dialog.h
     文件         181  2012-10-13 22:07  __MACOSX\painter01\._dialog.h
     文件        2037  2012-10-14 11:24  painter01\dialog.ui
     文件         181  2012-10-14 11:24  __MACOSX\painter01\._dialog.ui
     文件         296  2015-06-21 12:35  painter01\main.cpp
     文件         378  2015-06-21 12:22  painter01\painter01.pro
     文件       18812  2015-06-21 12:48  painter01\painter01.pro.user
     文件         181  2015-06-21 12:48  __MACOSX\._painter01

评论

共有 条评论