创建好后生成.h 和 .cpp两个文件
文章插图
6.2 飞机的成员函数和成员属性
在.h中添加代码
- class HeroPlane
- {
- public:
- HeroPlane();
- //发射子弹
- void shoot();
- //设置飞机位置
- void setPosition(int x, int y);
- public:
- //飞机资源 对象
- QPixmap m_Plane;
- //飞机坐标
- int m_X;
- int m_Y;
- //飞机的矩形边框
- QRect m_Rect;
- };
6.3 成员函数实现
这里飞机有个发射子弹的成员函数,由于我们还没有做子弹
因此这个成员函数先写成空实现即可
在.h中追加飞机配置参数
- /**********飞机配置数据 **********/
- #define HERO_PATH ":/res/hero2.png"
.cpp中实现成员函数代码:
- #include "heroplane.h"
- #include "config.h"
- HeroPlane::HeroPlane()
- {
- //初始化加载飞机图片资源
- m_Plane.load(HERO_PATH);
- //初始化坐标
- m_X = GAME_WIDTH * 0.5 - m_Plane.width()*0.5;
- m_Y = GAME_HEIGHT - m_Plane.height();
- //初始化矩形框
- m_Rect.setWidth(m_Plane.width());
- m_Rect.setHeight(m_Plane.height());
- m_Rect.moveTo(m_X,m_Y);
- }
- void HeroPlane::setPosition(int x, int y)
- {
- m_X = x;
- m_Y = y;
- m_Rect.moveTo(m_X,m_Y);
- }
- void HeroPlane::shoot()
- {
- }
6.4 创建飞机对象并显示
在.h中追加新的成员属性
- //飞机对象
- HeroPlane m_hero;
在.cpp的中追加代码
- //绘制英雄
- painter.drawPixmap(m_hero.m_X,m_hero.m_Y,m_hero.m_Plane);
测试飞机显示到屏幕中
文章插图
6.5 拖拽飞机
在.h中添加鼠标移动事件
- //鼠标移动事件
- void mouseMoveEvent(QMouseEvent *event);
重写鼠标移动事件
- void MainScene::mouseMoveEvent(QMouseEvent *event)
- {
- int x = event->x() - m_hero.m_Rect.width()*0.5; //鼠标位置 - 飞机矩形的一半
- int y = event->y() - m_hero.m_Rect.height()*0.5;
- //边界检测
- if(x <= 0 )
- {
- x = 0;
- }
- if(x >= GAME_WIDTH - m_hero.m_Rect.width())
- {
- x = GAME_WIDTH - m_hero.m_Rect.width();
- }
- if(y <= 0)
- {
- y = 0;
- }
- if(y >= GAME_HEIGHT - m_hero.m_Rect.height())
- {
- y = GAME_HEIGHT - m_hero.m_Rect.height();
- }
- m_hero.setPosition(x,y);
- }
测试飞机可以拖拽
文章插图
7 子弹制作
制作步骤如下:
7.1 创建子弹文件和类
创建类以及生成对应的文件
创建好后生成.h 和 .cpp两个文件
文章插图
- 山本五十六之死:中国人破译密电美国军机截杀
- 成吉思汗陵墓五大谜团大宝藏究竟在哪儿
- Windows远程桌面实现之五(FFMPEG实现桌面屏幕RTSP
- 一加五,一加5怎么oo
- 五阿哥永琪死得太早如果继位能斗过和珅吗
- 解密帝王为何被称之为九五之尊
- 盘点:曹军战亡五大虎将排名
- psp罪恶都市秘籍召唤飞机 psp罪恶都市秘籍
- 一五阳性可以转阴吗,乙肝一五阳性可以转阴真的吗?乙肝科
- 五代时期诗人黄损生平简介黄损代表作品