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.

105 lines
4.2 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. #include "quizduell.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <ctype.h>
  6. int pruefeAntwort(QuizFrage frage, char antwort) {
  7. return (frage.korrekteAntwort == antwort);
  8. }
  9. QuizFrage erstelleFrage(const char* frage, const char* antwortA, const char* antwortB, const char* antwortC, const char* antwortD, char korrekteAntwort) {
  10. QuizFrage neueFrage;
  11. strcpy(neueFrage.frage, frage);
  12. strcpy(neueFrage.antwortA, antwortA);
  13. strcpy(neueFrage.antwortB, antwortB);
  14. strcpy(neueFrage.antwortC, antwortC);
  15. strcpy(neueFrage.antwortD, antwortD);
  16. neueFrage.korrekteAntwort = korrekteAntwort;
  17. return neueFrage;
  18. }
  19. int spieleKategorie(Kategorie* kategorie) {
  20. for (int i = 0; i < kategorie->anzahlFragen; i++) {
  21. char benutzerAntwort[10];
  22. printf("\nQuestion %d:\n%s", i + 1, kategorie->fragen[i].frage);
  23. }
  24. }
  25. void zeigeVerfuegbareKategorien(Kategorie kategorien[]) {
  26. printf("\nChoose a Category:\n");
  27. if (kategorien[0].fragen != NULL) printf("Mountains\n");
  28. if (kategorien[1].fragen != NULL) printf("Cooking\n");
  29. if (kategorien[2].fragen != NULL) printf("Sports\n");
  30. }
  31. void befreieKategorie(Kategorie* kategorie) {
  32. free(kategorie->fragen);
  33. kategorie->fragen = NULL;
  34. kategorie->anzahlFragen = 0;
  35. kategorie->joker = 0;
  36. }
  37. void quizduell() {
  38. printf("Welcome to the singleplayer quizduell!\n");
  39. Kategorie kategorien[MAX_CATEGORIES];
  40. kategorien[0].fragen = (QuizFrage*)malloc(MAX_QUESTIONS_PER_CATEGORY * sizeof(QuizFrage));
  41. kategorien[0].fragen[0] = erstelleFrage("Whats the height of the Zugspitze?", "2482 Meter", "2867 Meter", "2962 Meter", "3173 Meter", 'C');
  42. kategorien[0].fragen[1] = erstelleFrage("In which Federal State is the Zugspitze?", "Bayern", "Baden-Wuerttemberg", "Hessen", "Thueringen", 'A');
  43. kategorien[0].fragen[2] = erstelleFrage("Which Mountain is the highest following after the Zugspitze?", "Grossglockner", "Watzmann", "Feldberg", "Meissner", 'B');
  44. kategorien[0].anzahlFragen = MAX_QUESTIONS_PER_CATEGORY;
  45. kategorien[0].joker = 1;
  46. kategorien[1].fragen = (QuizFrage*)malloc(MAX_QUESTIONS_PER_CATEGORY * sizeof(QuizFrage));
  47. kategorien[1].fragen[0] = erstelleFrage("Which Ingredient is used traditionally for Pesto?", "Tomatoes", "Basil", "Spinach", "Oregano", 'B');
  48. kategorien[1].fragen[1] = erstelleFrage("Which meal is known for its usage of rice?", "Lasagna", "Sushi", "Pizza", "Hamburger", 'B');
  49. kategorien[1].fragen[2] = erstelleFrage("Which color has a ripe banana?", "Red", "Green", "Yellow", "Orange", 'C');
  50. kategorien[1].anzahlFragen = MAX_QUESTIONS_PER_CATEGORY;
  51. kategorien[1].joker = 1;
  52. kategorien[2].fragen = (QuizFrage*)malloc(MAX_QUESTIONS_PER_CATEGORY * sizeof(QuizFrage));
  53. kategorien[2].fragen[0] = erstelleFrage("In which sport is the term 'home run' used?", "Soccer/Football", "Baseball", "Tennis", "Golf", 'B');
  54. kategorien[2].fragen[1] = erstelleFrage("How many players are there normally on the pitch in a soccer/football team?", "9", "11", "7", "5", 'B');
  55. kategorien[2].fragen[2] = erstelleFrage("What sport is played on a pitch and has a 'wicket'?", "Rugby", "Cricket", "American Football", "Hockey", 'B');
  56. kategorien[2].anzahlFragen = MAX_QUESTIONS_PER_CATEGORY;
  57. kategorien[2].joker = 1;
  58. while (1) {
  59. char auswahl[50];
  60. zeigeVerfuegbareKategorien(kategorien);
  61. printf("Your selection: ");
  62. scanf("%s", auswahl);
  63. int auswahlIndex = -1;
  64. for (int i = 0; i < MAX_CATEGORIES; i++) {
  65. if (kategorien[i].fragen != NULL && strcmp(auswahl, "Mountains") == 0) {
  66. auswahlIndex = 0;
  67. break;
  68. }
  69. else if (kategorien[i].fragen != NULL && strcmp(auswahl, "Cooking") == 0) {
  70. auswahlIndex = 1;
  71. break;
  72. }
  73. else if (kategorien[i].fragen != NULL && strcmp(auswahl, "Sports") == 0) {
  74. auswahlIndex = 2;
  75. break;
  76. }
  77. }
  78. if (auswahlIndex != -1 && kategorien[auswahlIndex].fragen != NULL) {
  79. int punkte = spieleKategorie(&kategorien[auswahlIndex]);
  80. printf("\nPoints in this category: %d\n", punkte);
  81. befreieKategorie(&kategorien[auswahlIndex]);
  82. }
  83. return;
  84. }
  85. }