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.

106 lines
4.2 KiB

#include "quizduell.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int pruefeAntwort(QuizFrage frage, char antwort) {
return (frage.korrekteAntwort == antwort);
}
QuizFrage erstelleFrage(const char* frage, const char* antwortA, const char* antwortB, const char* antwortC, const char* antwortD, char korrekteAntwort) {
QuizFrage neueFrage;
strcpy(neueFrage.frage, frage);
strcpy(neueFrage.antwortA, antwortA);
strcpy(neueFrage.antwortB, antwortB);
strcpy(neueFrage.antwortC, antwortC);
strcpy(neueFrage.antwortD, antwortD);
neueFrage.korrekteAntwort = korrekteAntwort;
return neueFrage;
}
int spieleKategorie(Kategorie* kategorie) {
for (int i = 0; i < kategorie->anzahlFragen; i++) {
char benutzerAntwort[10];
printf("\nQuestion %d:\n%s", i + 1, kategorie->fragen[i].frage);
}
}
void zeigeVerfuegbareKategorien(Kategorie kategorien[]) {
printf("\nChoose a Category:\n");
if (kategorien[0].fragen != NULL) printf("Mountains\n");
if (kategorien[1].fragen != NULL) printf("Cooking\n");
if (kategorien[2].fragen != NULL) printf("Sports\n");
}
void befreieKategorie(Kategorie* kategorie) {
free(kategorie->fragen);
kategorie->fragen = NULL;
kategorie->anzahlFragen = 0;
kategorie->joker = 0;
}
void quizduell() {
printf("Welcome to the singleplayer quizduell!\n");
Kategorie kategorien[MAX_CATEGORIES];
kategorien[0].fragen = (QuizFrage*)malloc(MAX_QUESTIONS_PER_CATEGORY * sizeof(QuizFrage));
kategorien[0].fragen[0] = erstelleFrage("Whats the height of the Zugspitze?", "2482 Meter", "2867 Meter", "2962 Meter", "3173 Meter", 'C');
kategorien[0].fragen[1] = erstelleFrage("In which Federal State is the Zugspitze?", "Bayern", "Baden-Wuerttemberg", "Hessen", "Thueringen", 'A');
kategorien[0].fragen[2] = erstelleFrage("Which Mountain is the highest following after the Zugspitze?", "Grossglockner", "Watzmann", "Feldberg", "Meissner", 'B');
kategorien[0].anzahlFragen = MAX_QUESTIONS_PER_CATEGORY;
kategorien[0].joker = 1;
kategorien[1].fragen = (QuizFrage*)malloc(MAX_QUESTIONS_PER_CATEGORY * sizeof(QuizFrage));
kategorien[1].fragen[0] = erstelleFrage("Which Ingredient is used traditionally for Pesto?", "Tomatoes", "Basil", "Spinach", "Oregano", 'B');
kategorien[1].fragen[1] = erstelleFrage("Which meal is known for its usage of rice?", "Lasagna", "Sushi", "Pizza", "Hamburger", 'B');
kategorien[1].fragen[2] = erstelleFrage("Which color has a ripe banana?", "Red", "Green", "Yellow", "Orange", 'C');
kategorien[1].anzahlFragen = MAX_QUESTIONS_PER_CATEGORY;
kategorien[1].joker = 1;
kategorien[2].fragen = (QuizFrage*)malloc(MAX_QUESTIONS_PER_CATEGORY * sizeof(QuizFrage));
kategorien[2].fragen[0] = erstelleFrage("In which sport is the term 'home run' used?", "Soccer/Football", "Baseball", "Tennis", "Golf", 'B');
kategorien[2].fragen[1] = erstelleFrage("How many players are there normally on the pitch in a soccer/football team?", "9", "11", "7", "5", 'B');
kategorien[2].fragen[2] = erstelleFrage("What sport is played on a pitch and has a 'wicket'?", "Rugby", "Cricket", "American Football", "Hockey", 'B');
kategorien[2].anzahlFragen = MAX_QUESTIONS_PER_CATEGORY;
kategorien[2].joker = 1;
while (1) {
char auswahl[50];
zeigeVerfuegbareKategorien(kategorien);
printf("Your selection: ");
scanf("%s", auswahl);
int auswahlIndex = -1;
for (int i = 0; i < MAX_CATEGORIES; i++) {
if (kategorien[i].fragen != NULL && strcmp(auswahl, "Mountains") == 0) {
auswahlIndex = 0;
break;
}
else if (kategorien[i].fragen != NULL && strcmp(auswahl, "Cooking") == 0) {
auswahlIndex = 1;
break;
}
else if (kategorien[i].fragen != NULL && strcmp(auswahl, "Sports") == 0) {
auswahlIndex = 2;
break;
}
}
if (auswahlIndex != -1 && kategorien[auswahlIndex].fragen != NULL) {
int punkte = spieleKategorie(&kategorien[auswahlIndex]);
printf("\nPoints in this category: %d\n", punkte);
befreieKategorie(&kategorien[auswahlIndex]);
}
return;
}
}