#include "card.h"
#include <QDebug>
#include <QGraphicsSceneMouseEvent>
#include "shop.h"
#include <QApplication>
#include <QMimeData>
#include <QDrag>
const QVector<QString> Card::name = {"SunFlower","Peashooter","CherryBomb","WallNut",
"SnowPea","PotatoMine","Repeater"};
const QMap<QString,int> Card::map = {{"SunFlower",0},{"PeaShooter",1},{"CherryBomb",2},
{"WallNut",3},{"SnowPea",4},{"PotatoMine",5},
{"Repeater",6}};
const QVector<int> Card::cost = {50,100,150,50,175,25,200};
const QVector<int> Card::cool = {227,227,606,606,227,606,227};
Card::Card(QString s)
{
text=s;
count = 0;
}
QRectF Card::boundingRect() const
{
return QRectF(-50,-30,100,60);
}
void Card::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
Q_UNUSED(option);
Q_UNUSED(widget);
painter->scale(0.6,0.58);
painter->drawPixmap(QRect(-50,-70,100,140),QPixmap(":/images/Card.png"));
painter->drawPixmap(QRect(-35,-42,70,70),QPixmap(":/images/"+text+".png"));
QFont font;
font.setPointSize(15);
painter->setFont(font);
painter->drawText(-30,60,QString().sprintf("%3d",cost[map[text]]));
//画冷却时的黑色阴影
if(count < cool[map[text]])
{
QBrush brush(QColor(0,0,0,200));
painter->setBrush(brush);
painter->drawRect(QRectF(-48,-68,98,132*(1-qreal(count)/cool[map[text]])));
}
}
void Card::advance(int phase)
{
qDebug()<<"advance";
if(!phase)
return;
update();
if(count < cool[map[text]])
++count;
}
void Card::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
//判断是否已经过了冷却时间
if(count < cool[map[text]])
{
event->setAccepted(false);
}
//判断阳光数是否可以购买植物
Shop *shop = qgraphicsitem_cast<Shop *>(parentItem());
if(shop->sun < cost[map[text]])
{
event->setAccepted(false);
}
}
void Card::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
//过滤轻微的鼠标抖动
if(QLineF(event->screenPos(),event->buttonDownScreenPos(Qt::LeftButton)).length()
< QApplication::startDragDistance())
{
return;
}
//设置拖动的数据
QMimeData *data = new QMimeData;
data->setText(text);
QImage image(":/images/"+text+".png");
data->setImageData(image);
//执行拖动的效果
QDrag *drag = new QDrag(event->widget());
drag->setMimeData(data);
drag->setPixmap(QPixmap::fromImage(image));
drag->setHotSpot(QPoint(35,35));
drag->exec();
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于Qt开发的植物大战僵尸游戏源码(高分C++程序设计期末课程设计).zip
共70个文件
gif:28个
png:18个
cpp:9个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 104 浏览量
2023-08-26
16:22:54
上传
评论
收藏 2.62MB ZIP 举报
温馨提示
基于Qt开发的植物大战僵尸游戏源码(高分C++程序设计期末课程设计).zip 该项目是个人大作业项目源码,评审分达到95分以上,都经过严格调试,确保可以运行!放心下载使用。 该项目资源主要针对计算机相关专业的学生或从业者下载使用,也可作为期末课程设计、期末课程大作业等,具有较高的学习价值。 基于Qt开发的植物大战僵尸游戏源码(高分C++程序设计期末课程设计).zip 该项目是个人大作业项目源码,评审分达到95分以上,都经过严格调试,确保可以运行!放心下载使用。 该项目资源主要针对计算机相关专业的学生或从业者下载使用,也可作为期末课程设计、期末课程大作业等,具有较高的学习价值。基于Qt开发的植物大战僵尸游戏源码(高分C++程序设计期末课程设计).zip 该项目是个人大作业项目源码,评审分达到95分以上,都经过严格调试,确保可以运行!放心下载使用。 该项目资源主要针对计算机相关专业的学生或从业者下载使用,也可作为期末课程设计、期末课程大作业等,具有较高的学习价值。基于Qt开发的植物大战僵尸游戏源码(高分C++程序设计期末课程设计).zip 该项目是个人大作业项目源码,评审分达到9
资源推荐
资源详情
资源评论
收起资源包目录
Qt开发的植物大战僵尸游戏.zip (70个子文件)
Qt开发的植物大战僵尸游戏
shop.h 407B
shovel.cpp 427B
sun.cpp 1KB
other.h 240B
card.cpp 3KB
game_PVZ.pro.user 23KB
shovel.h 276B
main.cpp 844B
sun.h 576B
mymap.cpp 771B
button.h 360B
resources.qrc 697B
shop.cpp 1004B
mymap.h 335B
button.cpp 815B
game_PVZ.pro 441B
.gitignore 270B
images
Peashooter.png 4KB
arch.png 549KB
ConeZombieAttack.gif 40KB
Button.png 923B
Repeater.png 4KB
BucketZombieAttack.gif 45KB
Background.jpg 168KB
LawnMower.png 5KB
SunFlower.png 6KB
ZombiesWon.png 24KB
BucketZombieWalk.gif 50KB
Sun.gif 38KB
FootballZombieDie.gif 34KB
PotatoMineBomb.gif 9KB
PotatoMine1.gif 495B
Pea.png 1KB
WallNut.png 3KB
Repeater.gif 28KB
ZombieWalk1.gif 65KB
ZombieHead.gif 15KB
SnowPea.png 4KB
SnowPea.gif 25KB
pvz.jpeg 36KB
FootballZombieAttack.gif 46KB
PotatoMine.png 4KB
Burn.gif 19KB
ConeZombieWalk.gif 72KB
logo.svg 5KB
Boom.gif 53KB
ZombieWalk2.gif 78KB
ScreenZombieAttack.gif 53KB
FootballZombieWalk.gif 51KB
Shovel.png 13KB
ScreenZombieWalk.gif 98KB
ShovelBank.png 4KB
CherryBomb.gif 16KB
WallNut.gif 20KB
Peashooter.gif 21KB
CherryBomb.png 4KB
SunFlower.gif 40KB
WallNut1.gif 14KB
PotatoMine.gif 12KB
PeaSnow.png 2KB
ZombieDie.gif 21KB
Card.png 16KB
ZombieAttack.gif 58KB
ui.png 869KB
WallNut2.gif 27KB
Shop.png 12KB
card.h 653B
gamemainwindow.h 365B
other.cpp 88B
gamemainwindow.cpp 2KB
共 70 条
- 1
资源评论
盈梓的博客
- 粉丝: 6841
- 资源: 1247
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 3122080306 邹子轩 实验报告二.docx
- 基于STM32 NUCLEO板设计彩色LED照明灯(纯cubeMX开发)(大赛作品,文档完整,可直接运行)
- 发那科工业机器人保养大全
- Sphere.h
- REMD固有时间尺度分解信号分量可视化(Matlab完整源码和数据)
- 嵌入式系统双单片机STC89C52+STC15W104多功能学习板电路图可扩展 适用于单片机初学者和教学
- 基于STM32蓝牙控制小车系统设计(硬件+源代码+论文)大赛作品
- XILINXFPGA源码基于Spartan3火龙刀系列FPGA开发板VGA测试例程
- Java聊天室的设计与实现【尚学堂·百战程序员】
- python中matplotlib教程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功