Arts >> Művészet és szórakozás >  >> Filmek és TV >> Reality TV

C A játék programozása, aki milliomos akar lenni?

`` `c

#include

#include

#include

#include

// Határozza meg a kérdés szerkezetét

typedef struct {

char kérdés [256];

char válasz [256];

Char 1. opció [256];

CHAR opció2 [256];

CHAR opció3 [256];

CHAR opció4 [256];

} Kérdés;

// Határozza meg a játék állapotának felépítését

typedef struct {

int currentquestion;

Int Moneywon;

int lifelineused [3]; // 0 fel nem használt, 1 használt

int játék;

} GameState;

// Funkció a kérdések feltöltéséhez egy fájlból

Kérdés* Load Questions (const char* fájlnév, int* numquestions) {

Fájl* fp =fopen (fájlnév, "r");

if (fp ==null) {

printf ("Hiba megnyitási fájl megnyitása! \ n");

visszatérés nulla;

}

// Olvassa el a kérdések számát

fscanf (fp, "%d \ n", számok);

// Memória elosztása a kérdésekhez

Kérdés* KÉRDÉSEK =MALLOC (* Numquestions* sizeOF (kérdés));

if (kérdések ==null) {

printf ("Hiba a memória felosztása a kérdésekhez! \ n");

fclose (fp);

visszatérés nulla;

}

// Olvassa el a kérdéseket a fájlból

for (int i =0; i <*numquestions; i ++) {

fscanf (fp, "%[^\ n] \ n", kérdések [i]. kérdés);

fscanf (fp, "%[^\ n] \ n", kérdések [i] .answer);

fscanf (fp, "%[^\ n] \ n", kérdések [i] .option1);

fscanf (fp, "%[^\ n] \ n", kérdések [i] .option2);

fscanf (fp, "%[^\ n] \ n", kérdések [i] .option3);

fscanf (fp, "%[^\ n] \ n", kérdések [i] .option4);

}

fclose (fp);

visszatérő kérdések;

}

// funkció az aktuális kérdés megjelenítéséhez

érvénytelen kijelzőkérdés (kérdés kérdés) {

printf ("\ n%s \ n \ n", kérdés.question);

printf ("1. %s \ n", kérdés.option1);

printf ("2. %s \ n", kérdés.option2);

printf ("3. %s \ n", kérdés.option3);

printf ("4. %s \ n", kérdés.option4);

}

// funkció a játékos válaszának kezelésére

int getanswer (gameState* játék) {

int válasz;

printf ("\ nenter a válaszod (1-4):");

scanf ("%d", és válasz);

// A válasz érvényesítése

míg (válasz <1 || válasz> 4) {

printf ("Érvénytelen válasz! Kérjük, írjon be egy számot 1 és 4 között:");

scanf ("%d", és válasz);

}

visszatérő válasz;

}

// funkció annak ellenőrzésére, hogy a válasz helyes -e

int checkanswer (kérdés, kérdés, int válasz) {

if (válasz ==1 &&strcmp (kérdés.option1, kérdés.answer) ==0) {

visszatérés 1;

} egyébként, ha (válasz ==2 &&strcmp (kérdés.option2, kérdés.answer) ==0) {

visszatérés 1;

} egyébként, ha (válasz ==3 &&strcmp (kérdés.option3, kérdés.answer) ==0) {

visszatérés 1;

} egyébként, ha (válasz ==4 &&strcmp (kérdés.option4, kérdés.answer) ==0) {

visszatérés 1;

} else {

visszatérés 0;

}

}

// Funkció az élethosszúságok kezelésére

void uselifeline (GameState* játék) {

int választás;

printf ("\ nwhch Lifeline -t szeretne használni? \ n");

printf ("1. 50/50 \ n");

printf ("2. Kérdezd meg a közönséget \ n");

printf ("3. Telefon egy barátot \ n");

printf ("Írja be a választását (1-3):");

scanf ("%d", és választás);

// A választás érvényesítése

míg (választás <1 || választás> 3) {

printf ("Érvénytelen választás! Kérjük, írjon be egy számot 1 és 3 között:");

scanf ("%d", és választás);

}

// Ellenőrizze, hogy a mentőkötél már használja -e

if (Game-> LiefineSused [Choice - 1] ==1) {

printf ("Már használta ezt a mentőkötél! \ n");

visszatérés;

}

// A Lifeline logika megvalósítása itt (például távolítsa el a helytelen lehetőségeket, szimulálja a közönség szavazását stb.)

Game-> LifelineLise [Choice - 1] =1;

printf ("A mentőkép sikeresen használható! \ n");

}

// a játék lejátszásához funkció

void playgame (kérdés* kérdések, int numquestions) {

GameState játék;

Game.CurrentQuestion =0;

Game.MoneyWon =0;

memset (Game.lifelineUsuse, 0, sizeOF (Game.lifelineUsUsed));

Game.GameOver =0;

míg (! Game.GameOver) {

// Jelenítse meg az aktuális kérdést

displayQuestion (kérdések [Game.CurrentQuestion]);

// Kezelje az élettartamokat

printf ("\ ndo Használni akarsz egy mentőt? (Y/N):");

char lifeLinechoice;

scanf (" %c", &lifeLinechoice);

if (lifeLineChoice =='y') {

Uselifeline (&Game);

}

// kapja meg a játékos válaszát

int válasz =getanswer (&játék);

// Ellenőrizze, hogy a válasz helyes -e

if (checkanswer (kérdések [játék.currentQuestion], válasz)) {

printf ("helyes! \ n");

Game.MoneyWon + =1000 * (Game.CurrentQuestion + 1);

Game.CurrentQuestion ++;

if (Game.CurrentQuestion ==Numquestions) {

Game.GameOver =1;

printf ("\ ncongratulations! $%d! \ n", játék.Moneywon);

szünet;

}

} else {

printf ("helytelen! \ n");

Game.GameOver =1;

printf ("\ nyou $%d -t nyert. Better szerencse legközelebb! \ n", Game.Moneywon);

szünet;

}

}

}

int main () {

srand (idő (null));

int számok;

Kérdés* KÉRDÉSEK =LoadQuestions ("CORMS.TXT", &NumQuestions);

if (kérdések ==null) {

visszatérés 1;

}

printf ("\ nwelcome, hogy ki akar milliomos lenni! \ n");

Playgame (kérdések, számok);

ingyenes (kérdések);

visszatérés 0;

}

`` `

