From 091e7faaf5940469f1db1f2fae6b3847a82baacf Mon Sep 17 00:00:00 2001 From: Georg Spar Date: Thu, 6 Oct 2022 19:54:15 +0200 Subject: [PATCH] Tut 9 --- CMakeLists.txt | 63 +++++++++++++++++++++++++++++++++++++++++++++++++ game.cpp | 17 +++++++++++++ game.h | 13 ++++++++++ main.cpp | 15 ++++++++++++ res.qrc | 5 ++++ tower.cpp | 33 ++++++++++++++++++++++++++ tower.h | 14 +++++++++++ tower.png | Bin 0 -> 10502 bytes widget.cpp | 15 ++++++++++++ widget.h | 21 +++++++++++++++++ widget.ui | 19 +++++++++++++++ 11 files changed, 215 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 game.cpp create mode 100644 game.h create mode 100644 main.cpp create mode 100644 res.qrc create mode 100644 tower.cpp create mode 100644 tower.h create mode 100644 tower.png create mode 100644 widget.cpp create mode 100644 widget.h create mode 100644 widget.ui diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..01cfa48 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,63 @@ +cmake_minimum_required(VERSION 3.5) + +project(TowerDefense VERSION 0.1 LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) + +set(PROJECT_SOURCES + main.cpp + tower.h tower.cpp + game.h game.cpp + res.qrc +) + +if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) + qt_add_executable(TowerDefense + MANUAL_FINALIZATION + ${PROJECT_SOURCES} + ) +# Define target properties for Android with Qt 6 as: +# set_property(TARGET TowerDefense APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR +# ${CMAKE_CURRENT_SOURCE_DIR}/android) +# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation +else() + if(ANDROID) + add_library(TowerDefense SHARED + ${PROJECT_SOURCES} + ) +# Define properties for Android with Qt 5 after find_package() calls as: +# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android") + else() + add_executable(TowerDefense + ${PROJECT_SOURCES} + ) + endif() +endif() + +target_link_libraries(TowerDefense PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) + +set_target_properties(TowerDefense PROPERTIES + MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com + MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} + MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} + MACOSX_BUNDLE TRUE + WIN32_EXECUTABLE TRUE +) + +install(TARGETS TowerDefense + BUNDLE DESTINATION . + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +if(QT_VERSION_MAJOR EQUAL 6) + qt_finalize_executable(TowerDefense) +endif() diff --git a/game.cpp b/game.cpp new file mode 100644 index 0000000..3c10417 --- /dev/null +++ b/game.cpp @@ -0,0 +1,17 @@ +#include "game.h" +#include +#include "tower.h" + +Game::Game() { + scene = new QGraphicsScene(this); + + setScene(scene); + + // create a tower + Tower *t = new Tower(); + + // add tower + scene->addItem(t); + + setFixedSize(800,600); +} diff --git a/game.h b/game.h new file mode 100644 index 0000000..561bebe --- /dev/null +++ b/game.h @@ -0,0 +1,13 @@ +#ifndef GAME_H +#define GAME_H + +#include + +class Game : public QGraphicsView +{ +public: + Game(); + QGraphicsScene *scene; +}; + +#endif // GAME_H diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..bec84d9 --- /dev/null +++ b/main.cpp @@ -0,0 +1,15 @@ +#include "game.h" + +#include + + + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + + Game *game = new Game(); + game->show(); + + return a.exec(); +} diff --git a/res.qrc b/res.qrc new file mode 100644 index 0000000..45bf7a6 --- /dev/null +++ b/res.qrc @@ -0,0 +1,5 @@ + + + tower.png + + diff --git a/tower.cpp b/tower.cpp new file mode 100644 index 0000000..25fdcd2 --- /dev/null +++ b/tower.cpp @@ -0,0 +1,33 @@ +#include "tower.h" +#include +#include +#include + +Tower::Tower(QGraphicsItem *parent) { + setPixmap(QPixmap(":/images/tower.png")); + + // create points vectors + QVector points; + points << QPoint(1,0) << QPoint(2,0) << QPoint(3,1) << QPoint(3,2) << QPoint(2,3) << QPoint(1,3) << QPoint(0,2) << QPoint(0,1); + + // scale points + int SCALE_FACTOR = 70; + for (size_t i = 0, n = points.size(); i setPos(x()+ln.dx(), y()+ln.dy()); + +} diff --git a/tower.h b/tower.h new file mode 100644 index 0000000..5e002ce --- /dev/null +++ b/tower.h @@ -0,0 +1,14 @@ +#ifndef TOWER_H +#define TOWER_H + +#include +#include + +class Tower : public QGraphicsPixmapItem { +public: + Tower(QGraphicsItem *parent=0); +private: + QGraphicsPolygonItem *attack_area; +}; + +#endif // TOWER_H diff --git a/tower.png b/tower.png new file mode 100644 index 0000000000000000000000000000000000000000..943c8c2f289ff91bde270cb8ce3a77e07d793159 GIT binary patch literal 10502 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 +} + +Widget::~Widget() +{ + delete ui; +} + diff --git a/widget.h b/widget.h new file mode 100644 index 0000000..1fe2322 --- /dev/null +++ b/widget.h @@ -0,0 +1,21 @@ +#ifndef WIDGET_H +#define WIDGET_H + +#include + +QT_BEGIN_NAMESPACE +namespace Ui { class Widget; } +QT_END_NAMESPACE + +class Widget : public QWidget +{ + Q_OBJECT + +public: + Widget(QWidget *parent = nullptr); + ~Widget(); + +private: + Ui::Widget *ui; +}; +#endif // WIDGET_H diff --git a/widget.ui b/widget.ui new file mode 100644 index 0000000..b90248d --- /dev/null +++ b/widget.ui @@ -0,0 +1,19 @@ + + + Widget + + + + 0 + 0 + 800 + 600 + + + + Widget + + + + +