首页 > 其他分享 >Qt实践项目打地鼠之----随机弹出地鼠(三)[附GitHub项目下载地址]

Qt实践项目打地鼠之----随机弹出地鼠(三)[附GitHub项目下载地址]

时间:2022-11-22 15:31:21浏览次数:38  
标签:GitHub Qt int myitem item2 item 地鼠 随机 include


完成了背景图的布局,接下来要处理随机弹出地鼠的程序编写.

首先在myitem.cpp中定义一个设置图片路径的函数,如下:

void myitem::setPic(QString path)
{
this->setPixmap(QPixmap(path));
}

进而我们可以在场景控制图片的切换.

随机产生图片我们调用C中的随机种子​​srand((unsigned)time(NULL)​​,在main.cpp中添加

#include "mainwindow.h"
#include <QApplication>
#include<stdlib.h>//随机数种子所在的头文件
#include<time.h>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

srand((unsigned)time(NULL));//默认情况下随机种子来自系统时钟

MainWindow w;
w.show();

return a.exec();
}

具体实现功能如下:

#include "myscene.h"
#include<stdlib.h>
myScene::myScene(QObject *parent) : QGraphicsScene(parent)
{
// this->item = new myitem;//开辟堆空间
// this->item->setPos(0,0);//设置坐标位置
// this->addItem(this->item);//将item添加进场景中

// this->item2 = new myitem;
// this->item2->setPos(91,0);//设置第二个坐标位置
// this->addItem(this->item2);//将item2添加进场景中
for(int i = 0;i<16;i++)
{
this->item[i] = new myitem;
this->item[i]->setPos(i/4 * this->item[i]->boundingRect().width(),
i%4 * this->item[i]->boundingRect().height());
this->addItem(this->item[i]);
}

//this->item[4]->setPic(":/mouse/mouse.png");
this->ptimer = new QTimer;
connect(this->ptimer,&QTimer::timeout,this,&myScene::showMouse);
this->ptimer->start(500);
}

void myScene::showMouse()
{
//随机一个数字 0-15,使用C语言的设置
int count = rand()%3+1; //(1~3个)
//每次重置背景
for(int i = 0; i < 16; i++){
this->item[i]->setPic(":/background/bg1.png");
}

//随机出现地鼠图片
for(int i = 0; i < count; i++){
int index = rand()%16;
this->item[index]->setPic(":/mouse/mouse.png");
}
}

运行

                       

Qt实践项目打地鼠之----随机弹出地鼠(三)[附GitHub项目下载地址]_i++

下一篇是鼠标形状的改写,敬请期待~ 

标签:GitHub,Qt,int,myitem,item2,item,地鼠,随机,include
From: https://blog.51cto.com/u_13875041/5878130

相关文章