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.

140 lines
3.8 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. #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 Nochmal[50] = { "Weiter" };
  108. while (Nochmal[0] == 'W' || Nochmal[0] == 'w') {
  109. Zaehler = 1;
  110. Brett(Feld);
  111. while (Winner(Feld) == 9) {
  112. Bild(Feld);
  113. if (Zaehler % 2 != 0) {
  114. printf("Spieler 1 gebe das Feld an wo du dein X setzen willst.\n");
  115. }
  116. else printf("Spieler 2 gebe das Feld an wo du dein O setzen willst.\n");
  117. printf("Reihe:");
  118. scanf("%d", &row);
  119. printf("Spalte:");
  120. scanf("%d", &col);
  121. row -= 1;
  122. col -= 1;
  123. if (row > 3 || col > 3) {
  124. printf("Das ist nicht mehr im Feld. Versuch es nochmal:");
  125. scanf("%d %d", &row, &col);
  126. row -= 1; //F�r Index eins kleiner
  127. col -= 1;
  128. }
  129. Zuege(Feld, row, col);
  130. Zaehler++;
  131. }
  132. Bild(Feld);
  133. Winner(Feld);
  134. printf("Wollt ihr weiter spielen?\n[Weiter]\n[Ende]\n");
  135. scanf("%s", Nochmal);
  136. }
  137. return 0;
  138. }