#include
#include
#include
#include
// Definirajte strukturu pitanja
typedef struct {
char pitanje [256];
char odgovor [256];
char opcija1 [256];
char opcija2 [256];
char opcija3 [256];
char opcija4 [256];
} Pitanje;
// Definirajte strukturu države igre
typedef struct {
int struja;
int Moneywon;
Int Lifelineused [3]; // 0 za neiskorišteno, 1 za rabljeni
Int Gameover;
} GameState;
// Funkcija za učitavanje pitanja iz datoteke
Pitanje* loadQuestions (const char* fileName, int* numquestions) {
Datoteka* fp =fopen (naziv datoteke, "r");
if (fp ==null) {
printf ("datoteka pitanja o otvaranju pogreške! \ n");
povratak null;
}
// Pročitajte broj pitanja
fscanf (fp, "%d \ n", numquestions);
// Dodijelite memoriju za pitanja
Pitanje* pitanja =malloc (* numquestions* sizeof (pitanje));
if (pitanja ==null) {
printf ("Pogreška raspoređivanje memorije za pitanja! \ n");
fclose (fp);
povratak null;
}
// Pročitajte pitanja iz datoteke
za (int i =0; i <*numquestions; i ++) {
fscanf (fp, "%[^\ n] \ n", pitanja [i] .Kistion);
fscanf (fp, "%[^\ n] \ n", pitanja [i] .Aswer);
fscanf (fp, "%[^\ n] \ n", pitanja [i] .option1);
fscanf (fp, "%[^\ n] \ n", pitanja [i] .option2);
fscanf (fp, "%[^\ n] \ n", pitanja [i] .option3);
fscanf (fp, "%[^\ n] \ n", pitanja [i] .option4);
}
fclose (fp);
Povratak pitanja;
}
// Funkcija za prikaz trenutnog pitanja
void displayquestion (pitanje pitanje) {
printf ("\ n%s \ n \ n", pitanje.question);
printf ("1. %s \ n", pitanje.Option1);
printf ("2. %s \ n", pitanje.Option2);
printf ("3. %s \ n", pitanje.Option3);
printf ("4. %s \ n", pitanje.Option4);
}
// Funkcija za obradu odgovora igrača
int getanswer (GameState* igra) {
int odgovor;
printf ("\neter vaš odgovor (1-4):");
Scanf ("%d", i odgovor);
// potvrditi odgovor
dok (odgovor <1 || odgovor> 4) {
printf ("Nevažeći odgovor! Unesite broj između 1 i 4:");
Scanf ("%d", i odgovor);
}
povratak odgovora;
}
// Funkcija za provjeru je li odgovor točan
int checkanswer (pitanje pitanje, int odgovor) {
if (odgovor ==1 &&strcmp (pitanje.option1, pitanje.answer) ==0) {
povratak 1;
} else if (odgovor ==2 &&strcmp (pitanje.option2, pitanje.answer) ==0) {
povratak 1;
} else if (odgovor ==3 &&strcmp (pitanje.option3, pitanje.answer) ==0) {
povratak 1;
} else if (odgovor ==4 &&strcmp (pitanje.option4, pitanje.answer) ==0) {
povratak 1;
} else {
povratak 0;
}
}
// Funkcija za rukovanje životnim linijama
void uselifeline (gameState* igra) {
Int izbor;
printf ("\ nWHHICH Lifeline biste željeli koristiti? \ n");
printf ("1. 50/50 \ n");
printf ("2. pitajte publiku \ n");
printf ("3.
printf ("Unesite svoj izbor (1-3):");
Scanf ("%d", &izbor);
// potvrditi izbor
dok je (izbor <1 || izbor> 3) {
printf ("Nevažeći izbor! Molimo unesite broj između 1 i 3:");
Scanf ("%d", &izbor);
}
// Provjerite je li Lifeline već korištena
if (igra-> lifelineused [izbor - 1] ==1) {
printf ("Već ste koristili ovu životnu liniju! \ n");
povratak;
}
// Ovdje implementirajte logiku Lifeline (npr. Uklonite pogrešne opcije, simulirajte glasovanje publike itd.)
Game-> Lifelineused [Choice - 1] =1;
printf ("Lifeline se uspješno koristi! \ n");
}
// Funkcija za igranje igre
void playgame (pitanje* pitanja, int numquestions) {
Gamestate igra;
igra.CurrentQuestion =0;
igra.moneywon =0;
memset (game.lifelineused, 0, sizeof (game.lifelineused));
igra.Gameover =0;
dok (! igra.gameover) {
// Prikažite trenutno pitanje
DisplayQuestion (pitanja [Game.CurrentQuestion]);
// Rukovanje životnim linijama
printf ("\ ndo želite koristiti lifeline? (y/n):");
Char LifelineChoice;
Scanf (" %C", &LifelineChoice);
if (lifelineChoice =='y') {
Uselifeline (&igra);
}
// Nabavite odgovor igrača
int odgovor =getanswer (&igra);
// Provjerite je li odgovor točan
if (checkanswer (pitanja [game.currentQuestion], odgovor)) {
printf ("ispravno! \ n");
Game.moneywon + =1000 * (Game.CurrentQuestion + 1);
igra.CurrentQuestion ++;
if (igra.CurrentQuestion ==numquestions) {
igra.Gameover =1;
printf ("\ ncongRatulacije! Pobijedili ste $%d! \ n", Game.Moneywon);
prekid;
}
} else {
printf ("netočno! \ n");
igra.Gameover =1;
printf ("\ nyou je osvojio $%d. bolje sreće sljedeći put! \ n", game.moneywon);
prekid;
}
}
}
int main () {
srand (vrijeme (null));
int numQuestions;
Pitanje* pitanja =loadQuestions ("pitanja.txt", &numquestions);
if (pitanja ==null) {
povratak 1;
}
printf ("\ nWELCOME za tko želi biti milijunaš! \ n");
playgame (pitanja, numquestions);
besplatno (pitanja);
povratak 0;
}
`` `` ``
Kako koristiti ovaj kôd:
1. Stvorite datoteku pitanja: Stvorite tekstualnu datoteku pod nazivom `tempos.txt` i slijedite ovaj format:
`` `` ``
10 // Broj pitanja
Koji je glavni grad Francuske? // pitanje
Pariz // točan odgovor
Berlin // Opcija 1
London // Opcija 2
Rim // Opcija 3
Tokio // Opcija 4
... // Dodajte još pitanja u istom formatu
`` `` ``
2. Sastavljanje i pokretanje: Sastavite kôd pomoću C prevodila (npr. GCC) i pokrenite izvršnu datoteku.
Objašnjenje:
* Strukture podataka:
* `Pitanje` Struktura:drži tekst pitanja, odgovor i opcije s više izbora.
* `GameState` Struktura:Prati trenutno pitanje, osvojeni novac, korištene životne linije i igra preko statusa.
* Funkcije:
* `LoadQuestions ()`:Učitava pitanja iz datoteke.
* `DisplayQuestion ()`:Prikazuje trenutno pitanje i opcije.
* `getanswer ()`:traži igrača za odgovor i potvrđuje unos.
* `CheckAnswer ()`:Uspoređuje odgovor igrača s točnim odgovorom.
* `UselifeLine ()`:obrađuje odabir i implementacija Lifeline (priručnik za stvarnu logiku Lifeline).
* `PlayGame ()`:Upravlja glavnom petljom igre, rukovanje pitanjima, odgovorima i životnim linijama.
* logika igre:
* Funkcija `playgame ()` ponavlja kroz pitanja sve dok igrač ne dođe do konačnog pitanja ili ne odgovori pogrešno.
* Igrač može koristiti Lifeline odabirom opcija iz izbornika.
* Igra prati napredak igrača i pobjedu novca.
Da biste implementirali životne linije, morat ćete dodati sljedeće u `uselifeline ()` funkcija:
* 50/50: Uklonite dvije pogrešne opcije nasumično.
* Pitajte publiku: Generirajte glasove nasumične publike, dajući točan odgovor veću šansu za pobjedu.
* Telefon Prijatelj: Stvorite slučajni odgovor "prijatelja", koji bi mogao biti točan ili netočan s određenom vjerojatnošću.
Ovaj kôd pruža osnovnu strukturu za igru "tko želi biti milijunaš". Možete ga dalje poboljšati prema:
* Primjena napredne logike Lifeline.
* Dodavanje vizualnih elemenata i animacija.
* Uključujući složenije formate pitanja.
* Ušteda i učitavanje napretka igre.