Browse Source

Merge branch 'Kevin' into 'main'

Kevin zweiter Merge

See merge request fdai7760/the-quizstars!12
main
fdai8033 11 months ago
parent
commit
54e6e2fb88
  1. 3
      .vs/ProjectSettings.json
  2. 9
      .vs/VSWorkspaceState.json
  3. BIN
      .vs/slnx.sqlite
  4. BIN
      .vs/the-quizstars/FileContentIndex/33fa03de-94f3-46ff-852c-82c39dd3438f.vsidx
  5. BIN
      .vs/the-quizstars/FileContentIndex/5870cdaa-2fcd-43ca-9d0c-415d34f163d7.vsidx
  6. BIN
      .vs/the-quizstars/FileContentIndex/6d95f6dc-d0ee-4d82-8089-e7fcd9e3c6c6.vsidx
  7. BIN
      .vs/the-quizstars/FileContentIndex/cb8a11d3-0de6-4a0a-a76d-3d108b17b5a6.vsidx
  8. BIN
      .vs/the-quizstars/FileContentIndex/e41759ff-8eed-41d5-9715-5ec97083d7c5.vsidx
  9. BIN
      .vs/the-quizstars/v17/.wsuo
  10. BIN
      .vs/the-quizstars/v17/Browse.VC.db
  11. BIN
      .vs/the-quizstars/v17/ipch/AutoPCH/258c13f24566c26a/PROGRAMM.ipch
  12. BIN
      .vs/the-quizstars/v17/ipch/AutoPCH/4ce352b5f58c5a60/QUIZDUELL.ipch
  13. 138
      src/quizduell.c

3
.vs/ProjectSettings.json

@ -0,0 +1,3 @@
{
"CurrentProjectSetting": "Keine Konfigurationen"
}

9
.vs/VSWorkspaceState.json

@ -0,0 +1,9 @@
{
"ExpandedNodes": [
"",
"\\src",
"\\test"
],
"SelectedNode": "\\src\\programm.c",
"PreviewInSolutionExplorer": false
}

BIN
.vs/slnx.sqlite

BIN
.vs/the-quizstars/FileContentIndex/33fa03de-94f3-46ff-852c-82c39dd3438f.vsidx

BIN
.vs/the-quizstars/FileContentIndex/5870cdaa-2fcd-43ca-9d0c-415d34f163d7.vsidx

BIN
.vs/the-quizstars/FileContentIndex/6d95f6dc-d0ee-4d82-8089-e7fcd9e3c6c6.vsidx

BIN
.vs/the-quizstars/FileContentIndex/cb8a11d3-0de6-4a0a-a76d-3d108b17b5a6.vsidx

BIN
.vs/the-quizstars/FileContentIndex/e41759ff-8eed-41d5-9715-5ec97083d7c5.vsidx

BIN
.vs/the-quizstars/v17/.wsuo

BIN
.vs/the-quizstars/v17/Browse.VC.db

BIN
.vs/the-quizstars/v17/ipch/AutoPCH/258c13f24566c26a/PROGRAMM.ipch

BIN
.vs/the-quizstars/v17/ipch/AutoPCH/4ce352b5f58c5a60/QUIZDUELL.ipch

138
src/quizduell.c

@ -4,13 +4,13 @@
#include <string.h>
#include <ctype.h>
int pruefeAntwort(QuizFrage frage, char antwort) {
int pruefeAntwort(const QuizFrage frage, const 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);
snprintf(neueFrage.frage, sizeof(neueFrage.frage), "%s", frage);
strcpy(neueFrage.antwortA, antwortA);
strcpy(neueFrage.antwortB, antwortB);
strcpy(neueFrage.antwortC, antwortC);
@ -21,82 +21,66 @@ QuizFrage erstelleFrage(const char* frage, const char* antwortA, const char* ant
}
int spieleKategorie(Kategorie* kategorie) {
int punktzahl = 0;
int jokerVerwendet = 0;
size_t punktzahl = 0;
int jokerVerwendet = 0; // Joker-Flag für diese Kategorie
for (int i = 0; i < kategorie->anzahlFragen; i++) {
char benutzerAntwort[10];
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");
}
}
else {
break; // Wenn der Joker bereits verwendet wurde, beendet die Schleife ohne nachzufragen
// 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
}
}
printf("Your answer: ");
scanf("%s", benutzerAntwort);
// Überprüfe die Antwort des Benutzers, wenn der Joker nicht verwendet wurde
if (!jokerVerwendet) {
printf("Enter your choice (A/B/C/D): ");
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");
@ -105,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;
}
@ -130,6 +117,9 @@ void quizduell() {
Kategorie kategorien[MAX_CATEGORIES];
kategorien[0].fragen = (QuizFrage*)malloc(MAX_QUESTIONS_PER_CATEGORY * sizeof(QuizFrage));
if (kategorien[0].fragen == NULL) {
exit(EXIT_FAILURE);
}
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');
@ -137,6 +127,9 @@ void quizduell() {
kategorien[0].joker = 1;
kategorien[1].fragen = (QuizFrage*)malloc(MAX_QUESTIONS_PER_CATEGORY * sizeof(QuizFrage));
if (kategorien[1].fragen == NULL) {
exit(EXIT_FAILURE);
}
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');
@ -144,6 +137,9 @@ void quizduell() {
kategorien[1].joker = 1;
kategorien[2].fragen = (QuizFrage*)malloc(MAX_QUESTIONS_PER_CATEGORY * sizeof(QuizFrage));
if (kategorien[2].fragen == NULL) {
exit(EXIT_FAILURE);
}
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');
@ -156,9 +152,11 @@ void quizduell() {
zeigeVerfuegbareKategorien(kategorien);
printf("Your selection: ");
scanf("%s", auswahl);
fgets(auswahl, sizeof(auswahl), stdin);
auswahl[strcspn(auswahl, "\n")] = '\0';
int auswahlIndex = -1;
typedef int CategoryIndex;
CategoryIndex auswahlIndex = -1;
for (int i = 0; i < MAX_CATEGORIES; i++) {
if (kategorien[i].fragen != NULL && strcmp(auswahl, "Mountains") == 0) {

Loading…
Cancel
Save