#include
#include
#include
#include
// definere spørsmålstrukturen
typedef struct {
Char -spørsmål [256];
char svar [256];
Char alternativ1 [256];
Char alternativ2 [256];
Char alternativ3 [256];
Char alternativ4 [256];
} Spørsmål;
// definere spillstatusstrukturen
typedef struct {
int Current Question;
int moneywon;
int livelineused [3]; // 0 for ubrukt, 1 for brukt
int gameover;
} Gamestate;
// Funksjon for å laste inn spørsmål fra en fil
Spørsmål* Lastesquestions (const char* filnavn, int* numquestions) {
Fil* fp =fopen (filnavn, "r");
if (fp ==null) {
printf ("feilåpningsspørsmålfil! \ n");
return null;
}
// Les antall spørsmål
fscanf (fp, "%d \ n", numquestions);
// Tildel minne for spørsmålene
Spørsmål* spørsmål =malloc (* numquestions* sizeof (spørsmål));
if (spørsmål ==null) {
printf ("Feil tildeling av minne for spørsmål! \ n");
fClose (FP);
return null;
}
// Les spørsmålene fra filen
for (int i =0; i <*numquestions; i ++) {
fscanf (fp, "%[^\ n] \ n", spørsmål [i]. Spørsmål);
fscanf (fp, "%[^\ n] \ n", spørsmål [i] .ansvar);
fscanf (fp, "%[^\ n] \ n", spørsmål [i]. Option1);
fscanf (fp, "%[^\ n] \ n", spørsmål [i]. Option2);
fscanf (fp, "%[^\ n] \ n", spørsmål [i]. Option3);
fscanf (fp, "%[^\ n] \ n", spørsmål [i]. Option4);
}
fClose (FP);
returnerer spørsmål;
}
// Funksjon for å vise det nåværende spørsmålet
ugyldig displayquestion (spørsmålsspørsmål) {
printf ("\ n%s \ n \ n", spørsmål. Spørsmål);
printf ("1. %s \ n", spørsmål.option1);
printf ("2. %s \ n", spørsmål.option2);
printf ("3. %s \ n", spørsmål.option3);
printf ("4. %s \ n", spørsmål. Option4);
}
// Funksjon for å håndtere spillerens svar
int getanswer (gamestate* game) {
int svar;
printf ("\ nenter svaret ditt (1-4):");
scanf ("%d", &svar);
// Valider svaret
mens (svar <1 || svar> 4) {
printf ("Ugyldig svar! Vennligst skriv inn et tall mellom 1 og 4:");
scanf ("%d", &svar);
}
return svar;
}
// Funksjon for å sjekke om svaret er riktig
int checkanswer (spørsmålsspørsmål, int svar) {
if (svar ==1 &&strcmp (spørsmål.option1, spørsmål.answer) ==0) {
retur 1;
} annet hvis (svar ==2 &&strcmp (spørsmål.option2, spørsmål.ansvar) ==0) {
retur 1;
} annet hvis (svar ==3 &&strcmp (spørsmål.option3, spørsmål.ansvar) ==0) {
retur 1;
} annet hvis (svar ==4 &&strcmp (spørsmål.option4, spørsmål.ansvar) ==0) {
retur 1;
} annet {
retur 0;
}
}
// Funksjon for å håndtere livslinjer
ugyldig uselifeline (gamestate* game) {
int valg;
printf ("\ nwhich Lifeline vil du bruke? \ n");
printf ("1. 50/50 \ n");
printf ("2. spør publikum \ n");
printf ("3. telefon en venn \ n");
printf ("Enter ditt valg (1-3):");
scanf ("%d", &valg);
// Valider valg
mens (valg <1 || valg> 3) {
printf ("Ugyldig valg! Vennligst skriv inn et tall mellom 1 og 3:");
scanf ("%d", &valg);
}
// sjekk om livline allerede er brukt
if (Game-> LifelineUsed [Choice - 1] ==1) {
printf ("Du har allerede brukt denne livline! \ n");
retur;
}
// Implementere livline -logikk her (f.eks. Fjern uriktige alternativer, simulere publikumsstemning osv.)
Game-> LifelineUsed [Choice - 1] =1;
printf ("livline brukt vellykket! \ n");
}
// funksjon for å spille spillet
void playgame (spørsmål* spørsmål, int numquestions) {
Gamestate Game;
game.currentquestion =0;
game.moneywon =0;
memset (game.lifelineused, 0, sizeof (game.lifelineused));
game.gameover =0;
mens (! game.gameover) {
// Vis gjeldende spørsmål
displayquestion (spørsmål [game.currentquestion]);
// Håndter livslinjer
printf ("\ ndo du vil bruke en livline? (y/n):");
Char Lifelinechoice;
SCANF (" %C", &LIFELINECHOICE);
if (Lifelinechoice =='y') {
uselifeline (&game);
}
// Få spillerens svar
int svar =getAnswer (&spill);
// sjekk om svaret er riktig
if (checkanswer (spørsmål [game.currentquestion], svar)) {
printf ("riktig! \ n");
Game.Moneywon + =1000 * (Game.CurrentQuestion + 1);
game.currentquestion ++;
if (game.currentquestion ==numquestions) {
game.gameover =1;
printf ("\ ncongratulations! Du vant $%d! \ n", game.moneywon);
brudd;
}
} annet {
printf ("feil! \ n");
game.gameover =1;
printf ("\ nyou vant $%d. BEDRE LUCK NESTE TID! \ N", Game.Moneywon);
brudd;
}
}
}
int main () {
Srand (tid (null));
int numquestions;
Spørsmål* spørsmål =belastningsquestions ("spørsmål.txt", &numquestions);
if (spørsmål ==null) {
retur 1;
}
printf ("\ nwelcome til hvem som vil være millionær! \ n");
Playgame (spørsmål, numquestions);
gratis (spørsmål);
retur 0;
}
`` `
Hvordan bruke denne koden:
1. Opprett en spørsmålsfil: Lag en tekstfil som heter `spørsmål.txt` og følg dette formatet:
`` `
10 // Antall spørsmål
Hva er hovedstaden i Frankrike? // Spørsmål
Paris // Riktig svar
Berlin // Alternativ 1
London // Alternativ 2
Roma // Alternativ 3
Tokyo // Alternativ 4
... // Legg til flere spørsmål i samme format
`` `
2. kompilere og løpe: Sett sammen koden ved hjelp av en C -kompilator (f.eks. GCC) og kjør den kjørbare.
Forklaring:
* Datastrukturer:
* `SPØRSMÅL` Struktur:Holder spørsmålsteksten, svaret og flervalgsalternativene.
* `Gamestate` Struktur:Sporer det nåværende spørsmålet, pengene vunnet, livslinjer brukt og spill over status.
* Funksjoner:
* `Loadquestions ()`:Laster inn spørsmål fra en fil.
* `Displayquestion ()`:Viser det nåværende spørsmålet og alternativene.
* `getAnswer ()`:ber spilleren om et svar og validerer inndata.
* `Checkanswer ()`:Sammenligner spillerens svar med riktig svar.
* `uselifeline ()`:håndterer livslinjeutvalg og implementering (stedholder for faktisk livslinje logikk).
* `Playgame ()`:Administrerer hovedspillsløyfen, håndtering av spørsmål, svar og livslinjer.
* spilllogikk:
* 'PlayGame () ` -funksjonen itererer gjennom spørsmål til spilleren når det endelige spørsmålet eller svarer feil.
* Spilleren kan bruke livslinjer ved å velge alternativer fra en meny.
* Spillet holder oversikt over spillerens fremgang og penger vunnet.
For å implementere livslinjene, må du legge til følgende i `uselifeline ()` funksjon:
* 50/50: Fjern to uriktige alternativer tilfeldig.
* Spør publikum: Generer tilfeldige publikumsstemmer, og gir riktig svar en større sjanse for å vinne.
* telefon en venn: Generer en tilfeldig "venns" svar, som kan være riktig eller feil med en viss sannsynlighet.
Denne koden gir en grunnleggende struktur for et "Who Wants To Be A Millionaire" -spill. Du kan forbedre det videre ved:
* Implementering av mer avansert livline -logikk.
* Legge til visuelle elementer og animasjoner.
* Inkludere mer komplekse spørsmålsformater.
* Lagre og lasting av fremgangen.