From cfbf7e9974fda142f941fcfa449fcde0bbf3836a Mon Sep 17 00:00:00 2001 From: Jannis Heydemann Date: Thu, 23 Apr 2026 12:50:02 +0200 Subject: [PATCH] switched from strings to chars --- main.cpp | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/main.cpp b/main.cpp index d7fd6d5..43b982e 100644 --- a/main.cpp +++ b/main.cpp @@ -8,11 +8,7 @@ using namespace std; -string spielfeld[3][3] = { - {" ", " ", " "}, - {" ", " ", " "}, - {" ", " ", " "} -}; +char spielfeld[3][3]; struct userInput { bool ok; @@ -22,7 +18,7 @@ struct userInput { struct gameState { bool running = true; - string winner; + char winner; int filledCells = 0; }; @@ -54,7 +50,7 @@ userInput getUserInput() { cout << "Spalte: "; cin >> inputSpalte; cout << endl; - if (spielfeld[inputZeile-1][inputSpalte-1] == " ") { + if (spielfeld[inputZeile-1][inputSpalte-1] == ' ') { return {true, inputZeile-1, inputSpalte-1}; } else { cout << endl << "Input konnte nicht gelesen werden" << endl; @@ -67,27 +63,27 @@ void checkforWin(gameState &state) { // simplest way would be to check all 8 different solutions. 3 from top to bottom, 3 from left to right and 2 diagonals for (int i = 0; i < 3; i++) { // left to right - if (spielfeld[i][0] == spielfeld[i][1] && spielfeld[i][2] == spielfeld[i][1] && spielfeld[i][2] != " ") { + if (spielfeld[i][0] == spielfeld[i][1] && spielfeld[i][2] == spielfeld[i][1] && spielfeld[i][2] != ' ') { state.running = false; state.winner = spielfeld[i][1]; return; } // top to bottom - if (spielfeld[0][i] == spielfeld[1][i] && spielfeld[1][i] == spielfeld[2][i] && spielfeld[1][i] != " ") { + if (spielfeld[0][i] == spielfeld[1][i] && spielfeld[1][i] == spielfeld[2][i] && spielfeld[1][i] != ' ') { state.running = false; state.winner = spielfeld[1][i]; return; } } // top left to bottom right - if (spielfeld[0][0] == spielfeld[1][1] && spielfeld[1][1] == spielfeld[2][2] && spielfeld[2][2] != " ") { + if (spielfeld[0][0] == spielfeld[1][1] && spielfeld[1][1] == spielfeld[2][2] && spielfeld[2][2] != ' ') { state.running = false; state.winner = spielfeld[2][2]; return; } // top right to bottom left - if (spielfeld[0][2] == spielfeld[1][1] && spielfeld[1][1] == spielfeld[2][0] && spielfeld[2][0] != " ") { + if (spielfeld[0][2] == spielfeld[1][1] && spielfeld[1][1] == spielfeld[2][0] && spielfeld[2][0] != ' ') { state.running = false; state.winner = spielfeld[2][0]; return; @@ -96,7 +92,7 @@ void checkforWin(gameState &state) { //draw if (state.filledCells >= 9) { state.running = false; - state.winner = "-"; + state.winner = '-'; return; } } @@ -107,12 +103,18 @@ int main() { #endif cout << fixed << setprecision(2); + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + spielfeld[i][j] = ' '; + } + } + gameState state; int counter = 1; while (state.running) { render(); - string current_player = counter++ % 2 == 1 ? "X" : "O"; + char current_player = counter++ % 2 == 1 ? 'X' : 'O'; cout << endl << "Am Zug ist Spieler: " << current_player << endl; if (auto [ok, zeile, spalte] = getUserInput(); ok) { spielfeld[zeile][spalte] = current_player;