Arts >> Artes >  >> Filmes e TV >> Reality TV

C Programação para o jogo que quer ser um milionário?

`` `c
#include
#include
#include
#include

// Defina a estrutura de perguntas
typedef struct {
Pergunta de char [256];
Char Answer [256];
Char Opção1 [256];
CHAR Option2 [256];
CHAR Option3 [256];
CHAR Option4 [256];
} Pergunta;

// Defina a estrutura do estado do jogo
typedef struct {
int currentQuestion;
int Moneywon;
int lifelelused [3]; // 0 para não utilizado, 1 para usado
Int Gameover;
} Gamestate;

// Funciona para carregar perguntas de um arquivo
Pergunta* LoadQuestions (const char* nome do arquivo, int* numQuestions) {
Arquivo* fp =fopen (nome do arquivo, "r");
if (fp ==null) {
printf ("Erro de abertura do arquivo de pergunta! \ n");
retornar nulo;
}

// Leia o número de perguntas
fScanf (fp, "%d \ n", numQuestions);

// alocam memória para as perguntas
Pergunta* Perguntas =Malloc (* NumQuestions* sizeof (pergunta));
if (perguntas ==null) {
printf ("Erro alocando a memória para perguntas! \ n");
fclose (FP);
retornar nulo;
}

// Leia as perguntas do arquivo
for (int i =0; i <*numQuestions; i ++) {
fScanf (fp, "%[^\ n] \ n", perguntas [i]. Pergunta);
fScanf (fp, "%[^\ n] \ n", perguntas [i] .Answer);
fScanf (fp, "%[^\ n] \ n", perguntas [i] .Option1);
fScanf (fp, "%[^\ n] \ n", perguntas [i] .Option2);
fScanf (fp, "%[^\ n] \ n", perguntas [i] .Option3);
fScanf (fp, "%[^\ n] \ n", perguntas [i] .Option4);
}

fclose (FP);
perguntas de retorno;
}

// Função para exibir a pergunta atual
Void DisplayQuestion (Pergunta) {
printf ("\ n%s \ n \ n", question.Question);
printf ("1. %s \ n", question.option1);
printf ("2. %s \ n", question.Option2);
printf ("3. %s \ n", question.Option3);
printf ("4. %s \ n", question.Option4);
}

// Função para lidar com a resposta do jogador
int getAnswer (gamestate* game) {
int resposta;
printf ("\ Nenter sua resposta (1-4):");
scanf ("%d" e resposta);

// Validar resposta
while (resposta <1 || resposta> 4) {
printf ("Resposta inválida! Por favor, insira um número entre 1 e 4:");
scanf ("%d" e resposta);
}

resposta de retorno;
}

// Funciona para verificar se a resposta está correta
int checkanswer (pergunta da pergunta, int resposta) {
if (resposta ==1 &&strcmp (question.option1, question.answer) ==0) {
retornar 1;
} else if (resposta ==2 &&strcmp (question.option2, question.answer) ==0) {
retornar 1;
} else if (resposta ==3 &&strcmp (question.option3, question.answer) ==0) {
retornar 1;
} else if (resposta ==4 &&strcmp (question.option4, question.answer) ==0) {
retornar 1;
} outro {
retornar 0;
}
}

// Funciona para lidar com linhas de vida
Void Uselifeline (GameState* Game) {
int escolha;
printf ("\ nwhich lifeline você gostaria de usar? \ n");
printf ("1. 50/50 \ n");
printf ("2. Ask the Audience \ n");
printf ("3. Ligue para um amigo \ n");
printf ("Digite sua escolha (1-3):");
scanf ("%d", &escolha);

// Validar escolha
while (escolha <1 || escolha> 3) {
printf ("Escolha inválida! Por favor, insira um número entre 1 e 3:");
scanf ("%d", &escolha);
}

// Verifique se a linha de vida já foi usada
if (game-> lifelelused [escolha - 1] ==1) {
printf ("Você já usou esta linha de vida! \ n");
retornar;
}

// Implementar a lógica Lifeline aqui (por exemplo, remover opções incorretas, simular o voto do público, etc.)
jogo-> lifelelused [escolha - 1] =1;
printf ("Lifeline usada com sucesso! \ n");
}

// Funciona para jogar o jogo
Void PlayGame (Pergunta* Perguntas, Int NumQuestions) {
Jogo GameState;
game.currentQuestion =0;
game.moneywon =0;
MEMSET (Game.LifelineUsed, 0, sizeof (game.lifelineUsed));
game.gameover =0;

while (! game.gameover) {
// exibe a pergunta atual
displayQuestion (perguntas [game.currentQuestion]);

// lida com linhas de vida
printf ("\ ndo você deseja usar uma linha de vida? (S/n):");
Char LifeLineChoice;
scanf (" %C", &LifeLineChoice);

if (LifeLElineChoice =='y') {
Uselifeline (&Game);
}

// Obtenha a resposta do jogador
int Resposta =GetAnswer (&Game);

// Verifique se a resposta está correta
if (checkanswer (perguntas [game.currentQuestion], resposta)) {
printf ("correto! \ n");
game.moneywon + =1000 * (game.currentQuestion + 1);
game.CurrentQuestion ++;
if (game.currentQuestion ==numQuestions) {
game.gameover =1;
printf ("\ ncongRatulações! Você ganhou $%d! \ n", game.moneywon);
quebrar;
}
} outro {
printf ("incorreto! \ n");
game.gameover =1;
printf ("\ nyou ganhou $%d. Melhor sorte na próxima vez! \ n", game.moneywon);
quebrar;
}
}
}

int main () {
srand (tempo (nulo));
int numQuestions;
Pergunta* Perguntas =LoadQuestions ("question.txt", &numQuestions);

if (perguntas ==null) {
retornar 1;
}

printf ("\ nwelcome para quem quer ser um milionário! \ n");
playgame (perguntas, numQuestions);

grátis (perguntas);
retornar 0;
}
`` `

