代码拉取完成,页面将自动刷新
#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();
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。