commit c68ba4e9dd9a91873661c794e386822965d9c3fd Author: Jannis Heydemann Date: Wed Apr 22 15:13:33 2026 +0200 added first game rendering engine diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..30cf57e --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/TicTacToe.iml b/.idea/TicTacToe.iml new file mode 100644 index 0000000..4c94235 --- /dev/null +++ b/.idea/TicTacToe.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.idea/editor.xml b/.idea/editor.xml new file mode 100644 index 0000000..ca29dcc --- /dev/null +++ b/.idea/editor.xml @@ -0,0 +1,101 @@ + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..0b76fe5 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..0809375 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..f103449 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 4.2) +project(TicTacToe) + +set(CMAKE_CXX_STANDARD 20) + +add_executable(TicTacToe main.cpp) diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..91575bf --- /dev/null +++ b/main.cpp @@ -0,0 +1,70 @@ +#include +#include +#include +#include +#include + +using namespace std; + + +string spielfeld[3][3] = { + {" ", " ", " "}, + {" ", " ", " "}, + {" ", " ", " "} +}; + +struct userInput { + bool ok; + int spalte; + int zeile; +}; + +void render() { + system("cls"); + + cout << " | 1 | 2 | 3 |" << endl; + cout << "---------------" << endl; + for (int i = 0; i < 3; i++) { + cout << i+1 << " | "; + for (int j = 0; j < 3; j++) { + cout << spielfeld[i][j] << " | "; + } + cout << endl; + cout << "---------------" << endl; + } +} + +userInput getUserInput() { + int inputSpalte, inputZeile; + cout << "Zeile: "; + cin >> inputZeile; + cout << "Spalte: "; + cin >> inputSpalte; + cout << endl; + if (spielfeld[inputSpalte-1][inputZeile-1] == " ") { + return {true, inputSpalte-1, inputZeile-1}; + } else { + cout << endl << "Input konnte nicht gelesen werden" << endl; + return getUserInput(); + } +} + +void checkforWin() { + // TODO: check for win or fail and return a game struct. +} + +int main() { + SetConsoleOutputCP(CP_UTF8); + cout << fixed << setprecision(2); + + int counter = 1; + while (true) { + render(); + string current_player = counter++ % 2 == 1 ? "X" : "O"; + cout << endl << "Am Zug ist Spieler: " << current_player << endl; + if (auto [ok, spalte, zeile] = getUserInput(); ok) { + spielfeld[zeile][spalte] = current_player; + } + } + return 0; +}