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.

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