Arts >> Sanat ve Eğlence >  >> Filmler ve TV >> Reality TV

C Milyoner olmak isteyen oyun için programlama?

`` C

#include

#include

#include

#include

// Soru yapısını tanımlayın

typedef struct {

karakter sorusu [256];

karakter cevap [256];

Char Option1 [256];

Char Option2 [256];

Char Option3 [256];

Char Option4 [256];

} Soru;

// Oyun durumu yapısını tanımlayın

typedef struct {

int currentQuestion;

Int Moneywon;

int LifLineSited [3]; // kullanılmayan için 0, 1 kullanılmış için

int gameover;

} Gamestate;

// Bir dosyadan soru yükleme işlevi

Soru* LoadQuestions (const char* dosya adı, int* numQuestions) {

Dosya* fp =fopen (dosya adı, "r");

if (fp ==null) {

printf ("Hata açma soru dosyası! \ n");

NULL DÖN;

}

// soru sayısını okuyun

fscanf (fp, "%d \ n", numQuestions);

// Sorular için bellek tahsisi

Soru* Sorular =MALLOC (* NumQuestions* sizeof (soru));

if (sorgular ==null) {

printf ("Sorular için bellek tahsis etme hatası! \ n");

fclose (FP);

NULL DÖN;

}

// Dosyadaki soruları okuyun

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

fscanf (fp, "%[^\ n] \ n", sorular [i] .Question);

fscanf (fp, "%[^\ n] \ n", sorular [i] .Sanswer);

fscanf (fp, "%[^\ n] \ n", sorular [i] .option1);

fscanf (fp, "%[^\ n] \ n", sorular [i] .option2);

fscanf (fp, "%[^\ n] \ n", sorular [i] .option3);

fscanf (fp, "%[^\ n] \ n", sorular [i] .option4);

}

fclose (FP);

İade soruları;

}

// Mevcut soruyu görüntüleme işlevi

Void DisplayQuestion (soru sorusu) {

printf ("\ n%s \ n \ n", soru. Soru);

printf (" %1. %s \ n", soru.option1);

printf ("2. %s \ n", soru.option2);

printf (" %3. %s \ n", soru.option3);

printf (" %4. %s \ n", soru.option4);

}

// Oyuncunun cevabını ele alma işlevi

int getAnswer (gamestate* game) {

int cevap;

printf ("\ nenter cevabınızı (1-4):");

Scanf ("%d" &cevap);

// cevabı doğrulayın

while (cevap <1 || Cevap> 4) {

printf ("Geçersiz cevap! Lütfen 1 ile 4 arasında bir sayı girin:");

Scanf ("%d" &cevap);

}

dönüş cevabı;

}

// Cevabın doğru olup olmadığını kontrol etme işlevi

int checkanswer (soru sorusu, int cevap) {

if (cevap ==1 &&strcmp (soru.option1, soru.aanswer) ==0) {

dönüş 1;

} else if (cevap ==2 &&strcmp (soru.option2, soru.aanswer) ==0) {

dönüş 1;

} else if (cevap ==3 &&strcmp (soru.option3, soru.answer) ==0) {

dönüş 1;

} else if (cevap ==4 &&strcmp (soru.option4, soru.aanswer) ==0) {

dönüş 1;

} başka {

dönüş 0;

}

}

// Yaşam çizgilerini işleme işlevi

void useLifeline (gamestate* game) {

int Choice;

printf ("\ nwhch Lifeline? \ n" kullanmak ister misiniz?);

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

printf ("2.. İzleyiciye sor \ n");

printf ("3. A Friend \ n'ye telefon edin");

printf ("Seçiminizi girin (1-3):");

Scanf ("%d" ve seçim);

// Seçimi doğrulayın

while (Seçim <1 || Seçim> 3) {

printf ("Geçersiz seçim! Lütfen 1 ile 3 arasında bir sayı girin:");

Scanf ("%d" ve seçim);

}

// Yaşam çizgisinin zaten kullanılıp kullanılmadığını kontrol edin

if (game-> lifelineSed [seçim - 1] ==1) {

printf ("Bu yaşam çizgisini zaten kullandınız! \ n");

geri dönmek;

}

// Yaşam Hattı mantığını buraya uygulayın (örneğin, yanlış seçenekleri kaldırın, kitle oylamasını simüle et, vb.)

Game-> LifLineSited [Seçim - 1] =1;

printf ("Lifeline başarıyla kullanıldı! \ n");

}

// oyunu oynatma işlevi

