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.

189 lines
4.3 KiB

1 year ago
1 year ago
1 year ago
1 year ago
  1. //1
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. #include "Mathe.h"
  6. //3
  7. int generiereZufallszahl(int min, int max);
  8. //4
  9. char generiereZufallsOperator();
  10. //5
  11. int addiere(int zahl1, int zahl2);
  12. //6
  13. int subtrahiere(int zahl1, int zahl2);
  14. //7
  15. int multipliziere(int zahl1, int zahl2);
  16. //8
  17. int dividiere(int zahl1, int zahl2);
  18. //9
  19. int berechneErgebnis(int zahl1, int zahl2, char operator);
  20. //10
  21. void spieleRunde(int schwierigkeitsgrad);
  22. //11
  23. void zeigeAnleitung();
  24. //12
  25. void zeigeHighscore(int punkte);
  26. //13
  27. int holeSpielerAntwort();
  28. //14
  29. void bewerteAntwort(int spielerAntwort, int ergebnis, int* punkte);
  30. //15
  31. void zeigeRundenEnde(int punkte);
  32. //16
  33. void zeigeAuswahl(const char* text);
  34. //17
  35. void initialisiereZufallsgenerator() {
  36. srand(time(NULL));
  37. }
  38. //18
  39. int generiereZufallszahl(int min, int max) {
  40. return min + (int)((double)rand() / (RAND_MAX + 1) * (max - min + 1));
  41. }
  42. //19
  43. char generiereZufallsOperator() {
  44. char operatoren[] = {'+', '-', '*', '/'};
  45. int index = rand() % 4;
  46. return operatoren[index];
  47. }
  48. //22
  49. void zeigeAnleitung() {
  50. printf("\n=== Anleitung ===\n");
  51. printf("Beantworte die mathematischen Aufgaben, um Punkte zu sammeln.\n");
  52. printf("Du kannst zwischen verschiedenen Schwierigkeitsgraden wählen.\n");
  53. printf("Versuche so viele Aufgaben wie möglich korrekt zu lösen!\n");
  54. }
  55. //23
  56. void zeigeHighscore(int punkte) {
  57. printf("\n=== Highscore ===\n");
  58. printf("Dein aktueller Highscore ist: %d Punkte\n", punkte);
  59. }
  60. //25
  61. void bewerteAntwort(int spielerAntwort, int ergebnis, int* punkte) {
  62. if (spielerAntwort == ergebnis) {
  63. printf("Richtig! Du erhältst einen Punkt.\n");
  64. (*punkte)++;
  65. } else {
  66. printf("Falsch! Die richtige Antwort ist %d\n", ergebnis);
  67. }
  68. }
  69. //26
  70. void zeigeRundenEnde(int punkte) {
  71. printf("Runde beendet. Du hast insgesamt %d Punkte erreicht.\n", punkte);
  72. }
  73. //27
  74. int addiere(int zahl1, int zahl2) {
  75. return zahl1 + zahl2;
  76. }
  77. //28
  78. int subtrahiere(int zahl1, int zahl2) {
  79. return zahl1 - zahl2;
  80. }
  81. //29
  82. int multipliziere(int zahl1, int zahl2) {
  83. return zahl1 * zahl2;
  84. }
  85. //30
  86. int dividiere(int zahl1, int zahl2) {
  87. if (zahl2 != 0) {
  88. return zahl1 / zahl2;
  89. } else {
  90. printf("Fehler: Division durch Null vermieden.\n");
  91. return 0;
  92. }
  93. }
  94. //31
  95. void zeigeAuswahl(const char* text) {
  96. printf("%s\n", text);
  97. }
  98. //24
  99. int holeSpielerAntwort() {
  100. int spielerAntwort;
  101. zeigeAuswahl("Deine Antwort: ");
  102. scanf("%d", &spielerAntwort);
  103. return spielerAntwort;
  104. }
  105. int berechneErgebnis(int zahl1, int zahl2, char operator) {
  106. switch (operator) {
  107. case '+':
  108. return addiere(zahl1, zahl2);
  109. case '-':
  110. return subtrahiere(zahl1, zahl2);
  111. case '*':
  112. return multipliziere(zahl1, zahl2);
  113. case '/':
  114. return dividiere(zahl1, zahl2);
  115. default:
  116. return 0;
  117. }
  118. }
  119. //21
  120. void spieleRunde(int schwierigkeitsgrad) {
  121. int punkte = 0;
  122. int anzahlAufgaben = 5;
  123. zeigeAuswahl("Berechne die folgenden Aufgaben:");
  124. for (int i = 0; i < anzahlAufgaben; i++) {
  125. int zahl1 = generiereZufallszahl(1 * schwierigkeitsgrad, 10 * schwierigkeitsgrad);
  126. int zahl2 = generiereZufallszahl(1 * schwierigkeitsgrad, 10 * schwierigkeitsgrad);
  127. char operator = generiereZufallsOperator();
  128. if (operator == '/' && zahl2 == 0) {
  129. zahl2 = generiereZufallszahl(1 * schwierigkeitsgrad, 10 * schwierigkeitsgrad);
  130. }
  131. int ergebnis = berechneErgebnis(zahl1, zahl2, operator);
  132. printf("Aufgabe %d: %d %c %d\n", i + 1, zahl1, operator, zahl2);
  133. int spielerAntwort = holeSpielerAntwort();
  134. bewerteAntwort(spielerAntwort, ergebnis, &punkte);
  135. }
  136. zeigeRundenEnde(punkte);
  137. }
  138. int mainx() {
  139. srand(time(NULL));
  140. int weiterSpielen = 1;
  141. int gesamtPunkte = 0;
  142. zeigeAnleitung();
  143. while (weiterSpielen) {
  144. int schwierigkeitsgrad;
  145. printf("\nWähle einen Schwierigkeitsgrad (1 für einfach, 2 für mittel, 3 für schwer): ");
  146. scanf("%d", &schwierigkeitsgrad);
  147. spieleRunde(schwierigkeitsgrad);
  148. zeigeHighscore(gesamtPunkte);
  149. printf("\nMöchtest du eine weitere Runde spielen? (1 für Ja, 0 für Nein): ");
  150. scanf("%d", &weiterSpielen);
  151. }
  152. printf("Vielen Dank fürs Spielen! Auf Wiedersehen.\n");
  153. return 0;
  154. }