Qt之塔防游戏 c++(一)

这篇博客介绍了使用Qt进行C++塔防游戏开发的第一部分,内容包括:图片绘制、敌人运动轨迹绘制、防御塔坑的绘制以及通过鼠标点击事件实现防御塔的出现。详细讲解了相关类的设计和实现,提供了源代码和资源链接。
摘要由CSDN通过智能技术生成

话不多说,我们直接进入正题吧。

这个阶段我们要完成如下功能:
1:图片的绘制
2:敌人运动轨迹的绘制
3:防御塔坑(可放置防御塔点)的绘制
4:鼠标点击事件,实现防御塔的出现

图片的绘制

首先我们在Qt中,创建一个widget工程
在这里插入图片描述得到这个工程后,我们在mainwindow.h中做如下添加:

//类外
#include <QPaintEvent>

//类内
protected:
void paintEvent(QPaintEvent*);

添加Qt Resource File文件
在这里插入图片描述
把要用到的图片都放到这个文件夹中。

然后进入mainwindow.cpp,做如下添加:

void Mainwindow::paintEvent(QPaintEvent*)
{
   
    QPainter painter(this);
    QString path(":/images/background1.jpg");//path是你图片的路径

    painter.drawPixmap(0,0,750,375,path);
    //drawPixmap的前四个参数代表的分别是,图片左上角的横坐标,图片左上角的纵坐标,图片的width,图片的height。我们一般把width和height,与图片的真实大小匹配起来
}

运行上述程序,就可以得到下面的结果啦!
在这里插入图片描述
#敌人运动轨迹的绘制
我们添加一个类wayPoint(航点)
wayPoint.h的实现:

#ifndef WAYPOINT_H
#define WAYPOINT_H

#include <QPoint>
#include <QPainter>

class wayPoint
{
   
public:
    wayPoint(QPoint pos);
    void setNextWayPoint(wayPoint * nextWayPoint);//设置下一个航点
    wayPoint * getNextWayPoint();//得到下一个航点的指针
    const QPoint getPos();//得到本航点的中心点
    void draw(QPainter * painter) const;//绘画类函数
private:
    QPoint m_pos;//航点的中心点
    wayPoint * m_nextWayPoint;//下一个航点的指针
};
#endif // WAYPOINT_H

wayPoint.cpp中的实现:

#include "waypoint.h"

#include <QPoint>
#include <QPainter>

wayPoint::wayPoint(QPoint pos):
    m_pos(pos),
    m_nextWayPoint(NULL)
{
   
}

void wayPoint::setNextWayPoint(wayPoint *nextWayPoint)
{
   
    this->m_nextWayPoint=nextWayPoint;
}

wayPoint * wayPoint::getNextWayPoint()
{
   
    return this->m_nextWayPoint;
}

const QPoint wayPoint::getPos()
{
   
    return this->m_pos;
}

void wayPoint::draw(QPainter * painter) const
{
   
    painter->save();//保存原始的绘画参数
    painter->setPen(Qt::green);//设置画笔的颜色
    painter->drawEllipse(m_pos,4,4);//画一个半径为4的圆
    //注意,图片的大小单位是像素
    painter->drawEllipse(m_pos,1,1);//半径为1的圆
    if(m_nextWayPoint)//如果存在下一个航点,就把这两个航点连接起来
    {
   
        painter->drawLine(m_pos,m_nextWayPoint->getPos());//painter内的画直线的方法
    }
    painter->restore();//还原原来的画笔设置
}

完成wayPoint类的创建后,我们在mainwindow(程序运行得到的窗口)中把这些航点画出来。
先在mainwindow.h中添加:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#
  • 24
    点赞
  • 115
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值