Arts >> Kunst >  >> Film & TV >> Reality -TV

C Programmering til spillet, hvem vil være millionær?

`` c

#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.

Reality -TV

Relaterede kategorier