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
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;
|
|
}
|