#include
#include
#include
#include
// Definujte strukturu otázek
typedef struct {
otázka char [256];
Odpověď char [256];
char option1 [256];
char option2 [256];
char option3 [256];
char option4 [256];
} Otázka;
// Definujte strukturu stavu hry
typedef struct {
int aktuální question;
int Moneywon;
Int Lifelinesed [3]; // 0 pro nevyužité, 1 pro použité
int Gameover;
} GameState;
// Funkce pro načtení otázek ze souboru
Otázka* LoadQuestions (const char* filename, int* numQuestions) {
Soubor* fp =fopen (název souboru, "r");
if (fp ==null) {
printf ("Soubor otázek chyb! \ n");
návrat null;
}
// Přečtěte si počet otázek
fscanf (fp, "%d \ n", numquestions);
// přidělit paměť na otázky
Otázka* otázky =malloc (* numQuestions* sizeof (otázka));
if (otázky ==null) {
printf ("Chyba přidělování paměti pro otázky! \ n");
fclose (FP);
návrat null;
}
// Přečtěte si otázky ze souboru
pro (int i =0; i <*numquestions; i ++) {
fscanf (fp, "%[^\ n] \ n", otázky [i] .Question);
fscanf (fp, "%[^\ n] \ n", otázky [i] .answer);
fscanf (fp, "%[^\ n] \ n", otázky [i] .option1);
fscanf (fp, "%[^\ n] \ n", otázky [i] .option2);
fscanf (fp, "%[^\ n] \ n", otázky [i] .option3);
fscanf (fp, "%[^\ n] \ n", otázky [i] .option4);
}
fclose (FP);
návratové otázky;
}
// funkce pro zobrazení aktuální otázky
void displayQuestion (otázka otázka) {
printf ("\ n%s \ n \ n", otázka.question);
printf ("1. %s \ n", otázka.option1);
printf ("2. %s \ n", otázka.option2);
printf ("3. %s \ n", otázka.option3);
printf ("4. %s \ n", otázka.option4);
}
// Funkce pro zpracování odpovědi hráče
int getAnswer (gamestate* hra) {
int odpověď;
printf ("\ nenter vaše odpověď (1-4):");
Scanf ("%d", &odpověď);
// Ověřte odpověď
while (odpověď <1 || odpověď> 4) {
printf ("Neplatná odpověď! Zadejte číslo mezi 1 a 4:");
Scanf ("%d", &odpověď);
}
vrátit odpověď;
}
// funkce pro kontrolu, zda je odpověď správná
int checkanswer (otázka otázka, int odpověď) {
if (odpověď ==1 &&strcmp (dotaz.option1, otázka.answer) ==0) {
návrat 1;
} else if (odpověď ==2 &&strcmp (otázka.option2, otázka.answer) ==0) {
návrat 1;
} else if (odpověď ==3 &&strcmp (otázka.option3, otázka.answer) ==0) {
návrat 1;
} else if (odpověď ==4 &&strcmp (otázka.option4, otázka.answer) ==0) {
návrat 1;
} else {
návrat 0;
}
}
// Funkce pro zpracování životních linií
void uselifeline (gamestate* hra) {
Int Choice;
printf ("\ nwhich Lifeline byste chtěli použít? \ n");
printf ("1. 50/50 \ n");
printf ("2. zeptejte se publika \ n");
printf ("3. Telefon přítele \ n");
printf ("Zadejte svůj výběr (1-3):");
Scanf ("%d", &výběr);
// Ověřte volbu
while (výběr <1 || výběr> 3) {
printf ("Neplatná volba! Zadejte číslo mezi 1 a 3:");
Scanf ("%d", &výběr);
}
// Zkontrolujte, zda je již použito záchranné lano
if (Game-> LifeLineused [Choice - 1] ==1) {
Printf („Už jste použili tento záchranné lano! \ n“);
návrat;
}
// Implementace logiky Lifeline zde (např. Odstraňte nesprávné možnosti, simulujte hlas publika atd.)
Hra-> LifeLineused [Choice - 1] =1;
printf ("Lifeline úspěšně použitý! \ n");
}
// funkce pro hraní hry
void playgame (otázka* otázky, int numQuestions) {
GameState Game;
Game.CurrentQuestion =0;
game.moneywon =0;
memset (Game.Lifelineused, 0, sizeof (Game.Lifelineused));
game.gameover =0;
while (! game.gameover) {
// Zobrazit aktuální otázku
displayQuestion (otázky [Game.CurrentQuestion]);
// Zvládněte životnost
printf ("\ ndo chcete použít záchranné lano? (y/n):");
Char Lifelinechoice;
Scanf (" %C", &LifeLinechoice);
if (lifelinechoice =='y') {
uselifeline (&hra);
}
// Získejte odpověď hráče
int odpověď =getAswer (&hra);
// Zkontrolujte, zda je odpověď správná
if (checkanswer (otázky [game.currentQuestion], odpověď)) {
printf ("správné! \ n");
Game.Moneywon + =1000 * (Game.CurrentQuestion + 1);
Game.CurrentQuestion ++;
if (Game.CurrentQuestion ==numQuestions) {
game.gameover =1;
printf ("\ ncongratulace! Vyhráli jste $%d! \ n", game.moneywon);
přerušení;
}
} else {
printf ("nesprávné! \ n");
game.gameover =1;
Printf ("\ nyou vyhrál $%d. Příště lepší štěstí! \ n", Game.moneywon);
přerušení;
}
}
}
int main () {
SRAND (čas (null));
int numquestions;
Otázka* Otázky =zatížení ("otázky.txt", &numQuestions);
if (otázky ==null) {
návrat 1;
}
printf ("\ nwelcome to kdo chce být milionářem! \ n");
PlayGame (otázky, numquestions);
zdarma (otázky);
návrat 0;
}
`` `
Jak používat tento kód:
1. Vytvořte soubor otázek: Vytvořte textový soubor s názvem `Question.txt` a postupujte podle tohoto formátu:
`` `
10 // Počet otázek
Co je hlavní město Francie? // Otázka
Paříž // Správná odpověď
Berlín // Možnost 1
Londýn // Možnost 2
Řím // Možnost 3
Tokio // Možnost 4
... // Přidejte další otázky ve stejném formátu
`` `
2. kompilace a spuštění: Zkompilujte kód pomocí kompilátoru C (např. GCC) a spusťte spustitelný soubor.
Vysvětlení:
* datové struktury:
* „OTÁZKA“ struktura:Udržuje text otázky, odpověď a možnosti výběru s více možnostmi.
* Struktura `GameState`:Sleduje aktuální otázku, vyhráno peníze, použité životní linie a hra nad stavem.
* Funkce:
* `LoadQuestions ()`:načte otázky ze souboru.
* `displayQuestion ()`:zobrazuje aktuální otázku a možnosti.
* `getAswer ()`:vyzývá hráče o odpověď a ověřuje vstup.
* `CheckansWer ()`:porovnává odpověď hráče se správnou odpovědí.
* `uselifeline ()`:zpracovává výběr a implementace životnosti (zástupné symbol pro skutečnou logiku Lifeline).
* `PlayGame ()`:spravuje hlavní herní smyčku, manipulaci s otázkami, odpovědi a životní linie.
* Game Logic:
* Funkce „PlayGame ()“ iteruje otázky, dokud hráč nedosáhne konečné otázky nebo nesprávně neodpovídá.
* Hráč může používat životní linie výběrem možností z nabídky.
* Hra sleduje pokrok hráče a vyhrál peníze.
Chcete -li implementovat životní linii, budete muset přidat následující do funkce `uselifeline ()`:
* 50/50: Náhodně odstraňte dvě nesprávné možnosti.
* Zeptejte se publika: Generujte hlasování náhodného publika a dávají správnou odpověď vyšší šanci na vítězství.
* Telefon příteli: Vytvořte náhodnou odpověď „přítele“, která by mohla být s určitou pravděpodobností správná nebo nesprávná.
Tento kód poskytuje základní strukturu pro hru „Kdo chce být milionářem“. Můžete to dále vylepšit:
* Implementace pokročilejší logiky Lifeline.
* Přidání vizuálních prvků a animací.
* Začlenění složitějších formátů otázek.
* Ukládání a načítání pokroku hry.