Add basic platform

This commit is contained in:
ItsDrike 2025-03-18 14:32:07 +01:00
parent 77bb46e7fd
commit 252f467332
Signed by: ItsDrike
GPG key ID: FA2745890B7048C0
4 changed files with 58 additions and 0 deletions

View file

@ -1,10 +1,13 @@
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QDebug>
#include <memory>
MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWindow) {
ui->setupUi(this);
platform = std::make_shared<Platform>(this);
auto ball = std::make_shared<Ball>(this);
connect(ball.get(), &Ball::deleted, this, &MainWindow::onDeleteBall);
balls.append(ball);
@ -25,6 +28,8 @@ void MainWindow::paintEvent(QPaintEvent*) {
for (auto ball : balls) {
ball->draw(painter);
}
platform->draw(painter);
}
void MainWindow::onDeleteBall(Ball* ball) {

View file

@ -2,6 +2,7 @@
#define MAINWINDOW_H
#include "ball.h"
#include "platform.h"
#include <QMainWindow>
QT_BEGIN_NAMESPACE
@ -26,5 +27,6 @@ class MainWindow : public QMainWindow {
private:
Ui::MainWindow* ui;
QList<std::shared_ptr<Ball>> balls;
std::shared_ptr<Platform> platform;
};
#endif // MAINWINDOW_H

26
src/platform.cpp Normal file
View file

@ -0,0 +1,26 @@
#include "platform.h"
#include <QDebug>
#define TICK_SPEED 15
#define PLATFORM_WIDTH 100
#define PLATFORM_HEIGHT 20
#define PLATFORM_MARGIN_BOTTOM 80
#define SPEED 5.0
Platform::Platform(QWidget* parent) : m_parent{parent} {
QRect rct = parent->rect();
m_x = rand() % (rct.width() - PLATFORM_WIDTH);
m_y = rct.height() - (PLATFORM_HEIGHT + PLATFORM_MARGIN_BOTTOM);
start(TICK_SPEED);
}
void Platform::draw(QPainter& painter) {
QRect rct(m_x, m_y, PLATFORM_WIDTH, PLATFORM_HEIGHT);
painter.drawRect(rct);
}
void Platform::timerEvent(QTimerEvent*) {
m_parent->update();
}

25
src/platform.h Normal file
View file

@ -0,0 +1,25 @@
#ifndef PLATFORM_H
#define PLATFORM_H
#include <QPainter>
#include <QTimer>
#include <QWidget>
class Platform : public QTimer {
Q_OBJECT
public:
Platform(QWidget* parent);
void draw(QPainter& painter);
protected:
virtual void timerEvent(QTimerEvent*) override;
private:
QWidget* m_parent;
double m_x;
double m_y;
};
#endif // PLATFORM_H