发布时间:2024-06-23 18:51:26 浏览量:169次
要求:按空格键,玩家发射子弹,子弹(长条形)从玩家所在位置自行向上运动。敌人在顶部随机位置出现,向下运动。子弹和敌人碰撞时消失,子弹离开边界时自行消失。
用图形视图矿建编写的简单射击游戏
编程要点:
1. 类需使用connect函数,需要继承QObject类,头文件需包含<QObject>。
2. 利用定时器QTimer和connect槽函数实现子弹和敌人的自动运动。
3. 设置玩家的焦点特性,接受键盘事件,空格键发射子弹。
4. 重写键盘事件,使用光标键控制玩家移动,空格键发射子弹。
5. 视图窗体固定大小,防止场景扩大导致滚动。
6. 子弹和敌人碰撞时,删除并释放内存。
7. 子弹和敌人离开视图窗体边界时,删除节省内存。
这里给出子弹类的代码:
-----------------bullet.h------------------
#ifndef BULLET_H
#define BULLET_H
#include <QGraphicsRectItem>
#include <QObject>
class Bullet: public QObject, public QGraphicsRectItem
{
Q_OBJECT
public:
Bullet();
public slots:
void move();
};
#endif // BULLET_H
-----------------bullet.cpp------------------
#include "bullet.h"
#include "Enemy.h"
#include <QGraphicsRectItem>
#include <QTimer>
#include <QGraphicsItem>
#include <QObject>
#include <QGraphicsScene>
#include <QDebug>
#include <QList>
Bullet::Bullet()
{
setRect(0,0,10,50);
QTimer *timer = new QTimer();
connect(timer, SIGNAL(timeout()), this, SLOT(move()));
timer->start(20);
}
void Bullet::move() {
QList <QGraphicsItem*> colliding_items = collidingItems();
for(int i=0, n=colliding_items.size(); i<n; i++)
{
if(typeid(*(colliding_items[i])) == typeid(Enemy))
{
scene()->removeItem(colliding_items[i]);
scene()->removeItem(this);
delete colliding_items[i];
delete this;
return;
}
}
setPos(x(), y()-10);
if(this->pos().y() + this->rect().height() < 0)
{
scene()->removeItem(this);
delete this;
qDebug()<<"bullet deleted";
}
热门资讯
探讨游戏引擎的文章,介绍了10款游戏引擎及其代表作品,涵盖了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戏设计领域和数字艺术教育的重要性,欢迎点击咨询报名。
2. 手机游戏如何开发(如何制作传奇手游,都需要准备些什么?)
如何制作传奇手游,都需要准备些什么?提到传奇手游相信大家都不陌生,他是许多80、90后的回忆;从起初的端游到现在的手游,说明时代在进步游戏在更新,更趋于方便化移动化。而如果我们想要制作一款传奇手游的
3. B站视频剪辑软件「必剪」:免费、炫酷特效,小白必备工具
B站视频剪辑软件「必剪」,完全免费、一键制作炫酷特效,适合新手小白。快来试试!
游戏中玩家将面临武侠人生的挣扎抉择,战或降?杀或放?每个抉定都将触发更多爱恨纠葛的精彩奇遇。《天命奇御》具有多线剧情多结局,不限主线发展,高自由...
5. Bigtime加密游戏经济体系揭秘,不同玩家角色的经济活动
Bigtime加密游戏经济模型分析,探讨游戏经济特点,帮助玩家更全面了解这款GameFi产品。
6. 3D动漫建模全过程,不是一般人能学的会的,会的多不是人?
步骤01:面部,颈部,身体在一起这次我不准备设计图片,我从雕刻进入。这一次,它将是一种纯粹关注建模而非整体绘画的形式。像往常一样,我从Sphere创建它...
7. 3D动画软件你知道几个?3ds Max、Blender、Maya、Houdini大比拼
当提到3D动画软件或动画工具时,指的是数字内容创建工具。它是用于造型、建模以及绘制3D美术动画的软件程序。但是,在3D动画软件中还包含了其他类型的...
三昧动漫对于著名ARPG游戏《巫师》系列,最近CD Projekt 的高层回应并不会推出《巫师4》。因为《巫师》系列在策划的时候一直定位在“三部曲”的故事框架,所以在游戏的出品上不可能出现《巫师4》
想让你的3D打印模型更坚固?不妨尝试一下Cura参数设置和设计技巧,让你轻松掌握!
10. Unity3D入门:手把手带你开发一款坦克大战的游戏
Unity工程创建完成后如图所示: 接下来应该导入此项目所需的Unity Package文件,要用到的Unity package文件大家可以去Unity3D的官方网站下载(地址:ht...
同学您好!