码迷,mamicode.com
首页 > 其他好文 > 详细

打地鼠游戏(3)

时间:2019-05-12 10:24:56      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:bsp   count   parent   需求   开启   fine   数组   class   update   

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

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

1、置换图片的方法:

 1 #ifndef MYITEM_H  //--------------myitem.h
 2 #define MYITEM_H
 3 #include <QGraphicsPixmapItem>
 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 <QPixmap>
 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 3
10         1 0,1 1,1 2,1 3
11         2 0,2 1,2 2,2 3
12         3 0,3 1,3 2,3 3
13         */
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); //1s
24 
25 }
 1 #include <stdlib.h>
 2 #include <time.h>
 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 }

演示效果:

技术图片

 

打地鼠游戏(3)

标签:bsp   count   parent   需求   开启   fine   数组   class   update   

原文地址:https://www.cnblogs.com/data1213/p/10851165.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!