From 6250e5df9dd2d10534282a430bdaccc1485f3fa0 Mon Sep 17 00:00:00 2001 From: Georg Spar Date: Mon, 3 Oct 2022 15:48:11 +0200 Subject: [PATCH] init --- CMakeLists.txt | 65 +++++++++ CMakeLists.txt.user | 339 ++++++++++++++++++++++++++++++++++++++++++++ MyRect.cpp | 33 +++++ MyRect.h | 11 ++ bullet.cpp | 15 ++ bullet.h | 16 +++ main.cpp | 22 +++ tut1.cpp | 15 ++ tut1.h | 21 +++ tut1.ui | 19 +++ 10 files changed, 556 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 CMakeLists.txt.user create mode 100644 MyRect.cpp create mode 100644 MyRect.h create mode 100644 bullet.cpp create mode 100644 bullet.h create mode 100644 main.cpp create mode 100644 tut1.cpp create mode 100644 tut1.h create mode 100644 tut1.ui diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..0c53011 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,65 @@ +cmake_minimum_required(VERSION 3.5) + +project(GameTut 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 + MyRect.h + MyRect.cpp + bullet.h + bullet.cpp + +) + +if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) + qt_add_executable(GameTut + MANUAL_FINALIZATION + ${PROJECT_SOURCES} + ) +# Define target properties for Android with Qt 6 as: +# set_property(TARGET GameTut 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(GameTut 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(GameTut + ${PROJECT_SOURCES} + ) + endif() +endif() + +target_link_libraries(GameTut PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) + +set_target_properties(GameTut 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 GameTut + BUNDLE DESTINATION . + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +if(QT_VERSION_MAJOR EQUAL 6) + qt_finalize_executable(GameTut) +endif() diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user new file mode 100644 index 0000000..f4ff5dd --- /dev/null +++ b/CMakeLists.txt.user @@ -0,0 +1,339 @@ + + + + + + EnvironmentId + {e6ee6a48-b810-4fb5-bc4f-5e4838e40a27} + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + false + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + UTF-8 + false + 4 + false + 80 + true + true + 1 + false + true + false + 0 + true + true + 0 + 8 + true + false + 1 + true + true + true + *.md, *.MD, Makefile + false + true + + + + ProjectExplorer.Project.Target.0 + + Desktop + Desktop Qt 6.4.0 GCC 64bit + Desktop Qt 6.4.0 GCC 64bit + qt.qt6.640.gcc_64_kit + 0 + 0 + 0 + + Debug + -DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_BUILD_TYPE:STRING=Debug +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} + 0 + /home/sparg/programming/qt/build-GameTut-Desktop_Qt_6_4_0_GCC_64bit-Debug + + + + all + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + clean + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Debug + CMakeProjectManager.CMakeBuildConfiguration + + + Release + -DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_BUILD_TYPE:STRING=Release +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} + /home/sparg/programming/qt/build-GameTut-Desktop_Qt_6_4_0_GCC_64bit-Release + + + + all + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + clean + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release + CMakeProjectManager.CMakeBuildConfiguration + + + RelWithDebInfo + -DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} + /home/sparg/programming/qt/build-GameTut-Desktop_Qt_6_4_0_GCC_64bit-RelWithDebInfo + + + + all + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + clean + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release with Debug Information + CMakeProjectManager.CMakeBuildConfiguration + + + RelWithDebInfo + -DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} + 0 + /home/sparg/programming/qt/build-GameTut-Desktop_Qt_6_4_0_GCC_64bit-Profile + + + + all + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + clean + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Profile + CMakeProjectManager.CMakeBuildConfiguration + + + MinSizeRel + -DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_BUILD_TYPE:STRING=MinSizeRel +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} + /home/sparg/programming/qt/build-GameTut-Desktop_Qt_6_4_0_GCC_64bit-MinSizeRel + + + + all + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + clean + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Minimum Size Release + CMakeProjectManager.CMakeBuildConfiguration + + 5 + + + 0 + Deploy + Deploy + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ProjectExplorer.DefaultDeployConfiguration + + 1 + + true + true + true + + 2 + + ProjectExplorer.CustomExecutableRunConfiguration + + false + true + false + true + + 1 + + + + ProjectExplorer.Project.TargetCount + 1 + + + ProjectExplorer.Project.Updater.FileVersion + 22 + + + Version + 22 + + diff --git a/MyRect.cpp b/MyRect.cpp new file mode 100644 index 0000000..f221206 --- /dev/null +++ b/MyRect.cpp @@ -0,0 +1,33 @@ +#include "MyRect.h" +#include +#include +#include "bullet.h" +#include "qgraphicsscene.h" +#include + +void MyRect::keyPressEvent(QKeyEvent *event) +{ + if (event->key() == Qt::Key_Left) { + setPos(x() -10, y()); + } + + else if( event->key() == Qt::Key_Right ) { + setPos(x() +10, y()); + } + + else if( event->key() == Qt::Key_Up ) { + setPos(x(), y() -10); + } + + else if(event->key() == Qt::Key_Down) { + setPos(x(), y() +10); + } + + else if(event->key() == Qt::Key_Space) { + Bullet* bullet = new Bullet(); + bullet->setPos(x(),y()); + scene()->addItem(bullet); + + + } +} diff --git a/MyRect.h b/MyRect.h new file mode 100644 index 0000000..c701786 --- /dev/null +++ b/MyRect.h @@ -0,0 +1,11 @@ +#ifndef MYRECT_H +#define MYRECT_H + +#include + +class MyRect: public QGraphicsRectItem { +public: + void keyPressEvent(QKeyEvent* event); +}; + +#endif // MYRECT_H diff --git a/bullet.cpp b/bullet.cpp new file mode 100644 index 0000000..5649075 --- /dev/null +++ b/bullet.cpp @@ -0,0 +1,15 @@ +#include "bullet.h" +#include + +Bullet::Bullet() +{ + setRect(0,0,10,50); + QTimer* timer = new QTimer(); + connect(timer, SIGNAL(timeout()), this, SLOT(move())); + timer->start(50); +} + +void Bullet::move() +{ + this->setPos(x(), y()-10); +} diff --git a/bullet.h b/bullet.h new file mode 100644 index 0000000..646c6e4 --- /dev/null +++ b/bullet.h @@ -0,0 +1,16 @@ +#ifndef BULLET_H +#define BULLET_H + +#include +#include + + +class Bullet : public QObject, public QGraphicsRectItem { + Q_OBJECT +public: + Bullet(); +public slots: + void move(); +}; + +#endif // BULLET_H diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..8ae58bf --- /dev/null +++ b/main.cpp @@ -0,0 +1,22 @@ +#include +#include +#include +#include "MyRect.h" + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + + MyRect* rect = new MyRect(); + rect->setRect(0,0,100,100); + rect->setFlag(QGraphicsItem::ItemIsFocusable); + rect->setFocus(); + QGraphicsScene* scene = new QGraphicsScene(); + scene->addItem(rect); + + QGraphicsView* view = new QGraphicsView(scene); + + view->show(); + + return a.exec(); +} diff --git a/tut1.cpp b/tut1.cpp new file mode 100644 index 0000000..09da997 --- /dev/null +++ b/tut1.cpp @@ -0,0 +1,15 @@ +#include "tut1.h" +#include "./ui_tut1.h" + +Tut1::Tut1(QWidget *parent) + : QWidget(parent) + , ui(new Ui::Tut1) +{ + ui->setupUi(this); +} + +Tut1::~Tut1() +{ + delete ui; +} + diff --git a/tut1.h b/tut1.h new file mode 100644 index 0000000..4504d19 --- /dev/null +++ b/tut1.h @@ -0,0 +1,21 @@ +#ifndef TUT1_H +#define TUT1_H + +#include + +QT_BEGIN_NAMESPACE +namespace Ui { class Tut1; } +QT_END_NAMESPACE + +class Tut1 : public QWidget +{ + Q_OBJECT + +public: + Tut1(QWidget *parent = nullptr); + ~Tut1(); + +private: + Ui::Tut1 *ui; +}; +#endif // TUT1_H diff --git a/tut1.ui b/tut1.ui new file mode 100644 index 0000000..590a1bc --- /dev/null +++ b/tut1.ui @@ -0,0 +1,19 @@ + + + Tut1 + + + + 0 + 0 + 800 + 600 + + + + Tut1 + + + + +