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.

176 lines
5.3 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #define ANSI_COLOR_BRIGHT_RED "\x1b[91m"
  6. #define ANSI_COLOR_BRIGHT_CYAN "\x1b[96m"
  7. #define ANSI_COLOR_BRIGHT_YELLOW "\x1b[93m"
  8. #define ANSI_COLOR_RESET "\x1b[0m"
  9. int Runde = 1;
  10. // Funktion, um das Spielfeld zu initialisieren
  11. void initializeBoard(char Feld[3][3]) {
  12. for (int i = 0; i < 3; i++) {
  13. for (int j = 0; j < 3; j++) {
  14. Feld[i][j] = '_';
  15. }
  16. }
  17. }
  18. void Bild(char Feld[3][3]) {
  19. #ifdef _WIN32
  20. system("cls");
  21. #else
  22. system("clear");
  23. #endif
  24. for (int i = 0; i < 3; i++) {
  25. for (int j = 0; j < 3; j++) {
  26. if (Feld[i][j] == '_') {
  27. printf(ANSI_COLOR_BRIGHT_YELLOW"%c "ANSI_COLOR_RESET, Feld[i][j]);
  28. }
  29. else if (Feld[i][j] == 'X') {
  30. printf(ANSI_COLOR_BRIGHT_CYAN"%c "ANSI_COLOR_RESET, Feld[i][j]);
  31. }
  32. else {
  33. printf(ANSI_COLOR_BRIGHT_RED"%c "ANSI_COLOR_RESET, Feld[i][j]);
  34. }
  35. }
  36. printf("\n");
  37. }
  38. }
  39. int Winner(char Feld[3][3]) {
  40. // �berpr�fen Sieg
  41. // �berpr�fen Reihen
  42. for (int i = 0; i < 3; i++) {
  43. if (Feld[i][0] == Feld[i][1] && Feld[i][1] == Feld[i][2] && Feld[i][0] != '_') {
  44. if (Feld[i][0] == 'X') {
  45. return 1;
  46. }
  47. else return 2;
  48. }
  49. }
  50. // �berpr�fen Spalten
  51. for (int j = 0; j < 3; j++) {
  52. if (Feld[0][j] == Feld[1][j] && Feld[1][j] == Feld[2][j] && Feld[0][j] != '_') {
  53. if (Feld[0][j] == 'X') {
  54. return 1;
  55. }
  56. else return 2;
  57. }
  58. }
  59. // �berpr�fen Diagonalen
  60. 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])) {
  61. if (Feld[1][1] != '_') {
  62. if (Feld[1][1] == 'X') {
  63. return 1;
  64. }
  65. else return 2;
  66. }
  67. }
  68. //�berpr�fe Runde
  69. for (int k = 0; k < 3; k++) {
  70. for (int l = 0; l < 3; l++) {
  71. if (Feld[k][l] == '_') {
  72. return 9;
  73. }
  74. }
  75. }
  76. //Best�tige Unendschieden
  77. printf("Es ist ein Unendschieden\n");
  78. return 0;
  79. }
  80. void Zuege(char Feld[3][3], int row, int col) {
  81. if (Runde < 10) {
  82. if (Runde % 2 == 0) {
  83. if (Feld[row][col] == '_') {
  84. Feld[row][col] = 'O';
  85. }
  86. else {
  87. printf("Das Feld ist schon besetzt. Gib ein anderes Feld ein:\n");
  88. printf("Reihe:");
  89. scanf("%d", &row);
  90. printf("Spalte:");
  91. scanf("%d", &col);
  92. row -= 1;
  93. col -= 1;
  94. Zuege(Feld, row, col);
  95. }
  96. }
  97. else {
  98. if (Feld[row][col] == '_') {
  99. Feld[row][col] = 'X';
  100. }
  101. else {
  102. printf("Das Feld ist schon besetzt. Gib ein anderes Feld ein:\n");
  103. printf("Reihe:");
  104. scanf("%d", &row);
  105. printf("Spalte:");
  106. scanf("%d", &col);
  107. row -= 1;
  108. col -= 1;
  109. Zuege(Feld, row, col);
  110. }
  111. }
  112. }
  113. }
  114. // Hauptfunktion zum Spielen des Tic Tac Toe-Spiels
  115. int mainx() {
  116. int row;
  117. int col;
  118. char Feld[3][3];
  119. char Spieler1[50], Spieler2[50];
  120. int Punkte1 = 0, Punkte2 = 0;
  121. char Name1[50], Name2[50];
  122. char Nochmal[50] = { "Weiter" };
  123. printf("Name Spieler 1:");
  124. scanf("%s", Name1);
  125. printf("Name Spieler 2:");
  126. scanf("%s", Name2);
  127. while (Nochmal[0] == 'W' || Nochmal[0] == 'w') {
  128. Runde = 1;
  129. initializeBoard(Feld);
  130. printf("%s, Was willst du sein, X oder O: ", Name1);
  131. scanf("%s", Spieler1);
  132. if (Spieler1[0] != 'X' && Spieler1[0] != 'O') {
  133. printf("Ung�ltige Auswahl. Das Spiel wird beendet.\n");
  134. break;
  135. }
  136. strcpy(Spieler2, (Spieler1[0] == 'X') ? Name2 : Name1);
  137. strcpy(Spieler1, (Spieler1[0] == 'X') ? Name1 : Name2);
  138. printf("\nWillkommen %s und %s. Eure Runde Beginnt jetzt.", Spieler1, Spieler2);
  139. while (Winner(Feld) == 9) {
  140. Bild(Feld);
  141. if (Runde % 2 != 0) {
  142. printf("Spieler 1 gebe das Feld an wo du dein X setzen willst.\n");
  143. }
  144. else printf("Spieler 2 gebe das Feld an wo du dein O setzen willst.\n");
  145. printf("Reihe:");
  146. scanf("%d", &row);
  147. printf("Spalte:");
  148. scanf("%d", &col);
  149. row -= 1;
  150. col -= 1;
  151. if (row > 3 || col > 3) {
  152. printf("Das ist nicht mehr im Feld. Versuch es nochmal:");
  153. scanf("%d %d", &row, &col);
  154. row -= 1; //F�r Index eins kleiner
  155. col -= 1;
  156. }
  157. Zuege(Feld, row, col);
  158. Runde++;
  159. }
  160. Bild(Feld);
  161. if (Winner(Feld) == 1) {
  162. printf("Der Sieger ist %s", Spieler1);
  163. Punkte1++;
  164. }
  165. else if (Winner(Feld) == 2) {
  166. printf("Der Sieger ist %s", Spieler2);
  167. Punkte2++;
  168. }
  169. printf("%s - %d, %s - %d\n", Spieler1, Punkte1, Spieler2, Punkte2);
  170. printf("Wollt ihr weiter spielen?\n[Weiter]\n[Ende]\n");
  171. scanf("%s", Nochmal);
  172. }
  173. return 0;
  174. }