花3天时间,用Qt C++做了一个产品级"见缝插针"小游戏,结果被虐哭了|Qt见缝插针|Qt开发|Qt游戏开发|C语言|C++
花了三天,使用Qt C++从0设计到实现,使用基本Qt绘图,动画,地图数据使用json格式表示,总计搞了60关,灵感来自于html5版 官方见缝插针,一比一复刻,
B站点赞超过6000开放源代码
地图解析
{
"#":2,
"defaultBallsAngle" : [0, 180],
"stackBallsCount" : 20,
"strategy" : { "name":"NormalStrategy","nSpeed":1.5,"direction":1 }
}
- #:表示关卡
- defaultBallsAngle:数组,表示默认的小球的角度
- stackBallsCount:待插入小球的数量
- startegy:游戏的玩法策略
- name:策略名称
- nSpeed:旋转速度
- direction:旋转防方向
部分代码
void GameScene::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setPen(QPen(QColor(Qt::white),2));
painter.setRenderHint(QPainter::Antialiasing);
for(auto ball : coreBalls)
{
//需要先画线不然的话会影响后面小球文字的绘制 会有个白色线
painter.drawLine(centerBall->getPos(),ball->getPos());
ball->draw(painter);
}
if(centerBall != nullptr)
{
centerBall->draw(painter);
}
//绘制剩余的球
for(auto ball : leftBalls)
{
ball->draw(painter);
}
//绘制弹出小球
for(auto ball : popupBalls)
{
ball->draw(painter);
}
//painter.drawLine(QPointF(0,height()/2),QPointF(width(),height() /2 ));
QWidget::paintEvent(event);
}
这是绘制部分的代码,简单展示一下
下载地址
链接:https://pan.baidu.com/s/1-LNu1ZWZo1oMg5x3NXu3yg 提取码:nsiv