#include
#include
#include
#include
// Definieer de vraagstructuur
typedef struct {
Char -vraag [256];
CHAR ANTWOORD [256];
Char Option1 [256];
Char Option2 [256];
Char Option3 [256];
Char Option4 [256];
} Vraag;
// Definieer de structuur van de spelstatus
typedef struct {
Int CurrentQuestion;
int Moneywon;
int lifelineused [3]; // 0 voor ongebruikt, 1 voor gebruik
int gameover;
} Gamestate;
// functie om vragen uit een bestand te laden
Vraag* loadQuestions (const char* bestandsnaam, int* numquestions) {
Bestand* fp =fopen (bestandsnaam, "r");
if (fp ==null) {
printf ("Fout opening vraagbestand! \ n");
retournel null;
}
// Lees het aantal vragen
fscanf (FP, "%d \ n", numquestions);
// Wijs het geheugen toe voor de vragen
Vraag* vragen =malloc (* numquestions* sizeof (vraag));
if (vragen ==null) {
printf ("Fout het toewijzen van geheugen voor vragen! \ n");
fclose (FP);
retournel null;
}
// Lees de vragen uit het bestand
voor (int i =0; i <*numquestions; i ++) {
fscanf (fp, "%[^\ n] \ n", vragen [i] .question);
fscanf (fp, "%[^\ n] \ n", vragen [i] .Answer);
fscanf (fp, "%[^\ n] \ n", vragen [i] .Option1);
fscanf (fp, "%[^\ n] \ n", vragen [i] .Option2);
fscanf (fp, "%[^\ n] \ n", vragen [i] .Option3);
fscanf (fp, "%[^\ n] \ n", vragen [i] .Option4);
}
fclose (FP);
Retourneren vragen;
}
// functie om de huidige vraag weer te geven
void DisplayQuestion (vraagvraag) {
printf ("\ n%s \ n \ n", vraag.question);
printf ("1. %s \ n", vraag.option1);
printf ("2. %s \ n", vraag.option2);
printf ("3. %s \ n", vraag.option3);
printf ("4. %s \ n", vraag.option4);
}
// functie om het antwoord van de speler aan te pakken
int getanswer (gamestate* game) {
int antwoord;
printf ("\ nenter uw antwoord (1-4):");
scanf ("%d", &antwoord);
// bevestig het antwoord
terwijl (antwoord <1 || antwoord> 4) {
printf ("Ongeldig antwoord! Voer een nummer in tussen 1 en 4:");
scanf ("%d", &antwoord);
}
retourneer antwoord;
}
// functie om te controleren of het antwoord correct is
int checkanwer (vraagvraag, int antwoord) {
if (antwoord ==1 &&strcmp (vraag.option1, vraag.answer) ==0) {
retourneer 1;
} anders if (antwoord ==2 &&strcmp (vraag.option2, vraag.answer) ==0) {
retourneer 1;
} anders if (antwoord ==3 &&strcmp (vraag.option3, vraag.answer) ==0) {
retourneer 1;
} anders if (antwoord ==4 &&strcmp (vraag.option4, vraag.answer) ==0) {
retourneer 1;
} else {
retourneer 0;
}
}
// functie om levenslijnen af te handelen
void uselifeline (gamestate* game) {
int keuze;
printf ("\ nWhich Lifeline zou u willen gebruiken? \ n");
printf ("1. 50/50 \ n");
printf ("2. Vraag het publiek \ n");
printf ("3. Telefoon Een vriend \ n");
printf ("Voer uw keuze in (1-3):");
scanf ("%d", &keuze);
// valideer keuze
terwijl (keuze <1 || keuze> 3) {
printf ("Ongeldige keuze! Voer een nummer in tussen 1 en 3:");
scanf ("%d", &keuze);
}
// Controleer of de levenslijn al is gebruikt
if (game-> lifelineUsed [keuze - 1] ==1) {
printf ("U hebt deze Lifeline al gebruikt! \ N");
opbrengst;
}
// Implementeer hier Lifeline -logica (bijvoorbeeld, verwijder onjuiste opties, simuleer doelgroepstemmen, enz.)
Game-> LifelineUsed [Choice - 1] =1;
printf ("Lifeline Succesvol gebruikt! \ n");
}
// functie om het spel te spelen
void playgame (vraag* vragen, int numquestions) {
Gamestate game;
game.currentquestion =0;
game.moneywon =0;
memet (game.lifelineus, 0, sizeof (game.lifelineused));
game.gameover =0;
terwijl (! game.gameover) {
// Toon de huidige vraag
DisplayQuestion (vragen [game.currentquestion]);
// Behandel levenslijnen
printf ("\ ndo U wilt een levenslijn gebruiken? (J/N):");
Char Lifelinechoice;
scanf (" %c", &lifelinechoice);
if (lifelinechoice =='y') {
Uselifeline (&game);
}
// Krijg het antwoord van de speler
int antwoord =getanswer (&game);
// Controleer of het antwoord correct is
if (checkanwer (vragen [game.currentquestion], antwoord)) {
printf ("correct! \ n");
game.Moneywon + =1000 * (game.CurrentQuestion + 1);
game.currentquestion ++;
if (game.currentquestion ==numquestions) {
game.gameover =1;
printf ("\ ncongratulations! Je hebt $%d! \ n", game.moneywon) gewonnen;
pauze;
}
} else {
printf ("onjuist! \ n");
game.gameover =1;
printf ("\ nyou won $%d. Bijna geluk de volgende keer! \ n", game.moneywon);
pauze;
}
}
}
int main () {
Srand (tijd (null));
int numquestions;
Vraag* vragen =loadQuestions ("vragen.txt", &numquestions);
if (vragen ==null) {
retourneer 1;
}
printf ("\ nWelcome to Who wil een miljonair zijn! \ n");
PlayGame (vragen, numquestions);
gratis (vragen);
retourneer 0;
}
`` `
Hoe deze code te gebruiken:
1. Maak een vraagbestand: Maak een tekstbestand met de naam `vragen.txt` en volg dit formaat:
`` `
10 // Aantal vragen
Wat is de hoofdstad van Frankrijk? // Vraag
Parijs // Juist antwoord
Berlijn // Optie 1
Londen // Optie 2
Rome // Optie 3
Tokyo // Optie 4
... // Voeg meer vragen toe in hetzelfde formaat
`` `
2. Compileren en uitvoeren: Samen de code met behulp van een C -compiler (bijv. GCC) en voer het uitvoerbare bestand uit.
Verklaring:
* Gegevensstructuren:
* `Vraag` structuur:bevat de vraagtekst-, antwoord- en meerkeuze-opties.
* `Gamestate` structuur:volgt de huidige vraag, geld gewonnen, gebruikte levenslijnen en game over status.
* functies:
* `loadQuestions ()`:laadt vragen uit een bestand.
* `DisplayQuestion ()`:geeft de huidige vraag en opties weer.
* `getanswer ()`:vraagt de speler om een antwoord en valideert invoer.
* `checkAnswer ()`:vergelijkt het antwoord van de speler met het juiste antwoord.
* `uselifeline ()`:verwerkt Lifeline selectie en implementatie (tijdelijke plaats voor werkelijke Lifeline -logica).
* `PlayGame ()`:beheert de hoofdspellus, het handelen van vragen, antwoorden en levenslijnen.
* Game Logic:
* De functie `playgame ()` herhaalt door vragen totdat de speler de laatste vraag of antwoorden onjuist bereikt.
* De speler kan levenslijnen gebruiken door opties uit een menu te kiezen.
* Het spel houdt de voortgang en het gewonnen van de speler bij.
Om de levenslijnen te implementeren, moet u het volgende toevoegen in de functie `uselifeline ()` functie:
* 50/50: Verwijder twee onjuiste opties willekeurig.
* Vraag het publiek: Genereer willekeurige stemmen van het publiek, waardoor het juiste antwoord een grotere kans krijgt om te winnen.
* Bel een vriend: Genereer een willekeurige "vriend" antwoord, dat correct of onjuist kan zijn met een bepaalde waarschijnlijkheid.
Deze code biedt een basisstructuur voor een spel "Who Want A Millionaire". U kunt het verder verbeteren door:
* Meer geavanceerde Lifeline -logica implementeren.
* Visuele elementen en animaties toevoegen.
* Meer complexere vraagformaten opnemen.
* Game -voortgang opslaan en laden.