Como usar este código:

1. Crie um arquivo de pergunta: Crie um arquivo de texto chamado `question.txt` e siga este formato:
`` `
10 // Número de perguntas
Qual é a capital da França? // Pergunta
Paris // Resposta correta
Berlim // Opção 1
Londres // Opção 2
Roma // Opção 3
Tóquio // Opção 4
... // Adicione mais perguntas no mesmo formato
`` `
2. compilar e executar: Compile o código usando um compilador C (por exemplo, GCC) e execute o executável.

Explicação:

* Estruturas de dados:
* `Question 'Estrutura:mantém o texto da pergunta, a resposta e as opções de múltipla escolha.
* Estrutura `GameState`:rastreia a questão atual, o dinheiro ganho, as linhas de vida utilizadas e o status do jogo.
* Funções:
* `loadquestions ()`:carrega perguntas de um arquivo.
* `DisplayQuestion ()`:exibe a pergunta e as opções atuais.
* `gtanswer ()`:solicita ao jogador uma resposta e valida a entrada.
* `checkanswer ()`:compara a resposta do jogador com a resposta correta.
* `uselifeline ()`:lida com a seleção e implementação da linha de vida (espaço reservado para a lógica real da linha de vida).
* `playgame ()`:gerencia o loop principal do jogo, lidando com perguntas, respostas e linhas de vida.
* Lógica do jogo:
* A função `playgame ()` `` `` `função itera através de perguntas até que o jogador atinja a pergunta final ou as respostas incorretamente.
* O jogador pode usar linhas de vida escolhendo opções de um menu.
* O jogo acompanha o progresso e o dinheiro do jogador vencidos.

Para implementar as linhas de vida, você precisará adicionar o seguinte na função `uselifeline ()`:

* 50/50: Remova duas opções incorretas aleatoriamente.
* Pergunte ao público: Gere votos aleatórios do público, dando à resposta correta uma chance maior de ganhar.
* Telefone para um amigo: Gerar uma resposta aleatória de "amigo", que pode estar correta ou incorreta com uma certa probabilidade.

Este código fornece uma estrutura básica para um jogo "quem quer ser um milionário". Você pode aprimorá -lo ainda mais por:

* Implementando lógica de linha de vida mais avançada.
* Adicionando elementos visuais e animações.
* Incorporando formatos de perguntas mais complexos.
* Economizando e carregando o progresso do jogo.

Reality TV

Categorias relacionadas