Browse Source

Joker-Polishing/Änderungen

remotes/origin/Kevin
Kevin Schellberg 11 months ago
parent
commit
b8434c4e63
  1. 2
      build/test/results/test_casualQuiz.pass
  2. 2
      build/test/results/test_quizduell.pass
  3. 2
      build/test/results/test_timequiz.pass
  4. 2
      build/test/results/test_wwm.pass
  5. 116
      src/quizduell.c

2
build/test/results/test_casualQuiz.pass

@ -11,4 +11,4 @@
:failed: 0
:ignored: 0
:stdout: []
:time: 0.02163599999039434
:time: 0.02230250000138767

2
build/test/results/test_quizduell.pass

@ -51,4 +51,4 @@
:failed: 0
:ignored: 0
:stdout: []
:time: 0.05005920000257902
:time: 0.022694699990097433

2
build/test/results/test_timequiz.pass

@ -11,4 +11,4 @@
:failed: 0
:ignored: 0
:stdout: []
:time: 0.021275600010994822
:time: 0.022485199995571747

2
build/test/results/test_wwm.pass

@ -11,4 +11,4 @@
:failed: 0
:ignored: 0
:stdout: []
:time: 0.019954899995354936
:time: 0.020305000012740493

116
src/quizduell.c

@ -22,82 +22,65 @@ QuizFrage erstelleFrage(const char* frage, const char* antwortA, const char* ant
int spieleKategorie(Kategorie* kategorie) {
size_t punktzahl = 0;
int jokerVerwendet = 0;
int jokerVerwendet = 0; // Joker-Flag für diese Kategorie
for (int i = 0; i < kategorie->anzahlFragen; i++) {
#define MAX_ANSWER_LENGTH 10
char benutzerAntwort[MAX_ANSWER_LENGTH];
char benutzerAntwort[2]; // Platz für die Benutzereingabe und das Nullzeichen
printf("\nQuestion %d:\n%s", i + 1, kategorie->fragen[i].frage);
char jokerAntwort[10];
do {
printf("\nA) %s\nB) %s\nC) %s\nD) %s\n", kategorie->fragen[i].antwortA, kategorie->fragen[i].antwortB, kategorie->fragen[i].antwortC, kategorie->fragen[i].antwortD);
if (!jokerVerwendet) {
printf("\nDo you want to use the joker? (Y/N): ");
scanf("%s", jokerAntwort);
printf(jokerAntwort);
if (toupper(jokerAntwort[0]) == 'Y') {
if (kategorie->joker > 0) {
kategorie->joker -= 1;
jokerVerwendet = 1;
printf("Joker inserted! Two incorrect answer options were deleted.\n");
char korrekteAntwort = kategorie->fragen[i].korrekteAntwort;
int gestrichen = 0;
for (char option = 'A'; option <= 'D'; option++) {
if (option != korrekteAntwort && gestrichen < 2) {
switch (option) {
case 'A':
strcpy(kategorie->fragen[i].antwortA, "XXXXXX");
gestrichen++;
break;
case 'B':
strcpy(kategorie->fragen[i].antwortB, "XXXXXX");
gestrichen++;
break;
case 'C':
strcpy(kategorie->fragen[i].antwortC, "XXXXXX");
gestrichen++;
break;
case 'D':
strcpy(kategorie->fragen[i].antwortD, "XXXXXX");
gestrichen++;
break;
}
}
printf("\nA) %s\nB) %s\nC) %s\nD) %s\n", kategorie->fragen[i].antwortA, kategorie->fragen[i].antwortB, kategorie->fragen[i].antwortC, kategorie->fragen[i].antwortD);
// Prüfe, ob der Joker noch nicht verwendet wurde und frage den Benutzer danach
if (!jokerVerwendet) {
printf("Do you want to use the joker? (Y/N): ");
char jokerAntwort[2];
scanf("%1s", jokerAntwort); // Benutzerantwort für den Joker einlesen
getchar(); // Leeren des Puffers
if (toupper(jokerAntwort[0]) == 'Y' && kategorie->joker > 0) {
printf("Joker inserted! Two incorrect answer options were deleted.\n");
char korrekteAntwort = kategorie->fragen[i].korrekteAntwort;
int gestrichen = 0;
for (char option = 'A'; option <= 'D'; option++) {
if (option != korrekteAntwort && gestrichen < 2) {
switch (option) {
case 'A':
strcpy(kategorie->fragen[i].antwortA, "XXXXXX");
gestrichen++;
break;
case 'B':
strcpy(kategorie->fragen[i].antwortB, "XXXXXX");
gestrichen++;
break;
case 'C':
strcpy(kategorie->fragen[i].antwortC, "XXXXXX");
gestrichen++;
break;
case 'D':
strcpy(kategorie->fragen[i].antwortD, "XXXXXX");
gestrichen++;
break;
}
// Zeigt die Antworten erneut an
printf("\nA) %s\nB) %s\nC) %s\nD) %s\n", kategorie->fragen[i].antwortA, kategorie->fragen[i].antwortB, kategorie->fragen[i].antwortC, kategorie->fragen[i].antwortD);
break;
}
else {
printf("No Joker left. Choose a different Category.\n");
}
}
else if (toupper(jokerAntwort[0]) == 'N') {
break; // Beendet die Schleife, wenn der Spieler keinen Joker verwenden möchte
}
else {
printf("Invalid input. Please type in 'Y'' for yes or 'N' for no.\n");
}
// Zeigt die Antworten erneut an
printf("\nA) %s\nB) %s\nC) %s\nD) %s\n", kategorie->fragen[i].antwortA, kategorie->fragen[i].antwortB, kategorie->fragen[i].antwortC, kategorie->fragen[i].antwortD);
kategorie->joker--; // Verringere die Anzahl der Joker
jokerVerwendet = 1; // Setze das Joker-Flag
}
else {
break; // Wenn der Joker bereits verwendet wurde, beendet die Schleife ohne nachzufragen
}
}
// Überprüfe die Antwort des Benutzers, wenn der Joker nicht verwendet wurde
if (!jokerVerwendet) {
printf("Enter your choice (A/B/C/D): ");
scanf("%9s", benutzerAntwort);
scanf("%1s", benutzerAntwort); // Benutzereingabe einlesen
getchar(); // Leeren des Puffers
benutzerAntwort[0] = toupper(benutzerAntwort[0]);
getchar();
if (pruefeAntwort(kategorie->fragen[i], benutzerAntwort[0])) {
printf("Correct!\n");
@ -106,9 +89,12 @@ int spieleKategorie(Kategorie* kategorie) {
else {
printf("Wrong! The correct Answer is %c\n", kategorie->fragen[i].korrekteAntwort);
}
}
} while (0);
// Setze das Joker-Flag für die nächste Frage zurück
jokerVerwendet = 0;
}
return punktzahl;
}

Loading…
Cancel
Save