博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
打地鼠游戏(3)
阅读量:5009 次
发布时间:2019-06-12

本文共 1895 字,大约阅读时间需要 6 分钟。

需求:随机弹出1-3个老鼠

实现:利用一个定时器,设置定时器周期到之后,置换掉1-3个图元的图片。

1、置换图片的方法:

1 #ifndef MYITEM_H  //--------------myitem.h 2 #define MYITEM_H 3 #include 
4 5 class myitem : public QGraphicsPixmapItem 6 { 7 public: 8 myitem(); 9 void setPic(QString src); //置换图片10 };11 12 #endif // MYITEM_H
1 #include "myitem.h" 2 #include 
3 4 myitem::myitem() 5 { /* 6 void setPixmap(const QPixmap &pixmap); 7 绑定图片到图元 8 */ 9 this->setPixmap(QPixmap(":/mouse/pic/bg1.png"));10 }11 12 //重新设置图片,从而实现更换图片的效果13 void myitem::setPic(QString src){14 this->setPixmap(src);15 }

2、绑定信号与槽,开启定时器:

1 MyScene::MyScene(QObject *parent) : QGraphicsScene(parent) 2 { 3  4     //添加图元到场景 5     for(int i = 0;i<16;i++){ 6         this->item[i] = new myitem(); 7         //设置坐标 8         /*一维数组转换为二维数组,下面宽、高的倍数组合 9         0 0,0 1,0 2,0 310         1 0,1 1,1 2,1 311         2 0,2 1,2 2,2 312         3 0,3 1,3 2,3 313         */14         double x = i/4 * this->item[i]->boundingRect().width();15         double y = i%4 * this->item[i]->boundingRect().height();16         this->item[i]->setPos(x,y);17         this->addItem(this->item[i]);18     }19 20     //绑定一个定时器,等定时周期到触发一个随机数[0-15],然后让场景中的一个图元的图片更换21     this->p_timer = new QTimer();22     connect(this->p_timer, SIGNAL(timeout()), this, SLOT(update_my_item())); //绑定定时器和槽函数23     this->p_timer->start(1000); //1s24 25 }
1 #include 
2 #include
3 4 void MyScene::update_my_item(){ 5 //每次出现老鼠之前,先恢复到所有图元为无老鼠的样式图片 6 for(int i = 0;i<16;i++){ 7 this->item[i]->setPic(":/mouse/pic/bg1.png"); 8 } 9 10 srand(time(NULL)); //设置随机数种子11 12 //一次性允许显式最多三个老鼠13 int count = rand()%3 +1;14 for(int k=1;k<=3;k++){15 int i = rand()%16;16 this->item[i]->setPic(":/mouse/pic/mouse.png");17 }18 }

演示效果:

 

转载于:https://www.cnblogs.com/data1213/p/10851165.html

你可能感兴趣的文章
标识符与包的概念
查看>>
WebRTC手记之框架与接口
查看>>
VBA基本语言结构
查看>>
改变画布大小
查看>>
《软件需求模式》读书笔记之三
查看>>
openstack环境之网络时间协议(NTP)
查看>>
Python中函数参数传递问题
查看>>
【原生】验证码的生成
查看>>
Task6.神经网络基础
查看>>
sql server性能优化的一些建议(转)
查看>>
多线程
查看>>
51nod 1253:Kundu and Tree(组合数学)
查看>>
【16】java的控制程序流程
查看>>
Promise原理 && 简单实现
查看>>
Slice a PSD
查看>>
机器学习当中的参数吸入向量形式
查看>>
Dan版本的nnet2
查看>>
7za 解压文件
查看>>
SetLength 过程设定字符串的最大长度值
查看>>
getSys32Path()得到系统System32路径
查看>>