#include
#include
#include
#include
// Definer spørgsmålstrukturen
typedef struct {
Char -spørgsmål [256];
char svar [256];
Char Option1 [256];
char option2 [256];
Char Option3 [256];
char option4 [256];
} Spørgsmål;
// Definer spiltilstandsstrukturen
typedef struct {
int strømspørgsmål;
int Moneywon;
int lifelineused [3]; // 0 for ubrugt, 1 til brugt
INT GameOver;
} GameState;
// funktion til at indlæse spørgsmål fra en fil
Spørgsmål* loadquestions (const char* filnavn, int* numquestions) {
Fil* fp =fopen (filnavn, "r");
if (fp ==null) {
printf ("fejl åbningsspørgsmålsfil! \ n");
returnere null;
}
// Læs antallet af spørgsmål
fscanf (fp, "%d \ n", numquestions);
// Tildel hukommelse til spørgsmålene
Spørgsmål* spørgsmål =malloc (* numquestions* størrelse af (spørgsmål));
if (spørgsmål ==null) {
printf ("Fejl tildeling af hukommelse til spørgsmål! \ n");
fClose (FP);
returnere null;
}
// Læs spørgsmålene fra filen
for (int i =0; i <*numquestions; i ++) {
fscanf (fp, "%[^\ n] \ n", spørgsmål [i]. Spørgsmål);
fscanf (fp, "%[^\ n] \ n", spørgsmål [i] .besvar);
fscanf (fp, "%[^\ n] \ n", spørgsmål [i] .option1);
fscanf (fp, "%[^\ n] \ n", spørgsmål [i] .option2);
fscanf (fp, "%[^\ n] \ n", spørgsmål [i] .option3);
fscanf (fp, "%[^\ n] \ n", spørgsmål [i] .option4);
}
fClose (FP);
returspørgsmål;
}
// funktion til at vise det aktuelle spørgsmål
void displayspor (spørgsmål spørgsmål) {
printf ("\ n%s \ n \ n", spørgsmål.question);
printf ("1. %s \ n", spørgsmål.Option1);
printf ("2. %s \ n", spørgsmål.Option2);
printf ("3. %s \ n", spørgsmål.Option3);
printf ("4. %s \ n", spørgsmål.Option4);
}
// funktion til at håndtere spillerens svar
int getanswer (gamestate* spil) {
int svar;
printf ("\ nenter dit svar (1-4):");
Scanf ("%d", &svar);
// Valider svaret
mens (svar <1 || svar> 4) {
printf ("Ugyldigt svar! Indtast et nummer mellem 1 og 4:");
Scanf ("%d", &svar);
}
Retur svar;
}
// funktion for at kontrollere, om svaret er korrekt
int checkAnswer (spørgsmål spørgsmål, int svar) {
if (svar ==1 &&strcmp (spørgsmål.Option1, spørgsmål.ANSWER) ==0) {
retur 1;
} andet hvis (svar ==2 &&strcmp (spørgsmål.Option2, spørgsmål.ANSWER) ==0) {
retur 1;
} andet hvis (svar ==3 &&strcmp (spørgsmål.Option3, spørgsmål.ANSWER) ==0) {
retur 1;
} andet hvis (svar ==4 &&strcmp (spørgsmål.Option4, spørgsmål.ANSWER) ==0) {
retur 1;
} andet {
return 0;
}
}
// funktion til at håndtere livslinjer
void uselifeline (GameState* Game) {
int valg;
printf ("\ nwhich livline vil du bruge? \ n");
printf ("1. 50/50 \ n");
printf ("2. spørg publikum \ n");
printf ("3. telefon en ven \ n");
printf ("Indtast dit valg (1-3):");
Scanf ("%d", &valg);
// Valider valg
mens (valg <1 || valg> 3) {
printf ("Ugyldigt valg! Indtast et nummer mellem 1 og 3:");
Scanf ("%d", &valg);
}
// Kontroller, om livline allerede er brugt
if (spil-> livlinebrugt [valg - 1] ==1) {
printf ("Du har allerede brugt denne livline! \ n");
vende tilbage;
}
// Implementere livline -logik her (f.eks. Fjern forkerte indstillinger, simulere publikumsafstemning osv.)
spil-> livlinebrugt [valg - 1] =1;
printf ("livline brugt med succes! \ n");
}
// funktion til at spille spillet
void playgame (spørgsmål* spørgsmål, int numquestions) {
GameState Game;
spil.currentQuestion =0;
spil.moneywon =0;
memset (Game.LifeLineused, 0, Sizeof (Game.Lifelineused));
spil.gameover =0;
mens (! Game.gameover) {
// Vis det aktuelle spørgsmål
Display Question (spørgsmål [Game.CurrentQuestion]);
// Håndter livslinjer
printf ("\ ndo du vil bruge en livline? (y/n):");
Char LifelineChoice;
Scanf (" %C", &LifelineChoice);
if (lifelinechoice =='y') {
uselifeline (&spil);
}
// få spillerens svar
int svar =getAnswer (&spil);
// Kontroller, om svaret er korrekt
if (checkAnswer (spørgsmål [Game.CurrentQuestion], svar)) {
printf ("korrekt! \ n");
spil.moneywon + =1000 * (Game.CurrentQuestion + 1);
Game.CurrentQuestion ++;
if (spil.currentQuestion ==numQuestions) {
spil.gameover =1;
printf ("\ nCongratulations! Du vandt $%d! \ n", spil.moneywon);
pause;
}
} andet {
printf ("forkert! \ n");
spil.gameover =1;
printf ("\ nyou vandt $%d. bedre held næste gang! \ n", spil.moneywon);
pause;
}
}
}
int main () {
srand (tid (null));
int numquestions;
Spørgsmål* spørgsmål =loadQuestions ("spørgsmål.txt", &numquestions);
if (spørgsmål ==null) {
retur 1;
}
printf ("\ nwelcome til hvem der ønsker at være millionær! \ n");
Playgame (spørgsmål, numquestions);
gratis (spørgsmål);
return 0;
}
`` `
Sådan bruges denne kode:
1. Opret en spørgsmålsfil: Opret en tekstfil med navnet `spørgsmål.txt` og følg dette format:
`` `
10 // Antal spørgsmål
Hvad er Frankrigs hovedstad? // Spørgsmål
Paris // Rigtigt svar
Berlin // mulighed 1
London // mulighed 2
Rom // mulighed 3
Tokyo // mulighed 4
... // Tilføj flere spørgsmål i det samme format
`` `
2. kompilere og kør: Kompiler koden ved hjælp af en C -kompilator (f.eks. GCC) og kør den eksekverbare.
Forklaring:
* datastrukturer:
* `Spørgsmål 'Struktur:Holder spørgsmålstekst, svar og muligheder for flere valg.
* `GameState` Structure:Spor det aktuelle spørgsmål, penge, der er vundet, livslinjer og spil over status.
* Funktioner:
* `LoadQuestions ()`:Indlæser spørgsmål fra en fil.
* `DisplayQuestion ()`:Viser det aktuelle spørgsmål og muligheder.
* `getanswer ()`:beder spilleren om et svar og validerer input.
* `checkAnswer ()`:sammenligner spillerens svar med det rigtige svar.
* `uselifeline ()`:Håndterer Lifeline Selection and Implementation (pladsholder for den faktiske livline -logik).
* `Playgame ()`:Administrerer hovedspilsløjfen, håndtering af spørgsmål, svar og livslinjer.
* spillogik:
* `Playgame () 'funktionen itererer gennem spørgsmål, indtil spilleren når det endelige spørgsmål eller svarer forkert.
* Spilleren kan bruge livslinjer ved at vælge muligheder fra en menu.
* Spillet holder styr på spillerens fremskridt og penge vandt.
For at implementere livslinjerne skal du tilføje følgende i funktionen `uselifeline ()` `
* 50/50: Fjern to forkerte indstillinger tilfældigt.
* Spørg publikum: Generer tilfældige publikumsstemmer, hvilket giver det rigtige svar en større chance for at vinde.
* telefon en ven: Generer en tilfældig "vens" svar, som kan være korrekt eller forkert med en vis sandsynlighed.
Denne kode giver en grundlæggende struktur for et "Who Wants to Be Millionaire" -spil. Du kan forbedre det yderligere ved:
* Implementering af mere avanceret livline -logik.
* Tilføjelse af visuelle elementer og animationer.
* Inkorporering af mere komplekse spørgsmålsformater.
* Spar og indlæsning af spil fremskridt.