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