This is a simple Hangman game implemented in C. The game selects a random word from a word bank file, and the player must guess the word, one letter at a time. The game ends when the player guesses the word correctly or makes 5 incorrect guesses.
- The game selects a random word from a
words.txt
file. - The player can guess letters, and the game shows the progress of the hidden word.
- If the player makes 5 incorrect guesses, the game ends and they are "hanged."
- The player can add new words to the word bank during the game.
- The game starts with an introduction screen.
- The player must guess the letters of the word.
- The game shows progress with correct letters and the drawing of a hangman figure that gets completed as the player makes mistakes.
- The player wins if they guess all the letters of the word before making 5 mistakes.
- If not, the player loses, and the word is revealed.
-
Make sure you have a C compiler installed, such as
gcc
. -
Compile the code using the following command:
gcc hanginggame.c -o hanging
-
Run the game:
./hanging
- The game relies on a
words.txt
file containing a word bank. The format of the file is as follows:- The first line should contain the number of words in the file.
- Each word should be on a separate line.
5
WATERMELOON
BANANA
ORANGE
STRAWBERRY
APPLE
Developing this Hangman game in C helps improve several important C programming skills, including:
- Using functions like
strlen
,fscanf
, andscanf
to work with strings allows for practicing text manipulation and comparison, which is crucial in many programs that deal with text input and output.
- The use of structures like
for
,while
, andif-else
in controlling the flow of the game, allowing iteration over lists and making decisions based on specific conditions, such as the number of errors made.
- The ability to open, read, and write to files is essential in C. In this game, the word bank is loaded from a
words.txt
file, and the code also allows for adding new words to the file during runtime.
- While explicit dynamic memory allocation is not used in this code, working with static arrays for storing letters and guesses helps reinforce memory management practices.
- The code is organized into specific functions for tasks like drawing the hangman (
drawHangman
), checking if a letter has been guessed (alreadyGuessed
), and verifying if the player has won (hasWon
). This enhances the readability and modularization of the code, which is a recommended practice in programming.
- The game implements several simple algorithms, such as checking if the player has guessed all the letters, counting mistakes, and drawing the hangman state. Additionally, using a random number generator (
rand
) to select words provides an introduction to game programming and dynamic systems.
- The code makes use of interactive inputs and outputs with the player, helping develop the ability to capture user input and provide dynamic feedback during the program's execution.
- The implementation of checking the game state (whether the player has won or lost) depends on evaluating conditional data as the game progresses, allowing practice with verification logic and decision-making.
- The code uses several standard C libraries like
stdio.h
,stdlib.h
,string.h
, andtime.h
, which are essential for handling input/output, string manipulation, and random numbers.
- The code uses basic data types like
char
andint
to represent letters, guesses, and counters, reinforcing the understanding of primitive types and their manipulation.
Checks if the given letter exists in the secret word.
Counts how many incorrect guesses the player has made so far.
Returns true if the player has made 5 incorrect guesses.
Checks if the player has guessed all the letters of the secret word.
Displays the introduction of the game.
Reads the player's guess and checks if they guessed correctly or incorrectly.
Checks if the player has already guessed a specific letter.
Draws the current state of the hangman figure.
Selects a random word from the palavras.txt
file.
Allows the player to add a new word to the word bank.
Feel free to improve or add new features to this game! If you find any bugs or have suggestions, please open an issue or submit a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.
Este é um jogo simples de forca implementado em linguagem C. O jogo escolhe uma palavra aleatória de um banco de dados de palavras, e o jogador deve adivinhar a palavra, letra por letra. O jogo termina quando o jogador acerta a palavra ou comete 5 erros.
- O jogo escolhe uma palavra aleatória de um arquivo
palavras.txt
. - O jogador pode adivinhar letras e o jogo mostra o progresso da palavra oculta.
- Se o jogador errar 5 vezes, o jogo termina e ele "é enforcado".
- O jogador pode adicionar novas palavras ao banco de dados durante o jogo.
- O jogo começa com uma tela de introdução.
- O jogador deve adivinhar as letras da palavra.
- O progresso do jogo é mostrado com as letras acertadas e o desenho de uma forca que vai se completando à medida que o jogador erra.
- O jogador ganha se acertar todas as letras da palavra antes de cometer 5 erros.
- Caso contrário, o jogador perde e a palavra é revelada.
-
Certifique-se de ter o compilador C instalado, como
gcc
. -
Compile o código com o seguinte comando:
gcc jogodaforca.c -o jogodaforca
-
Execute o jogo:
./jogodaforca
- O jogo depende de um arquivo
palavras.txt
que contém um banco de palavras. O formato do arquivo é:- A primeira linha deve conter o número de palavras no arquivo.
- Cada palavra deve estar em uma linha separada.
5
MELANCIA
BANANA
LARANJA
MORANGO
UVA
Desenvolver este jogo de forca em C permite aprimorar diversas competências importantes na programação em C, incluindo:
- O uso de funções como
strlen
,fscanf
escanf
para trabalhar com strings permite praticar a manipulação e comparação de textos, o que é fundamental em diversos programas que lidam com entradas e saídas de texto.
- O uso de estruturas como
for
,while
eif-else
no controle de fluxo do jogo, permitindo iterar sobre listas e tomar decisões baseadas em condições específicas, como o número de erros cometidos.
- A habilidade de abrir, ler e escrever em arquivos é essencial em C. Neste jogo, o banco de palavras é carregado de um arquivo
palavras.txt
, e o código também permite adicionar novas palavras ao arquivo durante a execução.
- A manipulação de variáveis estáticas e dinâmicas e o entendimento de como o C gerencia a memória são trabalhados de forma implícita. Embora não haja alocação dinâmica explícita neste código, o uso de arrays para armazenar letras e chutes envolve gestão de memória.
- O código é estruturado com funções específicas para tarefas como desenhar a forca (
desenhaforca
), verificar se a letra foi chutada (jachutou
), e verificar se o jogador ganhou (ganhou
). Isso melhora a legibilidade e modularização do código, uma prática recomendada na programação.
- O jogo implementa uma série de algoritmos simples, como verificar se o jogador adivinhou todas as letras da palavra, contar os erros e desenhar o estado da forca. Além disso, o uso do gerador de números aleatórios (
rand
) para escolher palavras fornece uma introdução à programação de jogos e sistemas dinâmicos.
- O código faz uso de entradas e saídas interativas com o usuário, o que ajuda a desenvolver a habilidade de capturar entradas e fornecer feedback dinâmico durante a execução do programa.
- A implementação da verificação do estado do jogo (se o jogador venceu ou perdeu) depende de dados condicionais que são avaliados ao longo da execução, permitindo praticar a lógica de verificação e tomada de decisão.
- O código faz uso de várias bibliotecas padrão em C, como
stdio.h
,stdlib.h
,string.h
, etime.h
, que são essenciais para lidar com entrada/saída, manipulação de strings e números aleatórios.
- O código usa tipos de dados simples, como
char
eint
, para representar as letras, chutes e contadores, o que reforça o entendimento sobre tipos primitivos e suas manipulações.
Verifica se a letra fornecida existe na palavra secreta.
Conta quantos chutes errados o jogador deu até o momento.
Retorna verdadeiro se o jogador errou 5 vezes.
Verifica se o jogador adivinhou todas as letras da palavra secreta.
Exibe a introdução do jogo.
Lê o chute do jogador e verifica se ele acertou ou errou.
Verifica se o jogador já chutou uma determinada letra.
Desenha o estado atual da forca.
Escolhe uma palavra aleatória do arquivo palavras.txt
.
Permite ao jogador adicionar uma nova palavra ao banco de dados.
Sinta-se à vontade para fazer melhorias ou adicionar novas funcionalidades a este jogo! Se você encontrar algum bug ou tiver sugestões, abra uma issue ou envie um pull request.