https://live.csdn.net/v/199805

擦玻璃小游戏

这个例子,最简化了Qt开发小游戏的逻辑和思路,

图形元素--》场景--》视图
QGraphicsItem--》QGraphicsScene--》QGraphicsView

图形元素:小蚂蚁,抹布,背景图片

代码:

pro文件添加 :

QT       += core gui multimedia

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QGraphicsItem>
#include <math.h>
#include <QGraphicsScene>
#include <QPainter>
#include <QStyleOption>
#include <QGraphicsRectItem>
#include <QGraphicsView>#include <QDebug>
#include <QList>
#include <QTimer>#include <QMediaPlayer>#include <QMediaPlaylist>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();//生成蚂蚁void CreateMaYi();//碰撞检测函数void Collison();private:Ui::Widget *ui;QGraphicsView mGameView;//游戏视图QGraphicsScene mScene;//游戏场景QGraphicsPixmapItem mBackGround1;//背景图片1QGraphicsPixmapItem mMabu;//抹布//媒体播放背景音乐QMediaPlayer *player;QMediaPlaylist *playlist;//定时器QTimer *mMaYiCreateTimer;//蚂蚁生成定时器QTimer *mCollisonTimer;//碰撞检测//容器QList<QGraphicsPixmapItem*> mMaYiList;//蚂蚁容器,装说有蚂蚁};#endif // WIDGET_H

widget.cpp:

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);//图形元素--》场景--》视图//播放背景音乐player=new QMediaPlayer;playlist = new QMediaPlaylist;playlist->setPlaybackMode(QMediaPlaylist::Loop);// 通过设置 播放列表循环 实现循环播放playlist->addMedia(QUrl("qrc:/img/caboli.mp3"));player->setPlaylist(playlist);player->setVolume(100);player->play();this->setFixedSize(800,800);//设置窗体大小mGameView.setSceneRect(QRect(0,0,800,800));//设置视图,矩形大小mScene.setSceneRect(QRect(0,0,800,800));//设置场景,矩形大小mBackGround1.setPixmap(QPixmap(":/img/img/boli.jpg"));//设置背景图片mMabu.setPixmap(QPixmap(":/img/img/mabu.png"));//设置抹布mMabu.setFlag(QGraphicsItem::ItemIsMovable);//支持鼠标拖动mMabu.setPos(500,500);//设置抹布位置mMabu.setZValue(1);//设置抹布为上层//图片元素添加到场景mScene.addItem(&mBackGround1);//添加背景图片1mScene.addItem(&mMabu);//添加抹布图片//设置视图场景mGameView.setScene(&mScene);//设置视图的父亲为窗口mGameView.setParent(this);//显示视图mGameView.show();//开启蚂蚁创建定时器mMaYiCreateTimer = new QTimer(this);mMaYiCreateTimer->start(2000);connect(mMaYiCreateTimer,&QTimer::timeout,this,&Widget::CreateMaYi);//开启碰撞检测定时器mCollisonTimer = new QTimer(this);mCollisonTimer->start(100);connect(mCollisonTimer,&QTimer::timeout,this,&Widget::Collison);
}Widget::~Widget()
{delete ui;
}void Widget::CreateMaYi()//生成蚂蚁
{QGraphicsPixmapItem *mMayi = new QGraphicsPixmapItem;//蚂蚁QPixmap pixmap(":/img/img/mayi.png");mMayi->setPixmap(pixmap);int randX = qrand()%(800-pixmap.width());//随机生成蚂蚁起始X位置int randY = qrand()%(800-pixmap.height());//随机生成蚂蚁起始Y位置mMayi->setPos(QPoint(randX,randY));//添加到场景mScene.addItem(mMayi);//添加到管理器mMaYiList.append(mMayi);
}void Widget::Collison()//碰撞检测函数
{//遍历蚂蚁容器for(int i=0; i < mMaYiList.size(); i++ ){if(mMabu.collidesWithItem(mMaYiList[i])){//移除场景mScene.removeItem(mMaYiList[i]);//移除管理器mMaYiList.removeOne(mMaYiList[i]);qDebug()<<"碰撞";}}
}

用到的资源图片:

