Arts >> Изкуства >  >> Movies & TV >> Reality TV

C програмиране за играта, който иска да бъде милионер?

`` `c

#include

#include

#include

#include

// Определете структурата на въпросите

typedef struct {

char въпрос [256];

char отговор [256];

char опция1 [256];

char опция2 [256];

char опция3 [256];

char опция4 [256];

} Въпрос;

// Определете структурата на състоянието на играта

typedef struct {

int currentQuestion;

int moneywon;

int lifelineused [3]; // 0 за неизползвани, 1 за използван

int gameover;

} Gamestate;

// функция за зареждане на въпроси от файл

Въпрос* LoadQuestions (const char* fileName, int* numquestions) {

Файл* fp =fopen (име на файл, "r");

ако (fp ==null) {

printf ("Файл за отваряне на въпрос! \ n");

връщане null;

}

// Прочетете броя на въпросите

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

// разпределете паметта за въпросите

Въпрос* Въпроси =Malloc (* numquestions* sizeof (въпрос));

ако (въпроси ==NULL) {

printf ("Грешка при разпределяне на памет за въпроси! \ n");

fclose (FP);

връщане null;

}

// Прочетете въпросите от файла

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

fscanf (fp, "%[^\ n] \ n", въпроси [i] .question);

fscanf (fp, "%[^\ n] \ n", въпроси [i] .Answer);

fscanf (fp, "%[^\ n] \ n", въпроси [i] .option1);

fscanf (fp, "%[^\ n] \ n", въпроси [i] .option2);

fscanf (fp, "%[^\ n] \ n", въпроси [i] .option3);

fscanf (fp, "%[^\ n] \ n", въпроси [i] .option4);

}

fclose (FP);

въпроси за връщане;

}

// функция за показване на текущия въпрос

void displayquestion (въпрос на въпрос) {

printf ("\ n%s \ n \ n", въпрос.question);

printf ("1. %s \ n", въпрос.option1);

printf ("2. %s \ n", въпрос.option2);

printf ("3. %s \ n", въпрос.option3);

printf ("4. %s \ n", въпрос.option4);

}

// функция за справяне с отговора на играча

int getanswer (gamestate* игра) {

int отговор;

printf ("\ nenter вашия отговор (1-4):");

scanf ("%d", &отговор);

// Утвърждаване на отговора

докато (отговор <1 || отговор> 4) {

printf ("Невалиден отговор! Моля, въведете число между 1 и 4:");

scanf ("%d", &отговор);

}

отговор отговор;

}

// функция, за да проверите дали отговорът е правилен

int checkanswer (въпрос на въпрос, int answer) {

if (Отговор ==1 &&strcmp (Question.option1, въпрос.answer) ==0) {

връщане 1;

} else if (Отговор ==2 &&strcmp (въпрос.option2, въпрос.answer) ==0) {

връщане 1;

} else if (Отговор ==3 &&strcmp (въпрос.option3, въпрос.answer) ==0) {

връщане 1;

} else if (Отговор ==4 &&strcmp (въпрос.option4, въпрос.answer) ==0) {

връщане 1;

} else {

връщане 0;

}

}

// функция за обработка на спасителни линии

void uselifeline (Gamestate* игра) {

int choice;

printf ("\ nwich lifeline бихте ли искали да използвате? \ n");

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

printf ("2. Попитайте публиката \ n");

printf ("3. Телефон приятел \ n");

printf ("Въведете своя избор (1-3):");

scanf ("%d", &избор);

// валидиран избор

докато (избор <1 || избор> 3) {

printf ("Невалиден избор! Моля, въведете число между 1 и 3:");

scanf ("%d", &избор);

}

// Проверете дали Lifeline вече се използва

if (game-> lifeelineused [избор - 1] ==1) {

printf ("Вече сте използвали тази спасителна линия! \ n");

връщане;

}

// внедряване на Lifeline Logic тук (например, премахнете неправилни опции, симулирайте гласа на аудиторията и т.н.)

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

printf ("Lifeline се използва успешно! \ n");

}

// функция за игра на играта

void playGame (Въпроси* въпроси, int numquestions) {

Игра за геймстати;

game.currentQuestion =0;

game.moneywon =0;

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

game.gameover =0;

докато (! game.gameover) {

// Показване на текущия въпрос

displayquestion (въпроси [game.currentquestion]);

// обработка на спасителни линии

printf ("\ ndo искате да използвате спасителна линия? (y/n):");

char lifelinechoice;

scanf (" %c", &lifelinechoice);

ако (lifelinechoice =='y') {

Uselifeline (&Game);

}

// Вземете отговора на играча

int antfor =getanswer (&game);

// проверете дали отговорът е правилен

ако (checkanswer (въпроси [game.currentquestion], отговор)) {

printf ("правилно! \ n");

game.moneywon + =1000 * (game.currentQuestion + 1);

game.currentquestion ++;

ако (game.currentQuestion ==numquestions) {

game.gameover =1;

printf ("\ ncongratulations! Вие спечелихте $%d! \ n", game.moneywon);

почивка;

}

} else {

printf ("неправилно! \ n");

game.gameover =1;

printf ("\ nyou спечели $%d. По -добър късмет следващия път! \ n", game.moneywon);

почивка;

}

}

}

int main () {

srand (време (null));

int numquestions;

Въпроси* Въпроси =LoadQuestions ("Въпроси.txt", &Numquestions);

ако (въпроси ==NULL) {

връщане 1;

}

printf ("\ nwelcome до кой иска да бъде милионер! \ n");

PlayGame (въпроси, Numquestions);

безплатно (въпроси);

връщане 0;

}

`` `

