Jogo da Forca em C#

Giovanna Marques

1/2/20244 min read

Segue desenvolvimento do jogo da forca na linguagem C# (Csharp) no console usando o Visual Studio Community.

O jogo na verdade funciona com o comando de entrada de uma letra por vez até completar a palavra escondida pelo criador.

Quem completar a palavra ganha, caso não acerte perde.

Dessa vez vou passar em tópicos para melhor entendimento de como realizar um código de forma mais efetiva possível.

Aprenda mais sobre o fluxo

1. Defina a estrutura do programa:

- Crie um novo projeto no Visual Studio Community e escolha o tipo de aplicativo "Console Application".

2. Implemente a lógica do jogo:

- Crie uma função `EscolherPalavra()` para escolher aleatoriamente uma palavra da lista de palavras possíveis.

- Crie uma função `AtualizarPalavraSecreta()` para verificar se a letra fornecida pelo jogador está na palavra secreta e atualizar a exibição da palavra conforme as letras corretas são descobertas.

- Implemente a lógica principal do jogo em um loop, onde o jogador tenta adivinhar as letras até que todas sejam descobertas ou ele use todas as tentativas permitidas.

3. Interaja com o jogador:

- Use as funções `Console.WriteLine()` e `Console.ReadLine()` para exibir mensagens para o jogador e capturar suas entradas.

- Informe ao jogador sobre o número de tentativas restantes e a palavra atualizada após cada palpite.

4. Finalize o jogo:

- Determine as condições de vitória e derrota do jogo e encerre o loop principal quando uma dessas condições for atendida.

- Ao finalizar o jogo, agradeça ao jogador por participar e encerre o programa.

5. Teste e refine:

- Execute o jogo várias vezes para verificar se tudo está funcionando conforme o esperado.

- Faça ajustes conforme necessário para melhorar a experiência do jogador ou corrigir quaisquer erros que encontrar.

6. Personalize e expanda:

- Personalize o jogo adicionando suas próprias palavras ou ajustando as regras conforme desejado.

- Se sentir confiança, considere expandir o jogo com recursos adicionais, como gráficos ou uma interface mais elaborada.

Lembre-se de que este é apenas um exemplo simples para começar. Você pode modificar e expandir este jogo conforme sua criatividade e habilidades de programação. Divirta-se criando seu próprio jogo de Forca em C#!

  • Se o usuário coloca letra errada -> O computador não identificou, tentar novamente.

  • Se o usuário coloca letra errada nas últimas tentativas -> O computador não identificou, reinicie o jogo com outra palavra.

  • Se o usuário coloca letra certa-> O computador identificou, tentar novamente até completar.

  • Se o usuário completa a palavra -> O computador identificou, ganhou!

O código então precisando seguir as regras fica da seguinte forma:


using System;

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Bem-vindo ao Jogo da Forca!");

string palavraSecreta = EscolherPalavra();

char[] letrasDescobertas = new char[palavraSecreta.Length];

// Inicializa o array de letras descobertas com underscores

for (int i = 0; i < letrasDescobertas.Length; i++)

{

letrasDescobertas[i] = '_';

}

int tentativasRestantes = 6;

bool jogoAcabou = false;

while (!jogoAcabou)

{

Console.WriteLine("nPalavra: " + string.Join(" ", letrasDescobertas));

Console.WriteLine("Tentativas Restantes: " + tentativasRestantes);

Console.WriteLine("Digite uma letra:");

char palpite = Console.ReadLine()[0];

bool letraCorreta = AtualizarPalavraSecreta(palavraSecreta, letrasDescobertas, palpite);

if (!letraCorreta)

{

tentativasRestantes--;

Console.WriteLine("Letra incorreta! Você perdeu uma tentativa.");

}

if (tentativasRestantes == 0)

{

Console.WriteLine("nVocê perdeu! A palavra secreta era: " + palavraSecreta);

jogoAcabou = true;

}

if (Array.IndexOf(letrasDescobertas, '_') == -1)

{

Console.WriteLine("nParabéns! Você ganhou! A palavra secreta era: " + palavraSecreta);

jogoAcabou = true;

}

}

Console.WriteLine("nO jogo terminou. Obrigado por jogar!");

}

static string EscolherPalavra()

{

string[] palavras = { "banana", "abacaxi", "morango", "laranja", "uva", "limao" };

Random rand = new Random();

return palavras[rand.Next(palavras.Length)];

}

static bool AtualizarPalavraSecreta(string palavraSecreta, char[] letrasDescobertas, char palpite)

{

bool letraCorreta = false;

for (int i = 0; i < palavraSecreta.Length; i++)

{

if (palavraSecreta[i] == palpite)

{

letrasDescobertas[i] = palpite;

letraCorreta = true;

}

}

return letraCorreta;

}

}

Radom

Random representa um gerador de número pseudoaleatório, que é um algoritmo que produz uma sequência de números que atendem a certos requisitos estatísticos de aleatoriedade. Ele gera uma sequência de números aleatórios cuja distribuição difere da distribuição uniforme gerada pelo Sample método da classe base. Ele substitui o Sample método para fornecer a distribuição de números aleatórios e substitui o Random.Next método para usar séries de números aleatórios.

A instrução if

Uma if instrução pode ser qualquer uma das duas formas a seguir:

  • Uma if instrução com else uma parte seleciona uma das duas instruções a executar com base no valor de uma expressão booliana

  • Aprenda mais sobre aqui no site da Microsoft

— -

Esse foi um dos códigos realizados no começo do meu desenvolvimento.

Muito usado em entrevistas de emprego pra vagas júnior.

Obrigada pela leitura 🔍🌱

bool

  • Um tipo de dado que representa valores booleanos: verdadeiro (true) ou falso (false).

  • Utilizado em instruções condicionais para controlar o fluxo do programa.

while

  • Estrutura de controle de fluxo que repete um bloco de código enquanto uma condição especificada é verdadeira.

  • A condição é verificada antes da execução do bloco de código.

for

  • Estrutura de controle de fluxo que executa um bloco de código repetidamente por um número específico de vezes.

  • Inclui três partes: inicialização, condição e iteração, que são executadas antes de cada iteração do bloco de código.

Essas são estruturas fundamentais para controlar o fluxo de execução em programas e são amplamente utilizadas em muitas linguagens de programação, incluindo C#.