48 - Hangman Game
Description
Create a Hangman game where players guess a hidden word letter by letter. The game should generate a random word from a word list, show blanks or underscores representing the word's length, allow players to guess individual letters, reveal correctly guessed letters and update the blank spaces, track incorrect guesses, and display a hangman graphic depending on the count.
Algorithm
Generate a random word from a word list
Display blanks or underscores representing the word's length
Allow players to guess individual letters
Reveal correctly guessed letters and update the blank spaces
Track incorrect guesses and display a hangman graphic depending on the count
Classes
HangmanGame
: The main game componentWord
: The word to be guessedLetter
: A single letter in the wordHangmanGraphic
: The hangman graphic component
Code
HangmanGame.js
import React, { useState } from 'react';
import Word from './Word';
import HangmanGraphic from './HangmanGraphic';
const HangmanGame = () => {
const [word, setWord] = useState(generateRandomWord());
const [guessedLetters, setGuessedLetters] = useState([]);
const [incorrectGuesses, setIncorrectGuesses] = useState(0);
const handleGuess = (letter) => {
const isCorrect = word.includes(letter);
if (isCorrect) {
setGuessedLetters((prevLetters) => [...prevLetters, letter]);
} else {
setIncorrectGuesses((prevCount) => prevCount + 1);
}
};
return (
<div>
<Word word={word} guessedLetters={guessedLetters} />
<HangmanGraphic incorrectGuesses={incorrectGuesses} />
<input type="text" onChange={(e) => handleGuess(e.target.value)} />
</div>
);
};
const generateRandomWord = () => {
const wordList = ['apple', 'banana', 'cherry', 'date', 'elderberry'];
return wordList[Math.floor(Math.random() * wordList.length)];
};
export default HangmanGame;
Word.js
import React from 'react';
const Word = ({ word, guessedLetters }) => {
return (
<div>
{word.split('').map((letter, index) => (
<Letter
key={index}
letter={letter}
guessed={guessedLetters.includes(letter)}
/>
))}
</div>
);
};
export default Word;
Letter.js
import React from 'react';
const Letter = ({ letter, guessed }) => {
return (
<div>
{guessed ? letter : '_'}
</div>
);
};
export default Letter;
HangmanGraphic.js
import React from 'react';
const HangmanGraphic = ({ incorrectGuesses }) => {
const graphics = [
'', // 0 incorrect guesses
'', // 1 incorrect guess
'', // 2 incorrect guesses
'', // 3 incorrect guesses
'', // 4 incorrect guesses
'', // 5 incorrect guesses
'', // 6 incorrect guesses
];
return <div dangerouslySetInnerHTML={{ __html: graphics[incorrectGuesses] }} />;
};
export default HangmanGraphic;
Explanation
This code creates a Hangman game that generates a random word, displays blanks or underscores representing the word's length, allows players to guess individual letters, reveals correctly guessed letters and updates the blank spaces, tracks incorrect guesses, and displays a hangman graphic depending on the count.
Possible Future Enhancements
Word list management: Allow users to add or remove words from the word list.
Difficulty levels: Add different difficulty levels with varying word lengths or complexity.
Multiplayer: Add support for multiplayer games, where two or more players can guess the word simultaneously.
Timer: Add a timer to limit the time players have to guess the word.
Last updated