🌐
50 React Coding Puzzles
  • 50 React Coding Puzzles
  • Contact
  • Reviews
  • Table of Contents
  • Introduction
  • 1 - Simple Counter App
  • 2 - Dynamic List of Items with Strikethrough
  • 3 - Color Picker with Hex Code Display
  • 4 - Password Strength Checker
  • 5 - Countdown Timer with Audio
  • 6 - Dynamic Movie List with Filtering and Sorting
  • 7 - Text Animation Component (Fade/Scroll)
  • 8 - Dynamically Generated Text Art
  • 9 - Meme Generator with Custom Text
  • 10 - "What Should I Eat?" Random Recipe Generator
  • 11 - Simple Quiz App with Multiple Choice
  • 12 - Unit Converter
  • 13 - Dynamic Image Gallery with Lightbox
  • 14 - Weather Widget with Temperature and Description
  • 15 - Contact Form with Email and Message Validation
  • 16 - Color Palette Generator
  • 17 - Drag-and-Drop Feature for Rearranging Items
  • 18 - Interactive Quiz with Dynamic Results and Feedback
  • 19 - To-Do List with Task Categorization
  • 20 - Note-Taking App with Markdown Support
  • 21 - Simple Calculator with Basic Operations
  • 22 - Word Scramble Game with Timer and Score
  • 23 - Number Guessing Game
  • 24 - Digital Clock with Time Zone Support
  • 25 - Interactive Time Zone Converter
  • 26 - Weather Forecast App with Location Detection
  • 27 - Real-Time Stock Ticker with Updates
  • 28 - Virtual Dice Roller with Multiple Dice
  • 29 - Responsive Navigation Menu with Dropdowns
  • 30 - Progress Bar for Loading or Task Completion
  • 31 - Modal Window for Alerts and Confirmations
  • 32 - Infinite Scroll for Loading More Content
  • 33 - Form Validation with Error Messages
  • 34 - Search Bar with Filtering and Suggestions
  • 35 - Drag-and-Drop File Upload
  • 36 - Interactive Color Picker with Sliders
  • 37 - Image Carousel with Autoplay
  • 38 - Rating System with Stars or Thumbs Up/Down
  • 39 - Comment Section with Nested Replies
  • 40 - Pagination for Long Lists of Data
  • 41 - Stopwatch app that tracks elapsed time
  • 42 - Responsive E-commerce Product Grid
  • 43 - Random Movie/Book Recommender
  • 44 - Kanban board for managing tasks with drag-and-drop
  • 45 - Chat application with real-time messaging using WebSockets
  • 46 - Calendar that displays events and allows scheduling
  • 47 - Tic-Tac-Toe Game
  • 48 - Hangman Game
  • 49 - Notes App
  • 50 - Expense Tracker
  • Afterword
  • Appendix
Powered by GitBook
On this page
  • Description
  • Algorithm
  • Classes
  • Code
  • Explanation
  • Possible Future Enhancements

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

  1. Generate a random word from a word list

  2. Display blanks or underscores representing the word's length

  3. Allow players to guess individual letters

  4. Reveal correctly guessed letters and update the blank spaces

  5. Track incorrect guesses and display a hangman graphic depending on the count

Classes

  • HangmanGame: The main game component

  • Word: The word to be guessed

  • Letter: A single letter in the word

  • HangmanGraphic: 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.

Previous47 - Tic-Tac-Toe GameNext49 - Notes App

Last updated 10 months ago