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.

217 lines
11 KiB

#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <stdlib.h>
#include "casualQuiz.h" //header datei
void casualQuiz() {
int index = 0;
char* fragen[] = { //eingabe der Fragen in ein Array
"Which Disney character famously leaves a glass shoe behind at a royal ball?",
"The hammer and sickle are one of the most recognisable symbols of which political ideology?",
"Which two words traditionally appear onscreen at the termination of a feature film?",
"A person with well-developed abdominal muscles is said to have a what?",
"A magnet would most likely attract which of the following?",
"In the United States, what is traditionally the proper way to adress a judge?",
"Which of these pairs of apps offers roughly the same type of service?",
"A geologist would likely be LEAST helpful for answering questions about which of the following?",
"When a person is rudely ignored, he is said to be 'getting a' what?",
"A common piece of advice goes, 'Be there or be' what?",
"If you're trying to find other players in a game of hide and seek, what are you most likly called?",
"If you're skeptical about something, you should 'take it with a grain of' what?",
"Something in an obvious location is said to be 'right under your' what?",
"When a tree is cut down, the part that remains in the ground is called what?",
"What name is given to the belt machinery in an airport that delivers checked luggage from the plane to baggage reclaim?",
"By definition, a 10-speed bike has 10 what?",
"A lullaby is a song sung to babies to help them do what?",
"In history books, leaders named Alexander and Catherine both share what flattering title?",
"What notable part of the US's topography accounts for roughly 20 percent of the fresh water on Earth?",
"A person who is preparing to work hard is said to be 'rolling up his' what?"
};
char* antworten[][4] = { //Eingabe der zugehörigen Antworten in ein array
{"Elsa", "Rapunzel", "Cinderella", "Pocahontas"},
{"Republicanism", "Liberalism", "Conservatism", "Communism"},
{"The End", "The Termination", "Pizza's ready", "Hotdog Time"},
{"12-Pack", "6-Pack", "Family Pack", "One-Pack"},
{"Metal", "Plastic", "Humans", "Water"},
{"Your holiness", "Your eminence", "Father", "Your honor"},
{"Snapchat and Instagram", "Whatsapp and Twitter(now 'X')","Lyft and Uber", "Tiktok and Spotify"},
{"Granite Boulders", "Fruity Pebbles", "Precious Stones", "Igneus Rocks"},
{"Hot knee","Cold shoulder", "Burning hand", "Warm toe"},
{"Bare", "Aware", "Square", "All alone a usual"},
{"Butterbean", "Stinky", "Dunce", "It"},
{"Salt", "Sand", "Sugar", "Silicium"},
{"Mattress", "Nose", "Foot", "Boxer Shorts"},
{"Rump", "Leftovers", "Hump", "Stump"},
{"Hangar", "Carousel", "Terminal", "Bagroller"},
{"Wheels", "Spokes", "Gears", "Lives"},
{"Wake up", "Eat", "Fall asleep", "Invest wisely"},
{"The Great", "The Unruly", "The Ego-Consious", "The Ferocious"},
{"Mark Zuckerbergs hot tub", "The Grand Canyon", "Death Valley", "The Great Lakes"},
{"Sleeves", "Curtains", "AC/DC wall poster", "Towels"},
};
int richtigeAntworten[] = { 3,4,1,2,1,4,3,2,2,3,4,1,2,4,2,3,3,1,4,1};
int length_frag_array = sizeof(richtigeAntworten) / sizeof(int); //länge des arrays wird berechnet, damit man die länge vom spiel kennt
int correct = 0;
int answered = 0;
int* correctP = &correct; // pointer auf die zählervariable for richtige Antworten
int* answeredP = &answered; // pointer auf die zählervariable for beantwortete fragen
bool already_played = false; // initialisieren einer Bool variable zum abchecken ob man schon gespielt hat
bool end = false;
while (end == false) { //schleife, in der das Programm läuft
already_played = activePlaying(fragen, *antworten, richtigeAntworten, length_frag_array, answeredP, correctP);
printf("You had %d answers correct, while answering %d questions.\n", correct, answered);
end = ftryAgain(already_played); //man wird gefragt ob man nochmal spielen möchte
correct = 0;//zurücksetzen der beiden zählervariablen
answered = 0;
}
return;
}
bool activePlaying(char* fragen[], char* antworten[], int richtige_antwort[], int size, int* answeredP, int* correctP) {
int eingabe;
bool richtig;
int ansehen;
for (int i = 0; i < size; i++) { // Schleife, die so lange läuft, je nachdem wie viele fragen es gibt
eingabe = 5;
richtig = false;
ansehen = 0;
fzeigeFragen(fragen, i); //frage wird nach gegebenem index ausgegeben
fzeigeAntworten(antworten, i); //Antworten zum gleichen index wie die fragen ausgeben
printf("Reminder: Typing 0 lets you stop the game.\nPlease type in your answer 1,2,3 or 4: ");
eingabe = feingabeInteger(); //eingabe Funktion
richtig = fcheckaufRichtigkeit(eingabe, antworten, richtige_antwort, i); //überprüfung der eingabe anhand des richtige_eingabe arrays und dem index
fzaehlernachAuswahl(richtig, answeredP, correctP); // zähler werden hochgezählt je nach eingabe
printf("\n----------------------------------------------------------------------------------------\n\n");
}
return true;
}
void fzeigeFragen(char* fragen[], int index) {
printf("Question: %s\n", fragen[index]); //ausgabe Frage bei gegebenem index
}
void fzeigeAntworten(char* antworten[], int index) { //folgende ausgaben bei gegebenem index
printf("1) %s\n", antworten[4 * index + 0]); //ausgabe antwort 1
printf("2) %s\n", antworten[4 * index + 1]); //ausgabe antwort 2
printf("3) %s\n", antworten[4 * index + 2]); //ausgabe antwort 3
printf("4) %s\n", antworten[4 * index + 3]); //ausgabe antwort 4
}
int feingabeInteger() {
int eingabe; //integer für eingabe initialisiert
scanf_s("%d", &eingabe); //reine ingabe, prints sind vorher schon passiert
return eingabe; // return der eingabe
}
bool fcheckaufRichtigkeit(int eingabe, char* antworten[], int richtige_antwort[], int i) {
int ansehen = 0;
switch (eingabe) {//start vom switch
case 0: { //eingabe 0: abbruch funktion wird aufgerufen
fabbruch();
break;
}
case 1: {
if (richtige_antwort[i] == 1) { //vergleichen vov der eingabe zu welche richtige zahl hinter dem passenden index versteckt ist
printf("Right Answer, well done.\n");
return true;
}
else {
printf("Wrong answer.\n"); //wenn eingabe falsch ist
printf("Would you like to know the right answer?\nInput 1 if you want to see it, 0 if not: ");
scanf_s("%d", &ansehen);
if (ansehen == 1) printf("The right answer was: %d) %s\n", richtige_antwort[i], antworten[4 * i + richtige_antwort[i] - 1]);
else printf("Continuing...\n");
}
break;
}
case 2: {
if (richtige_antwort[i] == 2) { //vergleichen vov der eingabe zu welche richtige zahl hinter dem passenden index versteckt ist
printf("Right Answer, well done.\n");
return true;
}
else {
printf("Wrong answer.\n"); //wenn eingabe falsch ist
printf("Would you like to know the right answer?\nInput 1 if you want to see it, 0 if not: ");
scanf_s("%d", &ansehen);
if (ansehen == 1) printf("The right answer was: %d) %s\n", richtige_antwort[i], antworten[4 * i + richtige_antwort[i] - 1]);
else printf("Continuing...\n");
}
break;
}
case 3: {
if (richtige_antwort[i] == 3) { //vergleichen vov der eingabe zu welche richtige zahl hinter dem passenden index versteckt ist
printf("Right Answer, well done.\n");
return true;
}
else {
printf("Wrong answer.\n"); //wenn eingabe falsch ist
printf("Would you like to know the right answer?\nInput 1 if you want to see it, 0 if not: ");
scanf_s("%d", &ansehen);
if (ansehen == 1) printf("The right answer was: %d) %s\n", richtige_antwort[i], antworten[4 * i + richtige_antwort[i] - 1]);
else printf("Continuing...\n");
}
break;
}
case 4: {
if (richtige_antwort[i] == 4) { //vergleichen vov der eingabe zu welche richtige zahl hinter dem passenden index versteckt ist
printf("Right Answer, well done.\n");
return true;
}
else {
printf("Wrong answer.\n"); //wenn eingabe falsch ist
printf("Would you like to know the right answer?\nInput 1 if you want to see it, 0 if not: ");
scanf_s("%d", &ansehen);
if (ansehen == 1) printf("The right answer was: %d) %s\n", richtige_antwort[i], antworten[4 * i + richtige_antwort[i] - 1]);
else printf("Continuing...\n");
}
break;
}
default: { // eingabe war was anderes als 1,2,3,4 oder 5
printf("Wrong Input! Going to the next question...\n");
return false;
break;
}
}
return false;
}
void fzaehlernachAuswahl(bool richtig, int* answeredP, int* correctP) {
if (richtig == true) { //wenn dei eingabe von vorhin richtig war
*answeredP = *answeredP + 1; //hochzählen von der zählervariablen für beantwortete fragen um 1
*correctP = *correctP + 1; //hochzählen von der zählervariablen für korrekte antworten um 1
}
else { //wenn die eingabe von vorhin falsch war
*answeredP = *answeredP + 1; //hochzählen von der zählervariablen für beantwortete fragen um 1
}
return;
}
bool ftryAgain(bool already_played) {
if (already_played == true) { //wenn man das spiel schon gespielt hat
int sure;
printf("Would you like to play again?\n");
printf("Input 1 to continue gaming, input 0 to close the game: ");
scanf_s("%d", &sure); //eingabe pb man das spiel nochmal spielen möchte
if (sure == 1) { // nochmal spielen
printf("Starting the program up again...");
return false;
}
else { //beenden
printf("Input not '1', returning to main menu...");
return true;
}
}
else { //wenn man das spiel warum auch immer noch nicht gespielt hat
printf("It looks like you havent played the program yet, starting it up...");
return false;
}
}
void fabbruch() {
int wirklich;
printf("Do you really want to close the program?\nInput 1 to exit, input 0 to continue gaming: ");
scanf_s("%d", &wirklich); //eingabe ob man denn wirklich das programm beenden möchte
if (wirklich == 1) exit(7); //ende mit code 7
else return;//frage wird übersprungen, aber programm läuft weiter
}