You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

141 lines
3.8 KiB

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
int Zaehler = 1;
// Funktion, um das Spielfeld zu initialisieren
void Brett(char Feld[3][3]) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
Feld[i][j] = '_';
}
}
}
void Bild(char Feld[3][3]) {
#ifdef _WIN32
system("cls");
#else
system("clear");
#endif
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%c ", Feld[i][j]);
}
printf("\n");
}
}
int Winner(char Feld[3][3]) {
// Überprüfen Sieg
// Überprüfen Reihen
for (int i = 0; i < 3; i++) {
if (Feld[i][0] == Feld[i][1] && Feld[i][1] == Feld[i][2] && Feld[i][0] != '_') {
if (Feld[i][0] == 'X') {
return 1;
}
else return 2;
}
}
// Überprüfen Spalten
for (int j = 0; j < 3; j++) {
if (Feld[0][j] == Feld[1][j] && Feld[1][j] == Feld[2][j] && Feld[0][j] != '_') {
if (Feld[0][j] == 'X') {
return 1;
}
else return 2;
}
}
// Überprüfen Diagonalen
if ((Feld[0][0] == Feld[1][1] && Feld[1][1] == Feld[2][2]) || (Feld[0][2] == Feld[1][1] && Feld[1][1] == Feld[2][0])) {
if (Feld[1][1] != '_') {
if (Feld[1][1] == 'X') {
return 1;
}
else return 2;
}
}
//Überprüfe Runde
for (int k = 0; k < 3; k++) {
for (int l = 0; l < 3; l++) {
if (Feld[k][l] == '_') {
return 9;
}
}
}
//Bestätige Unendschieden
printf("Es ist ein Unendschieden\n");
return 0;
}
void Zuege(char Feld[3][3], int row, int col) {
if (Zaehler < 10) {
if (Zaehler % 2 == 0) {
if (Feld[row][col] == '_') {
Feld[row][col] = 'O';
}
else {
printf("Das Feld ist schon besetzt. Gib ein anderes Feld ein:\n");
printf("Reihe:");
scanf("%d", &row);
printf("Spalte:");
scanf("%d", &col);
row -= 1;
col -= 1;
Zuege(Feld, row, col);
}
}
else {
if (Feld[row][col] == '_') {
Feld[row][col] = 'X';
}
else {
printf("Das Feld ist schon besetzt. Gib ein anderes Feld ein:\n");
printf("Reihe:");
scanf("%d", &row);
printf("Spalte:");
scanf("%d", &col);
row -= 1;
col -= 1;
Zuege(Feld, row, col);
}
}
}
}
// Hauptfunktion zum Spielen des Tic Tac Toe-Spiels
int mainx() {
int row;
int col;
char Feld[3][3];
char Nochmal[50] = { "Weiter" };
while (Nochmal[0] == 'W' || Nochmal[0] == 'w') {
Zaehler = 1;
Brett(Feld);
while (Winner(Feld) == 9) {
Bild(Feld);
if (Zaehler % 2 != 0) {
printf("Spieler 1 gebe das Feld an wo du dein X setzen willst.\n");
}
else printf("Spieler 2 gebe das Feld an wo du dein O setzen willst.\n");
printf("Reihe:");
scanf("%d", &row);
printf("Spalte:");
scanf("%d", &col);
row -= 1;
col -= 1;
if (row > 3 || col > 3) {
printf("Das ist nicht mehr im Feld. Versuch es nochmal:");
scanf("%d %d", &row, &col);
row -= 1; //Für Index eins kleiner
col -= 1;
}
Zuege(Feld, row, col);
Zaehler++;
}
Bild(Feld);
Winner(Feld);
printf("Wollt ihr weiter spielen?\n[Weiter]\n[Ende]\n");
scanf("%s", Nochmal);
}
return 0;
}