/* Ramen_Physik.c Hier werden Physikaufgaben gelöst mit einem Spiel als Pause Autor: Jana Nieblas, Debora Semmler Firma: FHGR Version 1.0 Datum 11.12.2024 Aenderungen: V 1.0 11.12.2024 Erste Version */ #include #include #include #include //Definitionen #define max_anzahl_fehler 3 // Abfrage Antworten int antwort (int loesung, int *falsche_antwort){ while (1) { int eingabe; scanf("%d", &eingabe); if (eingabe == loesung) { printf("Richtige Antwort \n"); return 0; } else { printf("Falsche antwort \n"); *falsche_antwort += 1; if (*falsche_antwort >= max_anzahl_fehler) { printf("Zu viele ungültige Eingaben. Programm beendet.\n"); return 20; } } } } // Zufällige Ausgabe der Fragen int zufaellig(int maximum){ int n = rand() % maximum; return n; } //einfache Fragen int einfache_fragen(int *falsche_antwort){ //Variabeln const int anzahl_fragen = 10; int fragen[3] = {-1, -1,-1}; int return_code = 0; int x = 0; //abfragen der verwendeten Fragen for (int i = 0; i < 3; i++) { while (1) { x = zufaellig(anzahl_fragen); if (x != fragen[0] && x != fragen[1] && x != fragen[2]) { break; } } fragen[i]=x; //Fragen switch (x) { case 0 : printf("Frage 1 \n"); return_code = antwort(2, falsche_antwort); break; case 1 : printf("Frage 2 \n"); return_code = antwort(2, falsche_antwort); break; case 2 : printf("Frage 3 \n"); return_code = antwort(2, falsche_antwort); break; case 3 : printf("Frage 4 \n"); return_code = antwort(2, falsche_antwort); break; case 4 : printf("Frage 5 \n"); return_code = antwort(2, falsche_antwort); break; case 5 : printf("Frage 6 \n"); return_code = antwort(2, falsche_antwort); break; case 6 : printf("Frage 7 \n"); return_code = antwort(2, falsche_antwort); break; case 7 : printf("Frage 8 \n"); return_code = antwort(2, falsche_antwort); break; case 8 : printf("Frage 9 \n"); return_code = antwort(2, falsche_antwort); break; case 9 : printf("Frage 10 \n"); return_code = antwort(2, falsche_antwort); break; default: break; } if (return_code == 20) { return 20; } } } //mittlere Fragen int mittlere_fragen(int *falsche_antwort){ //Variabeln const int anzahl_fragen = 10; int fragen[3] = {-1, -1,-1}; int return_code = 0; int x = 0; //abfragen verwendeter Fragen for (int i = 0; i < 3; i++) { while (1) { x = zufaellig(anzahl_fragen); if (x != fragen[0] && x != fragen[1] && x != fragen[2]) { break; } } fragen[i]=x; //Fragen switch (x) { case 0 : printf("Frage 1 \n"); return_code = antwort(2, falsche_antwort); break; case 1 : printf("Frage 2 \n"); return_code = antwort(2, falsche_antwort); break; case 2 : printf("Frage 3 \n"); return_code = antwort(2, falsche_antwort); break; case 3 : printf("Frage 4 \n"); return_code = antwort(2, falsche_antwort); break; case 4 : printf("Frage 5 \n"); return_code = antwort(2, falsche_antwort); break; case 5 : printf("Frage 6 \n"); return_code = antwort(2, falsche_antwort); break; case 6 : printf("Frage 7 \n"); return_code = antwort(2, falsche_antwort); break; case 7 : printf("Frage 8 \n"); return_code = antwort(2, falsche_antwort); break; case 8 : printf("Frage 9 \n"); return_code = antwort(2, falsche_antwort); break; case 9 : printf("Frage 10 \n"); return_code = antwort(2, falsche_antwort); break; default: break; } if (return_code == 20) { return 20; } } } //schwere Fragen int schwere_fragen(int *falsche_antwort){ //Variabeln const int anzahl_fragen = 10; int fragen[3] = {-1, -1,-1}; int return_code = 0; int x = 0; //abfragen verwendeter Fragen for (int i = 0; i < 3; i++) { while (1) { x = zufaellig(anzahl_fragen); if (x != fragen[0] && x != fragen[1] && x != fragen[2]) { break; } } fragen[i]=x; //Fragen switch (x) { case 0 : printf("Frage 1 \n"); return_code = antwort(2, falsche_antwort); break; case 1 : printf("Frage 2 \n"); return_code = antwort(2, falsche_antwort); break; case 2 : printf("Frage 3 \n"); return_code = antwort(2, falsche_antwort); break; case 3 : printf("Frage 4 \n"); return_code = antwort(2, falsche_antwort); break; case 4 : printf("Frage 5 \n"); return_code = antwort(2, falsche_antwort); break; case 5 : printf("Frage 6 \n"); return_code = antwort(2, falsche_antwort); break; case 6 : printf("Frage 7 \n"); return_code = antwort(2, falsche_antwort); break; case 7 : printf("Frage 8 \n"); return_code = antwort(2, falsche_antwort); break; case 8 : printf("Frage 9 \n"); return_code = antwort(2, falsche_antwort); break; case 9 : printf("Frage 10 \n"); return_code = antwort(2, falsche_antwort); break; default: break; } if (return_code == 20) { return 20; } } } // Hauptunktionen int Ramen_Physik(){ // Umlaute system("chcp 65001 >null"); // Zufallsgenerator initialisieren srand(time(NULL)); //Variabeln char eingabe = '0'; int return_code = 0; int falsche_antwort = 0; while (1){ //löschen der Konsole printf("\e[1;1H\e[2J"); //Auswahl der Schwierigkeitsstufe printf("1 \t einfache Fragen \n"); printf("2 \t mittlere Fragen \n"); printf("3 \t schwere Fragen \n"); printf("q \t zurück zum Hauptmenu \n"); scanf("%c", &eingabe); //Abfrage der Eingabe switch (eingabe){ case '1':{ printf("\neinfache Fragen\n"); return_code = einfache_fragen(&falsche_antwort); break; } case '2':{ printf("\nmittlere Fragen\n"); return_code = mittlere_fragen(&falsche_antwort); break; } case '3':{ printf("\nschwere Fragen\n"); return_code = schwere_fragen(&falsche_antwort); break; } case 'q':{ printf("\nProgramm beendet \n"); return 10; break; } case '\n':{ break; } default: { printf("Zu viele ungültige Eingaben. Programm beendet.\n"); return 20; } } if (return_code == 20){ return 20; } } return 0; }