Как да използвам този код:

1. Създайте въпрос на въпроси: Създайте текстов файл, наречен `ourcle.txt` и следвайте този формат:

`` `

10 // Брой въпроси

Каква е столицата на Франция? // Въпрос

Париж // Правилен отговор

Берлин // Вариант 1

Лондон // Вариант 2

Рим // Вариант 3

Токио // Вариант 4

... // Добавете още въпроси в същия формат

`` `

2. Съставете и изпълнете: Компилирайте кода с помощта на C компилатор (например GCC) и стартирайте изпълнимия.

Обяснение:

* Структури на данни:

* `СТРУКТУРА НА ВЪПРОС:Притежава опциите за текст, отговор и многократен избор.

* `GameState` Структура:проследява текущия въпрос, спечелените пари, използваните спасители и играта над статуса.

* Функции:

* `loadquestions ()`:Зарежда въпроси от файл.

* `DisplayQuestion ()`:Показва текущия въпрос и опции.

* `getAnswer ()`:подканва играча за отговор и утвърждава въвеждането.

* `checkanswer ()`:Сравнява отговора на играча с правилния отговор.

* `uselifeline ()`:обработва избора и внедряването на LifeLine (Заплаща за действителна Lifeline Logic).

* `PlayGame ()`:Управлява основния цикъл на играта, обработка на въпроси, отговори и спасителни линии.

* Логика на играта:

* `PlayGame ()` Функцията повтаря чрез въпроси, докато играчът не достигне окончателния въпрос или отговори неправилно.

* Играчът може да използва LifeLines, като избере опции от меню.

* Играта следи напредъка и спечелените пари на играча.

За да внедрите спасителните линии, ще трябва да добавите следното във функцията `uselifeline ()`:

* 50/50: Премахнете на случаен принцип две неправилни опции.

* Попитайте публиката: Генерирайте гласовете на случайна аудитория, като давате правилния отговор по -голям шанс за победа.

* Телефон Приятел: Генерирайте отговора на случаен „приятел“, който може да бъде правилен или неправилен с определена вероятност.

Този код предоставя основна структура за игра „Кой иска да бъде милионер“. Можете да го подобрите допълнително от:

* Прилагане на по -усъвършенствана логика на LifeLine.

* Добавяне на визуални елементи и анимации.

* Включване на по -сложни въпросителни.

* Запазване и зареждане на напредъка на играта.

Reality TV

Съответните категории