#include
#include
#include
#include
// Definiera frågestrukturen
typedef struct {
Karfråga [256];
char svar [256];
char option1 [256];
char option2 [256];
char option3 [256];
char option4 [256];
} Fråga;
// Definiera spelstillståndsstrukturen
typedef struct {
int nuvarande fråga;
int Moneywon;
int LifelineUseUseD [3]; // 0 för oanvänd, 1 för begagnad
int gameover;
} GameState;
// Funktion för att ladda frågor från en fil
Fråga* Loadquestions (const char* filnamn, int* numquestions) {
Fil* fp =fopen (filnamn, "r");
if (fp ==null) {
printf ("Felöppningsfrågefil! \ n");
returnera null;
}
// Läs antalet frågor
fscanf (fp, "%d \ n", numquestions);
// Tilldela minne för frågorna
Fråga* Frågor =Malloc (* numquestions* sizeof (fråga));
if (frågor ==null) {
printf ("Error tilldelning av minne för frågor! \ n");
fclose (fp);
returnera null;
}
// Läs frågorna från filen
för (int i =0; i <*numquestions; i ++) {
fscanf (fp, "%[^\ n] \ n", frågor [i]. Fråga);
fscanf (fp, "%[^\ n] \ n", frågor [i] .answer);
fscanf (fp, "%[^\ n] \ n", frågor [i] .option1);
fscanf (fp, "%[^\ n] \ n", frågor [i] .option2);
fscanf (fp, "%[^\ n] \ n", frågor [i] .option3);
fscanf (fp, "%[^\ n] \ n", frågor [i] .option4);
}
fclose (fp);
returnera frågor;
}
// Funktion för att visa den aktuella frågan
void displayquestion (fråga fråga) {
printf ("\ n%s \ n \ n", fråga.question);
printf ("1. %s \ n", fråga.option1);
printf ("2. %s \ n", fråga.option2);
printf ("3. %s \ n", fråga.option3);
printf ("4. %s \ n", fråga.option4);
}
// Funktion för att hantera spelarens svar
int getanswer (gameState* spel) {
int svar;
printf ("\ nEnter ditt svar (1-4):");
scanf ("%d", &svar);
// validera svaret
medan (svar <1 || svar> 4) {
printf ("Ogiltigt svar! Vänligen ange ett nummer mellan 1 och 4:");
scanf ("%d", &svar);
}
returnera svar;
}
// funktion för att kontrollera om svaret är korrekt
int checkanswer (fråga fråga, int svar) {
if (svar ==1 &&strcmp (fråga.option1, fråga.answer) ==0) {
return 1;
} annars if (svar ==2 &&strcmp (fråga.option2, fråga.answer) ==0) {
return 1;
} annars om (svar ==3 &&strcmp (fråga.option3, fråga.answer) ==0) {
return 1;
} annars if (svar ==4 &&STRCMP (fråga.option4, fråga.answer) ==0) {
return 1;
} annat {
return 0;
}
}
// Funktion för att hantera livslinjer
void useLifeline (gameState* Game) {
int val;
printf ("\ nwhich livlinje vill du använda? \ n");
printf ("1. 50/50 \ n");
printf ("2. Fråga publiken \ n");
printf ("3. telefon en vän \ n");
printf ("Ange ditt val (1-3):");
scanf ("%d" och val);
// validera val
medan (val <1 || val> 3) {
printf ("Ogiltigt val! Ange ett nummer mellan 1 och 3:");
scanf ("%d" och val);
}
// Kontrollera om livlinjen redan används
if (Game-> LifelineUseUse [Choice - 1] ==1) {
printf ("Du har redan använt den här livlinjen! \ n");
återvända;
}
// Implementera Lifeline Logic här (t.ex. ta bort felaktiga alternativ, simulera publikens omröstning, etc.)
Game-> LifelineUseUse [Choice - 1] =1;
printf ("Lifeline används framgångsrikt! \ n");
}
// Funktion för att spela spelet
void playmame (fråga* frågor, int numquestions) {
GameState Game;
Game.CurrentQuestion =0;
Game.MoneyWon =0;
Memset (Game.LifelineUsed, 0, SizeOf (Game.LifelineUseUseD));
game.gameover =0;
medan (! game.gameover) {
// Visa aktuell fråga
DisplayQuestion (frågor [Game.Currentquestion]);
// Hantera livslinjer
printf ("\ ndo vill du använda en livlinje? (Y/n):");
Char LifelineChoice;
scanf (" %c", &livslinchoice);
if (LifeLineChoice =='y') {
Uselifeline (&spel);
}
// Få spelarens svar
int svar =getanswer (&spel);
// Kontrollera om svaret är korrekt
if (checkanswer (frågor [Game.CurrentQuestion], svar)) {
printf ("korrekt! \ n");
Game.MoneyWon + =1000 * (Game.CurrentQuestion + 1);
Game.CurrentQuestion ++;
if (game.currentquestion ==numquestions) {
game.gameover =1;
printf ("\ ncongratulations! du vann $%d! \ n", game.moneywon);
bryta;
}
} annat {
printf ("felaktigt! \ n");
game.gameover =1;
printf ("\ nyou vann $%d. Bättre tur nästa gång! \ n", game.moneywon);
bryta;
}
}
}
int main () {
srand (tid (null));
int numrquestions;
Fråga* Frågor =LoadQuestions ("Frågor.txt", &numquestions);
if (frågor ==null) {
return 1;
}
printf ("\ nwelcome till vem vill bli miljonär! \ n");
playgame (frågor, numquestions);
gratis (frågor);
return 0;
}
`` `
Hur man använder den här koden:
1. Skapa en frågefil: Skapa en textfil som heter `` quours.txt` och följ detta format:
`` `
10 // Antal frågor
Vad är huvudstaden i Frankrike? // Fråga
Paris // Rätt svar
Berlin // Alternativ 1
London // alternativ 2
Rom // Alternativ 3
Tokyo // Alternativ 4
... // Lägg till fler frågor i samma format
`` `
2. kompilera och kör: Kompilera koden med en C -kompilator (t.ex. GCC) och kör den körbara.
Förklaring:
* datastrukturer:
* `Fråga 'Struktur:har frågeställningar, svar och flervalsalternativ.
* `GameState 'struktur:spårar den aktuella frågan, pengar som vann, livslinjer som används och spel över status.
* Funktioner:
* `Loadquestions ()`:laddar frågor från en fil.
* `DisplayQuestion ()`:Visar den aktuella frågan och alternativen.
* `getanswer ()`:ber spelaren för ett svar och validerar input.
* `checkanswer ()`:jämför spelarens svar med rätt svar.
* `Uselifeline ()`:Hanterar val av livslinjelinje (platshållare för faktisk livlinjelogik).
* `Playstame ()`:Hanterar huvudspelslingan, hantering av frågor, svar och livslinjer.
* Spellogik:
* Funktionen `PlayGame ()` iterates genom frågor tills spelaren når den sista frågan eller svarar felaktigt.
* Spelaren kan använda livslinjer genom att välja alternativ från en meny.
* Spelet håller reda på spelarens framsteg och pengar vann.
För att implementera livslinjerna måste du lägga till följande i funktionen `uselifeline ()`:
* 50/50: Ta bort två felaktiga alternativ slumpmässigt.
* fråga publiken: Generera slumpmässiga publikröster, vilket ger rätt svar en högre chans att vinna.
* Telefon en vän: Generera ett slumpmässigt "väns" svar, som kan vara korrekt eller felaktigt med en viss sannolikhet.
Den här koden ger en grundstruktur för en "som vill bli miljonär" -spel. Du kan förbättra det ytterligare genom:
* Implementering av mer avancerad livlinjelogik.
* Lägga till visuella element och animationer.
* Inkorporera mer komplexa frågeformat.
* Spara och ladda spelets framsteg.