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.
224 lines
6.1 KiB
224 lines
6.1 KiB
#include <stdio.h>
|
|
#include "TicTacToe.h"
|
|
|
|
//Funktionen deklarieren
|
|
// Funktion zum Zeichnen der Tafel
|
|
void drawBoard(int pos1, int pos2, int pos3, int pos4, int pos5, int pos6, int pos7, int pos8, int pos9);
|
|
|
|
// Funktion zum Wechseln des aktuellen Spielers
|
|
int switchPlayer(int currentPlayer);
|
|
|
|
// Funktion, um zu prüfen, ob es einen Gewinner gibt
|
|
int checkForWin(int pos1, int pos2, int pos3, int pos4, int pos5, int pos6, int pos7, int pos8, int pos9, int currentPlayer);
|
|
|
|
// Funktion zur Anzeige von Nachrichten
|
|
void messages(int message, char player);
|
|
|
|
|
|
int run_TicTacToe() {
|
|
messages(99, '\0');
|
|
|
|
int pos1 = 1;
|
|
int pos2 = 2;
|
|
int pos3 = 3;
|
|
int pos4 = 4;
|
|
int pos5 = 5;
|
|
int pos6 = 6;
|
|
int pos7 = 7;
|
|
int pos8 = 8;
|
|
int pos9 = 9;
|
|
int player = 10;
|
|
|
|
drawBoard(pos1, pos2, pos3, pos4, pos5, pos6, pos7, pos8, pos9);
|
|
|
|
// Spielschleife
|
|
for (int i = 0; i < 9; i++) {
|
|
int in;
|
|
messages(4, (player == 10) ? 'X' : 'O');
|
|
|
|
scanf("%d", &in);
|
|
printf("\n");
|
|
|
|
if (pos1 == in) {
|
|
pos1 = player;
|
|
} else if (pos2 == in) {
|
|
pos2 = player;
|
|
} else if (pos3 == in) {
|
|
pos3 = player;
|
|
} else if (pos4 == in) {
|
|
pos4 = player;
|
|
} else if (pos5 == in) {
|
|
pos5 = player;
|
|
} else if (pos6 == in) {
|
|
pos6 = player;
|
|
} else if (pos7 == in) {
|
|
pos7 = player;
|
|
} else if (pos8 == in) {
|
|
pos8 = player;
|
|
} else if (pos9 == in) {
|
|
pos9 = player;
|
|
} else {
|
|
messages(0, (player == 10) ? 'X' : 'O');
|
|
i--; // wiederholen
|
|
continue;
|
|
}
|
|
drawBoard(pos1, pos2, pos3, pos4, pos5, pos6, pos7, pos8, pos9);
|
|
|
|
if (checkForWin(pos1, pos2, pos3, pos4, pos5, pos6, pos7, pos8, pos9, player)) {
|
|
messages(player, '\0'); // Winner
|
|
break;
|
|
}
|
|
|
|
if (i == 8) {
|
|
messages(3, '\0'); // Tie
|
|
}
|
|
|
|
player = switchPlayer(player);
|
|
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
void drawBoard(int pos1, int pos2, int pos3, int pos4, int pos5, int pos6, int pos7, int pos8, int pos9) {
|
|
char vertical = '|';
|
|
char horizontal[] = "---";
|
|
|
|
printf("%c%s%c%s%c%s%c\n", vertical, horizontal, vertical, horizontal, vertical, horizontal, vertical);
|
|
printf("%c", vertical);
|
|
if (pos1 == 10) {
|
|
printf(" X ");
|
|
} else if (pos1 == 11) {
|
|
printf(" O ");
|
|
} else {
|
|
printf(" %d ",pos1);
|
|
}
|
|
printf("%c", vertical);
|
|
if (pos2 == 10) {
|
|
printf(" X ");
|
|
} else if (pos2 == 11) {
|
|
printf(" O ");
|
|
} else {
|
|
printf(" %d ",pos2);
|
|
}
|
|
printf("%c", vertical);
|
|
if (pos3 == 10) {
|
|
printf(" X ");
|
|
} else if (pos3 == 11) {
|
|
printf(" O ");
|
|
} else {
|
|
printf(" %d ",pos3);
|
|
}
|
|
printf("%c\n", vertical);
|
|
printf("%c%s%c%s%c%s%c\n", vertical, horizontal, vertical, horizontal, vertical, horizontal, vertical);
|
|
printf("%c", vertical);
|
|
if (pos4 == 10) {
|
|
printf(" X ");
|
|
} else if (pos4 == 11) {
|
|
printf(" O ");
|
|
} else {
|
|
printf(" %d ",pos4);
|
|
}
|
|
printf("%c", vertical);
|
|
if (pos5 == 10) {
|
|
printf(" X ");
|
|
} else if (pos5 == 11) {
|
|
printf(" O ");
|
|
} else {
|
|
printf(" %d ",pos5);
|
|
}
|
|
printf("%c", vertical);
|
|
if (pos6 == 10) {
|
|
printf(" X ");
|
|
} else if (pos6 == 11) {
|
|
printf(" O ");
|
|
} else {
|
|
printf(" %d ",pos6);
|
|
}
|
|
printf("%c\n", vertical);
|
|
printf("%c%s%c%s%c%s%c\n", vertical, horizontal, vertical, horizontal, vertical, horizontal, vertical);
|
|
printf("%c", vertical);
|
|
if (pos7 == 10) {
|
|
printf(" X ");
|
|
} else if (pos7 == 11) {
|
|
printf(" O ");
|
|
} else {
|
|
printf(" %d ",pos7);
|
|
}
|
|
printf("%c", vertical);
|
|
if (pos8 == 10) {
|
|
printf(" X ");
|
|
} else if (pos8 == 11) {
|
|
printf(" O ");
|
|
} else {
|
|
printf(" %d ",pos8);
|
|
}
|
|
printf("%c", vertical);
|
|
if (pos9 == 10) {
|
|
printf(" X ");
|
|
} else if (pos9 == 11) {
|
|
printf(" O ");
|
|
} else {
|
|
printf(" %d ",pos9);
|
|
}
|
|
printf("%c\n", vertical);
|
|
printf("%c%s%c%s%c%s%c\n", vertical, horizontal, vertical, horizontal, vertical, horizontal, vertical);
|
|
}
|
|
|
|
int switchPlayer(int player) {
|
|
if (player == 10) {
|
|
return 11;
|
|
} else {
|
|
return 10;
|
|
}
|
|
}
|
|
|
|
int checkForWin(int pos1, int pos2, int pos3, int pos4, int pos5, int pos6, int pos7, int pos8, int pos9, int player) {
|
|
// Prüfung auf Gewinn
|
|
if (pos1 == player && pos2 == player && pos3 == player) {
|
|
return 1;
|
|
} else if (pos4 == player && pos5 == player && pos6 == player) {
|
|
return 1;
|
|
} else if (pos7 == player && pos8 == player && pos9 == player) {
|
|
return 1;
|
|
} else if (pos1 == player && pos4 == player && pos7 == player) {
|
|
return 1;
|
|
} else if (pos2 == player && pos5 == player && pos8 == player) {
|
|
return 1;
|
|
} else if (pos3 == player && pos6 == player && pos9 == player) {
|
|
return 1;
|
|
} else if (pos1 == player && pos5 == player && pos9 == player) {
|
|
return 1;
|
|
} else if (pos3 == player && pos5 == player && pos7 == player) {
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
void messages(int message, char player) {
|
|
switch (message) {
|
|
case 0:
|
|
printf("\nInvalid input. Please try again.\n");
|
|
break;
|
|
case 10:
|
|
printf("\nPlayer X has won!\n\n");
|
|
break;
|
|
case 11:
|
|
printf("\nPlayer O has won!\n\n");
|
|
break;
|
|
case 3:
|
|
printf("\nIt's a draw. Good game!\n\n");
|
|
break;
|
|
case 4:
|
|
printf("\nPlayer %c, enter your move (1-9): ", player);
|
|
break;
|
|
case 99:
|
|
printf("\n\nWelcome to the TIC TAC TOE game!\n\nINSTRUCTIONS:\n");
|
|
printf("Players take turns entering a number from 1 to 9 to mark their position on the board.\n");
|
|
printf("Player 'X' begins first, and player 'O' second.\n");
|
|
printf("The board looks like this: Start!\n\n");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|