Arts >> Kulttuuri ja viihde >  >> Elokuvat & TV >> Reality TV

C -ohjelmointi pelille, joka haluaa olla miljonääri?

`` `C

#sisällytä

#Clude

#clude

#clude

// Määritä kysymysrakenne

typedef -rakenne {

char -kysymys [256];

char vastaus [256];

char -optio1 [256];

char optio2 [256];

char optio3 [256];

char option4 [256];

} Kysymys;

// Määritä pelivaltion rakenne

typedef -rakenne {

int virtaus;

int Moneywon;

int Lifeline käyttänyt [3]; // 0 käyttämättömälle, 1 käytetylle

Int Gamever;

} GELESTATE;

// Funktio ladata kysymyksiä tiedostosta

Kysymys* Latauskyselyt (const char* tiedostonimi, int* numerot) {

Tiedosto* fp =fopen (tiedostonimi, "r");

if (fp ==nolla) {

printf ("Virheen avaaminen kysymystiedosto! \ N");

paluu nolla;

}

// Lue kysymysten lukumäärä

fscanf (FP, "%d \ n", numerot);

// allokoida muistia kysymyksiin

Kysymys* Kysymykset =Malloc (* Numerot* Koko (kysymys));

if (kysymykset ==NULL) {

printf ("Virhe, joka jakaa muistia kysymyksiin! \ N");

fclose (FP);

paluu nolla;

}

// Lue kysymykset tiedostosta

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

fscanf (fp, "%[^\ n] \ n", kysymykset [i]. Kiriste);

fscanf (fp, "%[^\ n] \ n", kysymykset [i] .answer);

fscanf (fp, "%[^\ n] \ n", kysymykset [i] .Option1);

fscanf (fp, "%[^\ n] \ n", kysymykset [i] .Option2);

fscanf (fp, "%[^\ n] \ n", kysymykset [i] .Option3);

fscanf (fp, "%[^\ n] \ n", kysymykset [i] .Option4);

}

fclose (FP);

palauttaa kysymykset;

}

// Toiminto nykyisen kysymyksen näyttämiseksi

void displayQuestion (kysymyskysymys) {

printf ("\ n%s \ n \ n", kysymys.Question);

printf ("1. %s \ n", kysymys.Option1);

printf ("2. %s \ n", kysymys.Option2);

printf ("3. %s \ n", kysymys.Option3);

printf ("4. %s \ n", kysymys.Option4);

}

// toiminto pelaajan vastauksen käsittelemiseksi

int getSanswer (gamestate* peli) {

int vastaus;

printf ("\ vastauksesi (1-4):");

skannaus ("%d", ja vastaus);

// Vahvista vastaus

kun taas (vastaus <1 || vastaus> 4) {

printf ("Virheellinen vastaus! Anna numero välillä 1-4:");

skannaus ("%d", ja vastaus);

}

palautusvastaus;

}

// Toiminto tarkistaa, onko vastaus oikea

int chectanswer (kysymyskysymys, int vastaus) {

if (vastaus ==1 &&strcmp (kysymys.Option1, kysymys.Answer) ==0) {

palautus 1;

} else if (vastaus ==2 &&strcmp (kysymys.Option2, kysymys.Answer) ==0) {

palautus 1;

} else if (vastaus ==3 &&strcmp (kysymys.Option3, kysymys.Answer) ==0) {

palautus 1;

} else if (vastaus ==4 &&strcmp (kysymys.Option4, kysymys.Answer) ==0) {

palautus 1;

} else {

paluu 0;

}

}

// toiminto elinikäisten käsittelemiseksi

tyhjä Uselifeline (GELESTATE* peli) {

Int Choice;

printf ("\ nwhich Lifeline haluatko käyttää? \ n");

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

printf ("2. Kysy yleisöltä \ n");

printf ("3. puhelimitse ystävä \ n");

printf ("Kirjoita valintasi (1-3):");

Scanf ("%d", &valinta);

// Vahvista valinta

kun taas (valinta <1 || valinta> 3) {

printf ("Virheellinen valinta! Anna numero välillä 1 - 3:");

Scanf ("%d", &valinta);

}

// Tarkista, onko pelastuslinjaa jo käytetty

if (peli-> LifelinePusle [valinta - 1] ==1) {

printf ("Olet jo käyttänyt tätä pelastuslinjaa! \ n");

palata;

}

// Toteuta Lifeline -logiikka täältä (esim. Poista väärät vaihtoehdot, simuloi yleisön äänestystä jne.)

peli-> LifelinePusle [valinta - 1] =1;

printf ("Lifeline käytetty onnistuneesti! \ n");

}

// pelin pelaaminen

tyhjä peli (kysymys* kysymykset, int numerot) {

Gametate -peli;

peli.currentquestion =0;

peli.MoneyWon =0;

memset (game.lifelineused, 0, koko (game.lifelineused));

Game.GameOver =0;

while (! game.gameover) {

// Näytä nykyinen kysymys

DisplayQuestion (kysymykset [peli.currentquestion]);

// Käsittele elinten

printf ("\ ndo haluat käyttää pelastuslinjaa? (Y/N):");

Char LifeLineChoice;

Scanf (" %C", ja LifeLineChoice);

if (LifeLineChoice =='y') {

uselifeline (&peli);

}

// Hanki pelaajan vastaus

int vastaus =getAnswer (&peli);

// Tarkista, onko vastaus oikea

if (Checketwer (kysymykset [game.currentquestion], vastaus)) {

printf ("oikea! \ n");

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

peli.currentQuestion ++;

if (game.currentquestion ==numerot) {

peli.Gameover =1;

printf ("\ ncongratulations! Voitit $%d! \ n", Game.Moneywon);

tauko;

}

} else {

printf ("väärä! \ n");

peli.Gameover =1;

printf ("\ nyou voitti $%d. Parempi onni ensi kerralla! \ n", Game.Moneywon);

tauko;

}

}

}

int main () {

srand (aika (nolla));

int numerot;

Kysymys* Kysymykset =lataukset ("kysymykset.txt", ja numerot);

if (kysymykset ==NULL) {

palautus 1;

}

printf ("\ nwelcome, kuka haluaa olla miljonääri! \ n");

PlayGame (kysymykset, numerot);

ilmainen (kysymykset);

paluu 0;

}

`` `