void playgame (soru* soruları, int numQuestions) {

Gamestate oyunu;

game.currentQuestion =0;

game.moneywon =0;

MemSet (Game.Lifelineed, 0, sizeof (Game.LifelineSed));

game.gameover =0;

while (! game.gameover) {

// Mevcut soruyu görüntüleyin

DisplayQuestion (Sorular [Game.CurrentQuestion]);

// Lifelines'ı kullanın

printf ("\ ndo bir yaşam çizgisi kullanmak mı istiyorsunuz? (y/n):");

Char Lifelinechoice;

Scanf (" %C" ve LifeliLeChoice);

if (lifelinechoice =='y') {

Uselifeline (&Game);

}

// Oyuncunun Cevabını Alın

int cevap =getAnswer (&game);

// Cevabın doğru olup olmadığını kontrol edin

if (checkanswer (sorular [game.currentQuestion], cevap)) {

printf ("doğru! \ n");

game.moneywon + =1000 * (oyun.CurrentQuestion + 1);

Game.CurrentQuestion ++;

if (game.currentQuestion ==numQuestions) {

game.gameover =1;

printf ("\ ncongRatulations!%D! \ n" kazandınız, game.moneywon);

kırmak;

}

} başka {

printf ("yanlış! \ n");

game.gameover =1;

printf ("\ nyou%d. Bir dahaki sefere daha iyi şanslar! \ n", game.moneywon);

kırmak;

}

}

}

int main () {

Srand (zaman (null));

Int NumQuestions;

Soru* Sorular =LoadQuestions ("Sorular.txt", &numQuestions);

if (sorgular ==null) {

dönüş 1;

}

printf ("\ nwelcome kim milyoner olmak istiyor! \ n");

PlayGame (Sorular, NumQuestions);

ücretsiz (sorular);

dönüş 0;

}

``

Bu kod nasıl kullanılır:

1. Bir soru dosyası oluşturun: `` Sorgular.txt '' adlı bir metin dosyası oluşturun ve bu biçimi izleyin:

``

10 // soru sayısı

Fransa'nın başkenti nedir? // Soru

Paris // Doğru cevap

Berlin // Seçenek 1

Londra // Seçenek 2

Roma // Seçenek 3

Tokyo // Seçenek 4

... // Aynı formatta daha fazla soru ekleyin

``

2. der ve çalıştır: Kodu bir C derleyicisi (örn. GCC) kullanarak derleyin ve yürütülebilir dosyayı çalıştırın.

Açıklama:

* Veri Yapıları:

* `` Soru` Yapısı:Soru metnini, cevaplarını ve çoktan seçmeli seçenekleri tutar.

* `Gamestate 'Yapısı:Mevcut soruyu, kazanılan para, kullanılan yaşam çizgileri ve oyun üzerinde oyun izler.

* Fonksiyonlar:

* `loadQuestions ()`:Bir dosyadan soruları yükler.

* `displayQuestion ()`:Geçerli soru ve seçenekleri görüntüler.

* `getAnSwer ()`:Oynatıcıyı bir cevap için ister ve girişi doğrular.

* `checkanswer ()`:Oyuncunun cevabını doğru cevapla karşılaştırır.

* `useLifeline ()`:Yaşam çizgisi seçimi ve uygulamasını işler (gerçek yaşam çizgisi mantığı için yer tutucu).

* `playgame ()`:Ana oyun döngüsünü yönetir, soruları, cevapları ve yaşam çizgilerini yönetir.

* oyun mantığı:

* `Playgame ()` işlevi, oyuncu son soruya ulaşana veya yanlış cevaplara ulaşana kadar sorular aracılığıyla yinelenir.

* Oyuncu bir menüden seçenekler seçerek Lifelines kullanabilir.

* Oyun oyuncunun ilerlemesini ve para kazandığını takip ediyor.

Yaşam çizgilerini uygulamak için aşağıdakileri `` `` `` `` `` `işlevi de: '' a eklemeniz gerekecektir.

* 50/50: İki yanlış seçeneği rastgele kaldırın.

* İzleyiciye sorun: Rastgele kitle oyları oluşturun, doğru cevaba daha yüksek bir kazanma şansı verir.

* Bir arkadaşa telefon edin: Belli bir olasılıkla doğru veya yanlış olabilen rastgele bir "arkadaşın" cevabı oluşturun.

Bu kod, "Milyoner Olmak İsteyen" oyunu için temel bir yapı sağlar. Bunu aşağıdakilerle daha da geliştirebilirsiniz:

* Daha gelişmiş yaşam çizgisi mantığının uygulanması.

* Görsel öğeler ve animasyonlar eklemek.

* Daha karmaşık soru formatlarını dahil etmek.

* Tasarruf ve yükleme oyunu ilerlemesi.

Reality TV

İlgili Kategoriler