野路子玩Qt,第三十一集,擦玻璃游戏相关推荐

  1. 野路子玩Qt,第二十一集,游戏手柄检测

    Qt游戏手柄检测常用方法,WindowsAPI,Qt自带类,这里讲Qt自带类QGamepad,它可以检测标准的XBOX手柄,其他手柄不支持. 一.项目文件定义: QT += gamepad 二.添加引 ...

  2. 野路子玩Qt,第十集,八音盒

    一.引用winAPI #include <Windows.h> #pragma comment(lib,"user32.lib") 二.定义标准音, #define q ...

  3. 美学心得(第二百三十一集) 罗国正

    美学心得(第二百三十一集) 罗国正 (2021年12月)   3003.                      脂砚斋对<红楼梦>的评述,引出我对 人生和梦的联想 罗国正      ( ...

  4. 【Visual C++】游戏开发笔记三十一 回归季:游戏开发资料整理打包下载专栏行文思路整理

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/8147229 作者:毛星云    邮箱: h ...

  5. 野路子玩Android(二)使用log打印信息

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 1.log函数 2.函数实现 总结 前言 本系列主要用来记录学习Android的相关内容,本文学习Android如何打 ...

  6. SRPG游戏开发(三十一)第八章 游戏中的数据 - 一 创建新项目(Create New Project)

    返回总目录 第八章 游戏中的数据(Data in Game) 在之前的章节中,我们进行地图对象的生成,移动等操作. 这一章本来可以进行战斗的编写,不过数据缺失是一个问题. 所以这一章我们先来建立一些数 ...

  7. 【Microsoft Azure 的1024种玩法】七十一.基于Azure Virtual Machines快速上手搭建Typecho博客系统

    [简介] Typecho 是基于 PHP5 构建的开源跨平台博客系统,Typecho开源跨平台博客系统相较于wordpress .hexo有一定的性能优势,是我们记录文章内容的最佳首选博客,那么本篇文 ...

  8. OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己

    OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...

  9. 副业搞钱的几个野路子:两个年入10万的零成本赚钱项目

    不想担太多风险,想低成本歪主意,最佳的选择不外乎就是做服务和卖交互式产品. 搞交互式项目,最大的成本是时间成本.很多人都不缺时间,缺的是歪主意思维和变通能力. 独豆豆不如众豆豆,这几天辨认出了三个歪主 ...

最新文章

  1. lua学习笔记之数据结构
  2. 师范类专业可以不考计算机二级吗,2021师范专业要考教师资格证吗?师范生需要考的证有哪些?...
  3. 综合实践活动信息技术小学版第三册电子课本_峄城区初中信息技术、综合实践活动学科教师素养提升培训圆满落幕...
  4. 从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置
  5. SQL Server 动态生成数据库所有表Insert语句
  6. ntfs分配单元大小怎么选_星月菩提尺寸大小怎么选
  7. java jolt tuxedo_java使用jolt调用tuxedo服务
  8. java时间日期格式器_JAVA基础类库(二)-----日期、时间类和格式器
  9. NOIP2013 写后感
  10. 喵喵的华为DevCloud使用指南(2)-看板项目
  11. 【Hadoop】:Windows下使用IDEA搭建Hadoop开发环境
  12. 抖音快手皮皮虾西瓜头条等等短视频去水印接口【11-20日更新】
  13. java驱动sikuli打开虎牙直播
  14. 第四章:CPU体系结构笔记
  15. 信息爆炸,用写作让它慢下来-2023.04.07
  16. Qt学习之路_12(简易数据管理系统)
  17. 计算机网络机房需要气体灭火吗,哪些场所需要设置气体灭火系统?
  18. 英飞凌芯片支持计划第二阶段申请计划(硅麦芯片已开启)
  19. 当Proteus 8 Professional运行程序的时候出现有些器件不可用
  20. 如何使用字体图标——icomoon使用详细介绍

热门文章

  1. 画布渐变以及svg图形
  2. vrchat新手教程_VRChat简易教程3-往世界里导入模型和VRC接口初探
  3. 使用Autoit3 自动登录163邮箱
  4. 计算机毕业论文致谢,精选毕业论文致谢语6篇
  5. 炽热如初 向新而生|ISC2022 HackingClub白帽峰会圆满举办!
  6. 基于uml的大学图书馆图书信息管理系统设计实验_全国大学最美图书馆排行!这个学校居然有按摩服务?!...
  7. 关于Attention的超详细讲解
  8. AI 可以从人类思维中学习的11个启示
  9. 程序员专业常用英语词汇
  10. 精彩揭秘,一个高大上的机器人自动化工厂需要哪些标配?