From bc4f4f743dd293e8520c4f54c472494c2e21b4a2 Mon Sep 17 00:00:00 2001 From: bhattial100541 Date: Mon, 1 Dec 2025 12:07:37 +0100 Subject: [PATCH 1/8] some changes --- src/main.cpp | 137 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 136 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 38190c8..cc05f5a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -7,7 +7,142 @@ // ----------------------------------------------------------- int main() { - // Zufall initialisieren + // Zufall initialisieren#include "gamecube.h" + //#include + //#include + // + //// ----------------------------------------------------------- + //// 3D Memory Game – Hauptprogramm + //// ----------------------------------------------------------- + //int main() + //{ + // // Zufall initialisieren + // srand(time(NULL)); + // + // // Fenster und Kamera + // InitWindow(800, 600, "3D Memory Game with Matrix3D Library"); + // SetTargetFPS(60); + // + // Camera3D camera{}; + // camera.position = {6.0f, 6.0f, 6.0f}; + // camera.target = {0.0f, 0.0f, 0.0f}; + // camera.up = {0.0f, 1.0f, 0.0f}; + // camera.fovy = 45.0f; + // camera.projection = CAMERA_PERSPECTIVE; + // + // // Nur 3 Farben für 3 Paare + // Color colors[] = { RED, GREEN, BLUE }; + // + // // 6 Karten-Positionen im 3x2 Raster + // std::vector positions = {{-2, 0, -2}, {0, 0, -2}, {2, 0, -2},{-2, 0, 0}, {0, 0, 0}, {2, 0, 0}}; + // + // // Farben doppelt in einen Pool legen und mischen + // std::vector colorPool; + // for (int i = 0; i < 3; i++) + // { + // colorPool.push_back(colors[i]); + // colorPool.push_back(colors[i]); + // } + // + // // Fisher-Yates Shuffle mit rand() + // for (int i = colorPool.size() - 1; i > 0; --i) + // { + // int j = rand() % (i + 1); // Zufallsindex von 0 bis i + // std::swap(colorPool[i], colorPool[j]); + // } + // + // // Karten/Würfel erstellen + // std::vector cubes; + // for (int i = 0; i < 6; i++) + // cubes.emplace_back(positions[i], colorPool[i]); + // + // gamecube* first = nullptr; + // gamecube* second = nullptr; + // float flipSpeed = 5.0f; // Drehgeschwindigkeit + // bool gameWon = false; + // + // // ----------------------------------------------------------- + // // Hauptspielschleife + // // ----------------------------------------------------------- + // while (!WindowShouldClose()) + // { + // // Klick-Erkennung + // if (!gameWon && IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + // { + // Vector2 mouse = GetMousePosition(); + // + // for (auto &c : cubes) + // { + // if (!c.IsFlipped() && !c.IsMatched()) + // { + // Vector2 screenPos = GetWorldToScreen({c.GetPosition().x, c.GetPosition().y, c.GetPosition().z}, camera); + // + // if (fabs(mouse.x - screenPos.x) < 40 && fabs(mouse.y - screenPos.y) < 40) + // c.FlipForward(); + // } + // } + // } + // + // // Animation aller Würfel + // for (auto &c : cubes) + // { + // c.Update(flipSpeed); + // + // // Sobald ein Würfel vollständig umgedreht ist → merken + // if (c.IsFlipped() && !c.IsMatched()) + // { + // if (!first) first = &c; + // else if (!second && &c != first) second = &c; + // } + // } + // + // // Matching-Logik + // if (first && second) + // { + // Color col1 = first->GetColor(); + // Color col2 = second->GetColor(); + // + // if (col1.r == col2.r && col1.g == col2.g && col1.b == col2.b) + // { + // first->SetMatched(true); + // second->SetMatched(true); + // } + // else + // { + // first->FlipBackward(); + // second->FlipBackward(); + // } + // + // first = second = nullptr; + // } + // + // // Gewinnprüfung + // if (!gameWon) + // gameWon = std::all_of(cubes.begin(), cubes.end(), [](const gamecube &c){ return c.IsMatched(); }); + // + // // ----------------------------------------------------------- + // // Zeichnen + // // ----------------------------------------------------------- + // BeginDrawing(); + // ClearBackground(RAYWHITE); + // BeginMode3D(camera); + // + // for (auto &c : cubes) + // c.Draw(); + // + // EndMode3D(); + // + // if (gameWon) + // DrawText("Congrats! You found all pairs!", 150, 260, 30, DARKBLUE); + // else + // DrawText("Flip 2 cubes - find matching pairs!", 10, 10, 20, DARKGRAY); + // + // EndDrawing(); + // } + // + // CloseWindow(); + // return 0; + //} srand(time(NULL)); double startTime = 0.0; double endTime = 0.0; From c874f8b5171940f655fcc2ad869c66c4b8f457ea Mon Sep 17 00:00:00 2001 From: PapiBigSzill <04andrei22@gmail.com> Date: Mon, 1 Dec 2025 12:57:11 +0100 Subject: [PATCH 2/8] =?UTF-8?q?Menu=20f=C3=BCr=203,=206=20Paare=20hingef?= =?UTF-8?q?=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 8196 bytes .gitignore | 1 + CMakeLists.txt | 31 +++--- src/main.cpp | 291 +++++++++++++++++++++++++++++++------------------ 4 files changed, 197 insertions(+), 126 deletions(-) create mode 100644 .gitignore diff --git a/.DS_Store b/.DS_Store index a9921da2bb36b884333134329ddda31ade067b0a..c5dea7b42732e9265c9357a6064f583fe48a9fa1 100644 GIT binary patch literal 8196 zcmeHM&1(}u6o1pE&BkI$L8S=7qSqQ*Vn4u3OyfcPK$@ZlmAIP?Y3ODrXFs1BQYBg#o;?g;*or`)btG zh5^ICSTZ1<4>pR>1+Du^%SQ()nF2tk&@Bb+tY|>nS{JnLD~%BdQ&4CHWje)R3XXnT z+ZD9#E3M$fbn?OU%uHt}OwJDfwlpVJP}Wf4?6cYw}Xb z^|^~a>(_pG*Dim(9v}CP9dB(#z74Q9fYKaQsYwoPQ;jZ@OFgW?Cl758J>t54)8|z^ zs|f55D7oKKgaewTb-JTH+y=TsU6dT^9qPuh>_P&Y!Ymvs=p^i3C+sZv4PfVEJz`x+ z`=1H>DOd_bk9OjoN$~Y9vih{#eU&QML7SQhYq8g3te=+KfzN|Fti&Vn$kz_7(MsHx z+lB^#Lvgjqx$hpd9ru2t7FM!n)_Kr%8bPfs0S&JPlSdC4fycul?*(2* zV#{j4%2=67_T297;)0!DTisi*cUSYv3-;Cg%HCeaI(zBLwT;TQ-wgOma06lbwLz!V z^a)p@g6MCy(STx~zF_*{ z>r5P!Y20{+p2wFc1VSACC}I-f*QRRRN*pCN8#(wH z1SkS&bg+s*k0Iu069@z~*;JBY+mmYw&@(dJV;<5J%CHnc9}WaDb{?}9Y#K2PoM;9n z)$Zm+{(oci_x}^kf!Um4VB8sCsZzOA1Pcd0l9GgoT-!!@f+9rN^_7+oR5BfhmgzY3 f;U9)*+b|WFg4TVd(F6JS9|Fw#UlMPsv1Z^8^afwK delta 170 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{Mvv5sJ6q~50$jGxXU^g=(&tx8f>dB@;qLamh z>>0OD4ihR=6R)l|Ha65zFg2~!QK+^wGSE>lH!`TL<>U}m*0&Cd&(6us%kP~0Mo6Bq zYjUHo#AFrW8yizv7#Fj1a0oI3?EnG+ZXn?bvTkGIcjn3bGM*sI8JHjr0lAG~b3D%+ FW&j #include +#include +#include "raylib.h" // Stellen Sie sicher, dass raylib.h hier oder in gamecube.h inkludiert ist + // ----------------------------------------------------------- // 3D Memory Game – Hauptprogramm // ----------------------------------------------------------- + +enum GameScreen {MENU = 0, GAMEPLAY}; + + +void SetupGame(std::vector& cubes, int pairs) +{ + cubes.clear(); + Color colors[] = {RED, GREEN, BLUE, YELLOW, ORANGE, PURPLE, WHITE, SKYBLUE}; + std::vector positions; + + int count = pairs * 2; + int cols = 3; + int rows = 2; + if (count > 6) { + cols = 4; + rows = 3; + } + int index = 0; + // Generiert Positionen basierend auf der Größe + for (int r = 0; r < rows && index < count; ++r) { + for (int c = 0; c < cols && index < count; ++c) { + // Zentriert die Würfel um (0,0,0) + positions.push_back({(float)c * 2.0f - (cols -1 ), 0.0f, (float)r * 2.0f - (rows -1)}); + index++; + } + } + + std::vector colorPool; + for (int i = 0; i < pairs; i++) { + colorPool.push_back(colors[i]); + colorPool.push_back(colors[i]); + } + + // Fisher-Yates Shuffle + for (int i= colorPool.size() -1; i > 0; --i) { + int j = rand() % (i + 1); + std::swap(colorPool[i], colorPool[j]); + } + + // Würfel erstellen + for (int i = 0; i < count; i++) + cubes.emplace_back(positions[i], colorPool[i]); + +} + int main() { // Zufall initialisieren#include "gamecube.h" @@ -148,6 +196,15 @@ int main() double endTime = 0.0; bool timerStarted = false; + GameScreen currentScreen = MENU; + int selectedPairs = 3; + + // 1. SPIELSPEZIFISCHE VARIABLEN HIER DEKLARIEREN (ohne Initialisierung) + std::vector cubes; + gamecube* first = nullptr; + gamecube* second = nullptr; + float flipSpeed = 5.0f; // Drehgeschwindigkeit + bool gameWon = false; // Fenster und Kamera InitWindow(800, 600, "3D Memory Game with Matrix3D Library"); @@ -160,133 +217,151 @@ int main() camera.fovy = 45.0f; camera.projection = CAMERA_PERSPECTIVE; - // Nur 3 Farben für 3 Paare - Color colors[] = { RED, GREEN, BLUE }; - - // 6 Karten-Positionen im 3x2 Raster - std::vector positions = {{-2, 0, -2}, {0, 0, -2}, {2, 0, -2},{-2, 0, 0}, {0, 0, 0}, {2, 0, 0}}; - - // Farben doppelt in einen Pool legen und mischen - std::vector colorPool; - for (int i = 0; i < 3; i++) - { - colorPool.push_back(colors[i]); - colorPool.push_back(colors[i]); - } - - // Fisher-Yates Shuffle mit rand() - for (int i = colorPool.size() - 1; i > 0; --i) - { - int j = rand() % (i + 1); // Zufallsindex von 0 bis i - std::swap(colorPool[i], colorPool[j]); - } - - // Karten/Würfel erstellen - std::vector cubes; - for (int i = 0; i < 6; i++) - cubes.emplace_back(positions[i], colorPool[i]); - - gamecube* first = nullptr; - gamecube* second = nullptr; - float flipSpeed = 5.0f; // Drehgeschwindigkeit - bool gameWon = false; - // ----------------------------------------------------------- // Hauptspielschleife // ----------------------------------------------------------- while (!WindowShouldClose()) { - if (!timerStarted) + // ------------------------------------------------------- + // UPDATE-LOGIK NACH ZUSTAND + // ------------------------------------------------------- + switch (currentScreen) { - startTime = GetTime(); - timerStarted = true; - } - // Klick-Erkennung - if (!gameWon && IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) - { - Vector2 mouse = GetMousePosition(); - - for (auto &c : cubes) + case MENU: { - if (!c.IsFlipped() && !c.IsMatched()) - { - Vector2 screenPos = GetWorldToScreen({c.GetPosition().x, c.GetPosition().y, c.GetPosition().z}, camera); - - if (fabs(mouse.x - screenPos.x) < 40 && fabs(mouse.y - screenPos.y) < 40) - c.FlipForward(); + // Menü-Abfrage: Auf Tastendruck warten + if (IsKeyPressed(KEY_THREE)) { + selectedPairs = 3; // 6 Würfel + SetupGame(cubes, selectedPairs); + gameWon = false; + first = second = nullptr; + currentScreen = GAMEPLAY; + timerStarted = false; // Timer-Reset + } else if (IsKeyPressed(KEY_SIX)) { + selectedPairs = 6; // 12 Würfel + SetupGame(cubes, selectedPairs); + gameWon = false; + first = second = nullptr; + currentScreen = GAMEPLAY; + timerStarted = false; // Timer-Reset } + break; } + + case GAMEPLAY: + { + // Timer starten + if (!timerStarted) + { + startTime = GetTime(); + timerStarted = true; + } + + // Klick-Erkennung + if (!gameWon && IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + { + Vector2 mouse = GetMousePosition(); + for (auto &c : cubes) + { + if (!c.IsFlipped() && !c.IsMatched()) + { + Vector2 screenPos = GetWorldToScreen({c.GetPosition().x, c.GetPosition().y, c.GetPosition().z}, camera); + if (fabs(mouse.x - screenPos.x) < 40 && fabs(mouse.y - screenPos.y) < 40) + c.FlipForward(); + } + } + } + + // Animation aller Würfel + for (auto &c : cubes) + { + c.Update(flipSpeed); + if (c.IsFlipped() && !c.IsMatched()) + { + if (!first) first = &c; + else if (!second && &c != first) second = &c; + } + } + + // Matching-Logik + if (first && second) + { + Color col1 = first->GetColor(); + Color col2 = second->GetColor(); + + if (col1.r == col2.r && col1.g == col2.g && col1.b == col2.b) + { + first->SetMatched(true); + second->SetMatched(true); + } + else + { + first->FlipBackward(); + second->FlipBackward(); + } + first = second = nullptr; + } + + // Gewinnprüfung + if (!gameWon) + { + // Prüft, ob ALLE Würfel gematcht sind + gameWon = std::all_of(cubes.begin(), cubes.end(), [](const gamecube &c){ return c.IsMatched(); }); + if (gameWon) + { + endTime = GetTime() - startTime; + } + } + break; + } // ENDE GAMEPLAY UPDATE } - // Animation aller Würfel - for (auto &c : cubes) - { - c.Update(flipSpeed); - - // Sobald ein Würfel vollständig umgedreht ist → merken - if (c.IsFlipped() && !c.IsMatched()) - { - if (!first) first = &c; - else if (!second && &c != first) second = &c; - } - } - - // Matching-Logik - if (first && second) - { - Color col1 = first->GetColor(); - Color col2 = second->GetColor(); - - if (col1.r == col2.r && col1.g == col2.g && col1.b == col2.b) - { - first->SetMatched(true); - second->SetMatched(true); - } - else - { - first->FlipBackward(); - second->FlipBackward(); - } - - first = second = nullptr; - } - - // Gewinnprüfung - if (!gameWon) - { - gameWon = std::all_of(cubes.begin(), cubes.end(), [](const gamecube &c){ return c.IsMatched(); }); - if (gameWon) - { - endTime = GetTime() - startTime; - } - } // ----------------------------------------------------------- - // Zeichnen + // ZEICHNEN NACH ZUSTAND // ----------------------------------------------------------- BeginDrawing(); ClearBackground(RAYWHITE); - BeginMode3D(camera); - for (auto &c : cubes) - c.Draw(); - - EndMode3D(); - - if (gameWon) + switch (currentScreen) { - DrawText("Congrats! You found all pairs!", 150, 260, 30, DARKBLUE); + case MENU: + { + // Menü-Darstellung + DrawText("3D MEMORY SPIEL", GetScreenWidth() / 2 - MeasureText("3D MEMORY SPIEL", 50) / 2, 80, 50, DARKGRAY); + DrawText("Waehlen Sie die Spielgroesse:", 50, 200, 25, BLACK); + DrawText("Druecken Sie [3] fuer 3 Paare (6 Wuerfel)", 50, 240, 20, BLUE); + DrawText("Druecken Sie [6] fuer 6 Paare (12 Wuerfel)", 50, 280, 20, BLUE); + break; + } - char buffer[64]; - sprintf(buffer, "Cleared in %.2f seconds", endTime); - DrawText(buffer, 150, 300, 28, DARKGREEN); - } - else - { - DrawText("Flip 2 cubes - find matching pairs!", 10, 10, 20, DARKGRAY); - char liveBuf[64]; - sprintf(liveBuf, "Time: %.2f", GetTime() - startTime); - DrawText(liveBuf, 10, 40, 20, DARKGRAY); + case GAMEPLAY: + { + // Spiel-Darstellung + BeginMode3D(camera); + + for (auto &c : cubes) + c.Draw(); + + EndMode3D(); + + if (gameWon) + { + DrawText("Congrats! You found all pairs!", 150, 260, 30, DARKBLUE); + char buffer[64]; + sprintf(buffer, "Cleared in %.2f seconds", endTime); + DrawText(buffer, 150, 300, 28, DARKGREEN); + } + else + { + DrawText("Flip 2 cubes - find matching pairs!", 10, 10, 20, DARKGRAY); + char liveBuf[64]; + sprintf(liveBuf, "Time: %.2f", GetTime() - startTime); + DrawText(liveBuf, 10, 40, 20, DARKGRAY); + } + break; + } // ENDE GAMEPLAY DRAW } + EndDrawing(); } From 59f4d6b3afe47fead2456291950b4fdace4b4a87 Mon Sep 17 00:00:00 2001 From: bhattial100541 Date: Sat, 13 Dec 2025 22:33:58 +0100 Subject: [PATCH 3/8] .gitignore aktualiesiert --- .gitignore | 21 +++++++++++++++++++++ .idea/vcs.xml | 4 +++- CMakeLists.txt | 7 ++++--- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 9f11b75..21b6bb7 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,22 @@ +# ===== Build ===== +cmake-build-*/ +build/ +out/ + +# ===== IDE ===== .idea/ +*.iml + +# ===== OS ===== +.DS_Store + +# ===== Compiled ===== +*.o +*.obj +*.a +*.so +*.dylib +*.exe + +# ===== Logs ===== +*.log diff --git a/.idea/vcs.xml b/.idea/vcs.xml index d843f34..35eb1dd 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,4 +1,6 @@ - + + + \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 514d5cb..eb5ded2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,12 +27,13 @@ target_include_directories(Prog3B PRIVATE ${CMAKE_CURRENT_LIST_DIR}/includes ${CMAKE_CURRENT_LIST_DIR}/raylib ) -target_link_libraries(${EXECUTABLE_NAME} PRIVATE - #${CMAKE_CURRENT_LIST_DIR}/windows/libgamematrix.a - ${CMAKE_CURRENT_LIST_DIR}/mac_arm/libraylib.a +target_link_libraries(${EXECUTABLE_NAME} PRIVATE + ${CMAKE_CURRENT_LIST_DIR}/mac_x86/libgamematrix.a + raylib ) + # Checks if OSX and links appropriate frameworks (Only required on MacOS) if (APPLE) target_link_libraries(Prog3B PRIVATE "-framework IOKit" From 2fd3ee5870364ddb156b691c5a422f1899fdc2c0 Mon Sep 17 00:00:00 2001 From: bhattial100541 Date: Sun, 14 Dec 2025 04:02:09 +0100 Subject: [PATCH 4/8] neustand mit allem final --- src/gamecube.cpp | 15 +++++++++++- src/gamematrix.cpp | 11 ++++++++- src/main.cpp | 59 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+), 2 deletions(-) diff --git a/src/gamecube.cpp b/src/gamecube.cpp index 274e6d5..190bf0d 100644 --- a/src/gamecube.cpp +++ b/src/gamecube.cpp @@ -1,4 +1,12 @@ +<<<<<<< HEAD #include "gamecube.h" +======= +#include "raylib.h" +#include "gamecube.h" +#pragma once + + +>>>>>>> 5fc4346 (funktioniert, 3 oder 6 + Timer komplett) gamecube::gamecube(const Vec3 &pos, Color col) : position(pos), color(col) {} @@ -63,4 +71,9 @@ void gamecube::Draw() const } Vec3 gamecube::GetPosition() const { return position; } -float gamecube::GetRotationY() const { return rotation; } \ No newline at end of file +<<<<<<< HEAD +float gamecube::GetRotationY() const { return rotation; } +======= +float gamecube::GetRotationY() const { return rotation; } + +>>>>>>> 5fc4346 (funktioniert, 3 oder 6 + Timer komplett) diff --git a/src/gamematrix.cpp b/src/gamematrix.cpp index 3a20980..3b68333 100644 --- a/src/gamematrix.cpp +++ b/src/gamematrix.cpp @@ -1,4 +1,9 @@ +<<<<<<< HEAD // +======= + + // +>>>>>>> 5fc4346 (funktioniert, 3 oder 6 + Timer komplett) // Created by bakee on 03.11.2025. // #include "gamematrix.h" @@ -94,4 +99,8 @@ namespace Matrix3D return {res_hom[0], res_hom[1], res_hom[2]}; } -} \ No newline at end of file +<<<<<<< HEAD +} +======= +} +>>>>>>> 5fc4346 (funktioniert, 3 oder 6 + Timer komplett) diff --git a/src/main.cpp b/src/main.cpp index f868f47..6bc7209 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -258,6 +258,7 @@ int main() } // Klick-Erkennung +<<<<<<< HEAD if (!gameWon && IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) { Vector2 mouse = GetMousePosition(); @@ -268,6 +269,50 @@ int main() Vector2 screenPos = GetWorldToScreen({c.GetPosition().x, c.GetPosition().y, c.GetPosition().z}, camera); if (fabs(mouse.x - screenPos.x) < 40 && fabs(mouse.y - screenPos.y) < 40) c.FlipForward(); +======= + // Klick-Erkennung (nur wenn noch nicht 2 ausgewählt sind) + if (!gameWon && IsMouseButtonPressed(MOUSE_LEFT_BUTTON) && (second == nullptr)) + { + Vector2 mouse = GetMousePosition(); + Ray ray = GetMouseRay(mouse, camera); + + gamecube* hitCube = nullptr; + float bestDist = 1e9f; + + for (auto &c : cubes) + { + if (c.IsMatched() || c.IsFlipped()) continue; + + + + + auto p = c.GetPosition(); + + + BoundingBox box; + box.min = { p.x - 0.75f, p.y - 0.75f, p.z - 0.75f }; + box.max = { p.x + 0.75f, p.y + 0.75f, p.z + 0.75f }; + + RayCollision col = GetRayCollisionBox(ray, box); + if (col.hit && col.distance < bestDist) + { + bestDist = col.distance; + hitCube = &c; + } + } + + if (hitCube) + { + if (!first) + { + first = hitCube; + first->FlipForward(); + } + else if (hitCube != first) + { + second = hitCube; + second->FlipForward(); +>>>>>>> 5fc4346 (funktioniert, 3 oder 6 + Timer komplett) } } } @@ -276,6 +321,7 @@ int main() for (auto &c : cubes) { c.Update(flipSpeed); +<<<<<<< HEAD if (c.IsFlipped() && !c.IsMatched()) { if (!first) first = &c; @@ -285,6 +331,13 @@ int main() // Matching-Logik if (first && second) +======= + } + + // Matching-Logik + // Matching-Logik: erst wenn beide vollständig umgedreht sind + if (first && second && first->IsFlipped() && second->IsFlipped()) +>>>>>>> 5fc4346 (funktioniert, 3 oder 6 + Timer komplett) { Color col1 = first->GetColor(); Color col2 = second->GetColor(); @@ -299,7 +352,13 @@ int main() first->FlipBackward(); second->FlipBackward(); } +<<<<<<< HEAD first = second = nullptr; +======= + + first = nullptr; + second = nullptr; +>>>>>>> 5fc4346 (funktioniert, 3 oder 6 + Timer komplett) } // Gewinnprüfung From 0f42ef18d00d47d18c81648f00d5ad7c043ce868 Mon Sep 17 00:00:00 2001 From: Alina Bhatti Date: Mon, 15 Dec 2025 10:54:37 +0000 Subject: [PATCH 5/8] Delete .idea/.gitignore --- .idea/.gitignore | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 .idea/.gitignore diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 13566b8..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml From 41845f8b1d71a78226383ded7cb8a2887a3a5b3b Mon Sep 17 00:00:00 2001 From: Alina Bhatti Date: Mon, 15 Dec 2025 10:54:44 +0000 Subject: [PATCH 6/8] Delete .idea/vcs.xml --- .idea/vcs.xml | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 .idea/vcs.xml diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From d4cf18dfcd31c139ea9513b76af6eb22255c8308 Mon Sep 17 00:00:00 2001 From: Alina Bhatti Date: Mon, 15 Dec 2025 10:54:54 +0000 Subject: [PATCH 7/8] Delete .vscode/launch.json --- .vscode/launch.json | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 9dae3d4..0000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - - - ] -} \ No newline at end of file From 2bf7de8f28dbf691250e11375881a164a66da00a Mon Sep 17 00:00:00 2001 From: Alina Bhatti Date: Mon, 15 Dec 2025 10:57:01 +0000 Subject: [PATCH 8/8] Delete .DS_Store --- .DS_Store | Bin 8196 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index c5dea7b42732e9265c9357a6064f583fe48a9fa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHM&1(}u6o1pE&BkI$L8S=7qSqQ*Vn4u3OyfcPK$@ZlmAIP?Y3ODrXFs1BQYBg#o;?g;*or`)btG zh5^ICSTZ1<4>pR>1+Du^%SQ()nF2tk&@Bb+tY|>nS{JnLD~%BdQ&4CHWje)R3XXnT z+ZD9#E3M$fbn?OU%uHt}OwJDfwlpVJP}Wf4?6cYw}Xb z^|^~a>(_pG*Dim(9v}CP9dB(#z74Q9fYKaQsYwoPQ;jZ@OFgW?Cl758J>t54)8|z^ zs|f55D7oKKgaewTb-JTH+y=TsU6dT^9qPuh>_P&Y!Ymvs=p^i3C+sZv4PfVEJz`x+ z`=1H>DOd_bk9OjoN$~Y9vih{#eU&QML7SQhYq8g3te=+KfzN|Fti&Vn$kz_7(MsHx z+lB^#Lvgjqx$hpd9ru2t7FM!n)_Kr%8bPfs0S&JPlSdC4fycul?*(2* zV#{j4%2=67_T297;)0!DTisi*cUSYv3-;Cg%HCeaI(zBLwT;TQ-wgOma06lbwLz!V z^a)p@g6MCy(STx~zF_*{ z>r5P!Y20{+p2wFc1VSACC}I-f*QRRRN*pCN8#(wH z1SkS&bg+s*k0Iu069@z~*;JBY+mmYw&@(dJV;<5J%CHnc9}WaDb{?}9Y#K2PoM;9n z)$Zm+{(oci_x}^kf!Um4VB8sCsZzOA1Pcd0l9GgoT-!!@f+9rN^_7+oR5BfhmgzY3 f;U9)*+b|WFg4TVd(F6JS9|Fw#UlMPsv1Z^8^afwK