Hogyan használjuk ezt a kódot:

1. Hozzon létre egy kérdésfájlt: Hozzon létre egy `coles.txt" nevű szöveges fájlt, és kövesse ezt a formátumot:

`` `

10 // kérdések száma

Mi a francia fővárosa? // kérdés

Párizs // Helyes válasz

Berlin // 1. lehetőség

London // 2. lehetőség

Róma // 3. lehetőség

Tokió // 4. lehetőség

... // További kérdések adjon hozzá ugyanabban a formátumban

`` `

2. Helyezze a kódot C fordítóval (például GCC), és futtassa a futtatható fájlt.

Magyarázat:

* Adatszerkezetek:

* `Kérdés` struktúra:A kérdés szöveget, a választ és a feleletválasztós lehetőségeket tartja.

* `GameState` struktúrája:nyomon követi a jelenlegi kérdést, a nyert pénzt, a használt élethosszúságot és a játékot.

* Funkciók:

* `loadQuestions ()`:kérdéseket tölt be egy fájlból.

* `displayQuestion ()`:Megjeleníti az aktuális kérdést és lehetőségeket.

* `getanswer ()`:Felkéri a lejátszót a válaszra, és validálja a bemenetet.

* `checkanswer ()`:Összehasonlítja a játékos válaszát a helyes válaszral.

* `uselifeline ()`:kezeli a mentőkép kiválasztását és megvalósítását (helyőrző a tényleges Lifeline logika számára).

* `PlayGame ()`:kezeli a fő játékhurokot, a kérdéseket, a válaszokat és az életciklusokat.

* Játék logika:

* A „Playgame ()” funkció a kérdéseken keresztül iterál, amíg a játékos el nem éri a végső kérdést vagy a válaszokat helytelenül.

* A lejátszó használhatja a LifeLines -t, ha a menüből lehetőségeket választ.

* A játék nyomon követi a játékos előrehaladását és a nyert pénzét.

Az élethosszig tartó élethosszig tartó megvalósításhoz a következőket kell hozzáadnia a 'uselifeline () `függvényhez:

* 50/50: Távolítsa el a két helytelen lehetőséget véletlenszerűen.

* Kérdezze meg a közönséget: Generáljon véletlenszerű közönség szavazatokat, így a helyes válasz nagyobb esélyt ad a győzelemre.

* telefon egy barátja: Készítsen véletlenszerű "barát" választ, amely bizonyos valószínűséggel lehet helyes vagy helytelen.

Ez a kód alapvető struktúrát biztosít a "aki milliomos akar lenni" játéknak. Tovább javíthatja:

* A fejlettebb Lifeline logika megvalósítása.

* Vizuális elemek és animációk hozzáadása.

* A bonyolultabb kérdésformátumok beépítése.

* A játék előrehaladásának megtakarítása és betöltése.

Reality TV

Kapcsolódó kategóriák