Kuinka käyttää tätä koodia:

1. Luo kysymystiedosto: Luo tekstitiedosto nimeltä `kysymys.txt` ja noudata tätä muotoa:

`` `

10 // kysymysten lukumäärä

Mikä on Ranskan pääkaupunki? // kysymys

Pariisi // oikea vastaus

Berliini // Vaihtoehto 1

Lontoo // Vaihtoehto 2

Rooma // Vaihtoehto 3

Tokio // Vaihtoehto 4

... // Lisää lisää kysymyksiä samassa muodossa

`` `

2. Käännä ja suorita: Käännä koodi C -kääntäjällä (esim. GCC) ja suorita suoritettava.

Selitys:

* tietorakenteet:

* `Kysymys` -rakenne:Pitää kysymysteksti, vastaus ja monivalintavaihtoehdot.

* `GeleState` -rakenne:Seuraa nykyistä kysymystä, rahat voitti, elinikäiset ja pelin yli tilassa.

* toiminnot:

* `latausQuestions ()`:Lataa kysymyksiä tiedostosta.

* `DisplayQuestion ()`:Näyttää nykyisen kysymyksen ja vaihtoehdot.

* `getSanswer ()`:kehottaa pelaajaa vastausta ja vahvistaa syötteen.

* `checksanswer ()`:vertaa pelaajan vastausta oikeaan vastaukseen.

* `uselifeline ()`:Käsittelee Lifeline -valinnan ja toteutuksen (paikkamerkki todelliselle pelastuslogiikkaan).

* `PlayGame ()`:Hallitsee pääpelisilmukkaa, kysymyksiä, vastauksia ja elinten käsittelyä.

* pelilogiikka:

* PlayGame () `-toiminto toistaa kysymykset, kunnes pelaaja saavuttaa lopullisen kysymyksen tai vastaa väärin.

* Pelaaja voi käyttää LifeLinejä valitsemalla valikosta vaihtoehtoja.

* Peli seuraa pelaajan etenemistä ja rahat voitti.

Lifeelin toteuttamiseksi sinun on lisättävä seuraava `uselifeline ()` -toiminto:

* 50/50: Poista kaksi virheellistä vaihtoehtoa satunnaisesti.

* kysy yleisöltä: Luo satunnainen yleisö äänestää antaen oikealle vastaukselle suuremman mahdollisuuden voittaa.

* puhelimitse ystävä: Luo satunnainen "ystävän" vastaus, joka voi olla oikea tai väärä tietyllä todennäköisyydellä.

Tämä koodi tarjoaa perusrakenteen "kuka haluaa olla miljonääri" -pelille. Voit parantaa sitä edelleen:

* Edistyneemmän Lifeline -logiikan toteuttaminen.

* Visuaalisten elementtien ja animaatioiden lisääminen.

* Monimutkaisempien kysymysmuotojen sisällyttäminen.

* Pelien etenemisen säästäminen ja lataaminen.

Reality TV

Lähikategoriat