Compare commits

..

2 Commits

Author SHA1 Message Date
Jannis Heydemann
c057c9f3c1 Merge branch 'master' of ssh://gitea.starfour.de:2222/Berufsschule/tictactoe 2026-04-23 12:51:32 +02:00
Jannis Heydemann
cfbf7e9974 switched from strings to chars 2026-04-23 12:50:02 +02:00

View File

@@ -8,11 +8,7 @@
using namespace std; using namespace std;
string spielfeld[3][3] = { char spielfeld[3][3];
{" ", " ", " "},
{" ", " ", " "},
{" ", " ", " "}
};
struct userInput { struct userInput {
bool ok; bool ok;
@@ -22,7 +18,7 @@ struct userInput {
struct gameState { struct gameState {
bool running = true; bool running = true;
string winner; char winner;
int filledCells = 0; int filledCells = 0;
}; };
@@ -54,7 +50,7 @@ userInput getUserInput() {
cout << "Spalte: "; cout << "Spalte: ";
cin >> inputSpalte; cin >> inputSpalte;
cout << endl; cout << endl;
if (spielfeld[inputZeile-1][inputSpalte-1] == " ") { if (spielfeld[inputZeile-1][inputSpalte-1] == ' ') {
return {true, inputZeile-1, inputSpalte-1}; return {true, inputZeile-1, inputSpalte-1};
} else { } else {
cout << endl << "Input konnte nicht gelesen werden" << endl; 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 // 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++) { for (int i = 0; i < 3; i++) {
// left to right // 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.running = false;
state.winner = spielfeld[i][1]; state.winner = spielfeld[i][1];
return; return;
} }
// top to bottom // 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.running = false;
state.winner = spielfeld[1][i]; state.winner = spielfeld[1][i];
return; return;
} }
} }
// top left to bottom right // 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.running = false;
state.winner = spielfeld[2][2]; state.winner = spielfeld[2][2];
return; return;
} }
// top right to bottom left // 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.running = false;
state.winner = spielfeld[2][0]; state.winner = spielfeld[2][0];
return; return;
@@ -96,7 +92,7 @@ void checkforWin(gameState &state) {
//draw //draw
if (state.filledCells >= 9) { if (state.filledCells >= 9) {
state.running = false; state.running = false;
state.winner = "-"; state.winner = '-';
return; return;
} }
} }
@@ -107,12 +103,18 @@ int main() {
#endif #endif
cout << fixed << setprecision(2); cout << fixed << setprecision(2);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
spielfeld[i][j] = ' ';
}
}
gameState state; gameState state;
int counter = 1; int counter = 1;
while (state.running) { while (state.running) {
render(); 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; cout << endl << "Am Zug ist Spieler: " << current_player << endl;
if (auto [ok, zeile, spalte] = getUserInput(); ok) { if (auto [ok, zeile, spalte] = getUserInput(); ok) {
spielfeld[zeile][spalte] = current_player; spielfeld[zeile][spalte] = current_player;