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.

190 lines
4.3 KiB

//1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "Mathe.h"
//3
int generiereZufallszahl(int min, int max);
//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));
}
//19
char generiereZufallsOperator() {
char operatoren[] = {'+', '-', '*', '/'};
int index = rand() % 4;
return operatoren[index];
}
//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);
}
//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;
}
//29
int multipliziere(int zahl1, int zahl2) {
return zahl1 * zahl2;
}
//30
int dividiere(int zahl1, int zahl2) {
if (zahl2 != 0) {
return zahl1 / zahl2;
} else {
printf("Fehler: Division durch Null vermieden.\n");
return 0;
}
}
//31
void zeigeAuswahl(const char* text) {
printf("%s\n", text);
}
//24
int holeSpielerAntwort() {
int spielerAntwort;
zeigeAuswahl("Deine Antwort: ");
scanf("%d", &spielerAntwort);
return spielerAntwort;
}
int berechneErgebnis(int zahl1, int zahl2, char operator) {
switch (operator) {
case '+':
return addiere(zahl1, zahl2);
case '-':
return subtrahiere(zahl1, zahl2);
case '*':
return multipliziere(zahl1, zahl2);
case '/':
return dividiere(zahl1, zahl2);
default:
return 0;
}
}
//21
void spieleRunde(int schwierigkeitsgrad) {
int punkte = 0;
int anzahlAufgaben = 5;
zeigeAuswahl("Berechne die folgenden Aufgaben:");
for (int i = 0; i < anzahlAufgaben; i++) {
int zahl1 = generiereZufallszahl(1 * schwierigkeitsgrad, 10 * schwierigkeitsgrad);
int zahl2 = generiereZufallszahl(1 * schwierigkeitsgrad, 10 * schwierigkeitsgrad);
char operator = generiereZufallsOperator();
if (operator == '/' && zahl2 == 0) {
zahl2 = generiereZufallszahl(1 * schwierigkeitsgrad, 10 * schwierigkeitsgrad);
}
int ergebnis = berechneErgebnis(zahl1, zahl2, operator);
printf("Aufgabe %d: %d %c %d\n", i + 1, zahl1, operator, zahl2);
int spielerAntwort = holeSpielerAntwort();
bewerteAntwort(spielerAntwort, ergebnis, &punkte);
}
zeigeRundenEnde(punkte);
}
int mainx() {
srand(time(NULL));
int weiterSpielen = 1;
int gesamtPunkte = 0;
zeigeAnleitung();
while (weiterSpielen) {
int schwierigkeitsgrad;
printf("\nWähle einen Schwierigkeitsgrad (1 für einfach, 2 für mittel, 3 für schwer): ");
scanf("%d", &schwierigkeitsgrad);
spieleRunde(schwierigkeitsgrad);
zeigeHighscore(gesamtPunkte);
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");
return 0;
}