diff --git a/src/main/c/Mathe.c b/src/main/c/Mathe.c index d172f55..f0c9c9d 100644 --- a/src/main/c/Mathe.c +++ b/src/main/c/Mathe.c @@ -1,87 +1,134 @@ -//1 + +// Geschrieben von Yasin Al Satouf + #include #include #include #include "Mathe.h" -//2 + + void initialisiereZufallsgenerator(); -//3 -int generiereZufallszahl(int min, int max); +int generiereZufallszahl(int minimum, int maximum); -//4 char generiereZufallsOperator(); -//5 int addiere(int zahl1, int zahl2); -//6 int subtrahiere(int zahl1, int zahl2); -//7 int multipliziere(int zahl1, int zahl2); - -//8 int dividiere(int zahl1, int zahl2); - -//9 int berechneErgebnis(int zahl1, int zahl2, char operator); - -//10 void spieleRunde(int schwierigkeitsgrad); - -//11 void zeigeAnleitung(); - -//12 void zeigeHighscore(int punkte); - -//13 int holeSpielerAntwort(); -//14 void bewerteAntwort(int spielerAntwort, int ergebnis, int* punkte); -//15 void zeigeRundenEnde(int punkte); -//16 + + + + void zeigeAuswahl(const char* text); -//17 void initialisiereZufallsgenerator() { srand(time(NULL)); +} -//18 -int generiereZufallszahl(int min, int max) { - return min + (int)((double)rand() / (RAND_MAX + 1) * (max - min + 1)); +int generiereZufallszahl(int minimum, int maximum) { + return minimum + (int)((double)rand() / (RAND_MAX + 1) * (maximum - minimum + 1)); +} -//19 char generiereZufallsOperator() { char operatoren[] = {'+', '-', '*', '/'}; - int index = rand() % 4; - return operatoren[index]; + int indexnumber = rand() % 4; + return operatoren[indexnumber]; +} + +void zeigeAnleitung() { + printf("\n=== Anleitung ===\n"); + printf("Löse die folgenden mathematischen Aufgaben, um Punkte zu erzielen.\n"); + printf("Sie haben die Möglichkeit, zwischen verschiedenen Schwierigkeitsgraden zu wählen.\n"); + printf("Versuche, so viele Aufgaben wie möglich korrekt zu lösen, um einen höheren Highscore zu erzielen.!\n"); +} + + +void zeigeHighscore(int punkte) { + printf("\n=== Highscore ===\n"); + printf("Dein aktueller Highscore ist: %d Punkte\n", punkte); +} + + +void bewerteAntwort(int spielerAntwort, int ergebnis, int* punkte) { + if (spielerAntwort == ergebnis) { + printf("Super, das ist richtig! Du erhältst einen Punkt.\n"); + (*punkte)++; + } else { + printf(" Leider Falsch! Die richtige Antwort ist %d\n", ergebnis); + } +} + + +void zeigeRundenEnde(int punkte) { + printf("Runde beendet. Du hast insgesamt %d Punkte erreicht.\n", punkte); +} + +int addiere(int ersteZahl, int zweiteZahl) { + return ersteZahl + zweiteZahl; +} + +int subtrahiere(int zahl1, int zahl2) { + return zahl1 - zahl2; +} + +int multipliziere(int zahl1, int zahl2) { + return zahl1 * zahl2; +} + +int dividiere(int zahl1, int zahl2) { + if (zahl2 != 0) { + return zahl1 / zahl2; + } else { + printf("Fehler: Division durch Null vermieden.\n"); + return 0; + } +} + + + +void zeigeAuswahl(const char* text) { + printf("%s\n", text); +} +int holeSpielerAntwort() { + int spielerAntwort; + zeigeAuswahl("Deine Antwort: "); + scanf("%d", &spielerAntwort); + return spielerAntwort; +} -//20 int berechneErgebnis(int zahl1, int zahl2, char operator) { switch (operator) { case '+': @@ -99,7 +146,8 @@ int berechneErgebnis(int zahl1, int zahl2, char operator) { -//21 + + void spieleRunde(int schwierigkeitsgrad) { int punkte = 0; int anzahlAufgaben = 5; @@ -122,82 +170,28 @@ void spieleRunde(int schwierigkeitsgrad) { } +int mainx() { + srand(time(NULL)); -//22 -void zeigeAnleitung() { - printf("\n=== Anleitung ===\n"); - printf("Beantworte die mathematischen Aufgaben, um Punkte zu sammeln.\n"); - printf("Du kannst zwischen verschiedenen Schwierigkeitsgraden wählen.\n"); - printf("Versuche so viele Aufgaben wie möglich korrekt zu lösen!\n"); - - - -//23 -void zeigeHighscore(int punkte) { - printf("\n=== Highscore ===\n"); - printf("Dein aktueller Highscore ist: %d Punkte\n", punkte); - - - -//24 -int holeSpielerAntwort() { - int spielerAntwort; - zeigeAuswahl("Deine Antwort: "); - scanf("%d", &spielerAntwort); - return spielerAntwort; - - - -//25 -void bewerteAntwort(int spielerAntwort, int ergebnis, int* punkte) { - if (spielerAntwort == ergebnis) { - printf("Richtig! Du erhältst einen Punkt.\n"); - (*punkte)++; - } else { - printf("Falsch! Die richtige Antwort ist %d\n", ergebnis); - } -} - - - -//26 -void zeigeRundenEnde(int punkte) { - printf("Runde beendet. Du hast insgesamt %d Punkte erreicht.\n", punkte); - - - -//27 -int addiere(int zahl1, int zahl2) { - return zahl1 + zahl2; - - - -//28 -int subtrahiere(int zahl1, int zahl2) { - return zahl1 - zahl2; - - + int weiterSpielen = 1; + int gesamtPunkte = 0; -//29 -int multipliziere(int zahl1, int zahl2) { - return zahl1 * zahl2; + zeigeAnleitung(); + while (weiterSpielen) { + int schwierigkeitsgrad; + printf("\n Schwierigkeitsgrad wählen (1 für einfach, 2 für mittel, 3 für schwer): "); + scanf("%d", &schwierigkeitsgrad); + spieleRunde(schwierigkeitsgrad); + zeigeHighscore(gesamtPunkte); -//30 -int dividiere(int zahl1, int zahl2) { - if (zahl2 != 0) { - return zahl1 / zahl2; - } else { - printf("Fehler: Division durch Null vermieden.\n"); - return 0; + printf("\nMöchtest du eine weitere Runde spielen? (1 für Ja, 0 für Nein): "); + scanf("%d", &weiterSpielen); } -} + printf("Vielen Dank fürs Spielen! Auf Wiedersehen.\n"); - -//31 -void zeigeAuswahl(const char* text) { - printf("%s\n", text); + return 0; } diff --git a/src/main/c/Mathe.h b/src/main/c/Mathe.h new file mode 100644 index 0000000..b95e151 --- /dev/null +++ b/src/main/c/Mathe.h @@ -0,0 +1,10 @@ +#ifndef TEST_H +#define TEST_H +int berechneErgebnis(int zahl1, int zahl2, char operator); +int generiereZufallszahl(int minimum, int maximum); +int multipliziere(int zahl1, int zahl2); +int dividiere(int zahl1, int zahl2); +int addiere(int ersteZahl, int zweiteZahl); +int subtrahiere(int zahl1, int zahl2); +int multipliziere(int zahl1, int zahl2); +#endif // MATHEMATIKSPIE diff --git a/src/test/c/test_Mathe.c b/src/test/c/test_Mathe.c new file mode 100644 index 0000000..ebddf8d --- /dev/null +++ b/src/test/c/test_Mathe.c @@ -0,0 +1,130 @@ +#ifdef TEST +#include "unity.h" +#include "Mathe.h" +void setUp(void) +{ +} + +void tearDown(void) +{ +} + +void test_Mathe_plus(void) +{ + + int a=berechneErgebnis(1,2,'+'); + /* assert */ + TEST_ASSERT_EQUAL_INT(a,3); +} + + +void test_Mathe_minus(void) +{ + + int a=berechneErgebnis(1,2,'-'); + /* assert */ + TEST_ASSERT_EQUAL_INT(a,-1); +} + + +void test_Mathe_multi(void) +{ + + int a=berechneErgebnis(1,2,'*'); + /* assert */ + TEST_ASSERT_EQUAL_INT(a,2); +} + + + +void test_Mathe_divided(void) +{ + + int a=berechneErgebnis(2,2,'/'); + /* assert */ + TEST_ASSERT_EQUAL_INT(a,1); +} + + + +void test_Zufallszahl(void) +{ + + int a= generiereZufallszahl(1, 10); + + /* assert */ +TEST_ASSERT_INT_WITHIN (10, 1, a); + +} + + +void testGeneriereZufallsOperator() { + // Since the function always returns one of {'+', '-', '*', '/'}, no specific range check is needed. + char result = generiereZufallsOperator(); + TEST_ASSERT_TRUE(result == '+' || result == '-' || result == '*' || result == '/'); +} + + + +void test_multi() +{ + + +int a=multipliziere(4, 3); + /* assert */ + TEST_ASSERT_EQUAL_INT(a,12); + + + +} + + + + +void test_dev() +{ + +int a=dividiere(10, 5); + /* assert */ + TEST_ASSERT_EQUAL_INT(a,2); + + + + +} + + + + + +void test_plus() +{ + +int a=addiere(10, 5); + /* assert */ + TEST_ASSERT_EQUAL_INT(a,15); + + + + +} + + + +void test_minus() +{ + +int a=subtrahiere(10, 5); + /* assert */ + TEST_ASSERT_EQUAL_INT(a,5); + + + + +} + + + + + +#endif diff --git a/src/test/c/test_test.c b/src/test/c/test_test.c deleted file mode 100644 index e69de29..0000000