import React, { useState, useEffect } from 'react';import ReactDOM from 'react-dom';const WORD_LENGTH = 5;const MAX_GUESSES = 6;const WORDS = ['REACT', 'REDUX', 'HOOKS', 'STATE', 'PROPS']; // Add more words as neededfunction WordleApp() { const [targetWord, setTargetWord] = useState(''); const [guesses, setGuesses] = useState([]); const [currentGuess, setCurrentGuess] = useState(''); const [gameOver, setGameOver] = useState(false); useEffect(() => { setTargetWord(WORDS[Math.floor(Math.random() * WORDS.length)]); }, []); const handleKeyPress = (event) => { if (gameOver) return; if (event.key === 'Enter' && currentGuess.length === WORD_LENGTH) { submitGuess(); } else if (event.key === 'Backspace') { setCurrentGuess(currentGuess.slice(0, -1)); } else if (currentGuess.length < WORD_LENGTH && event.key.match(/^[a-z]$/i)) { setCurrentGuess(currentGuess + event.key.toUpperCase()); } }; const submitGuess = () => { const newGuesses = [...guesses, currentGuess]; setGuesses(newGuesses); setCurrentGuess(''); if (currentGuess === targetWord || newGuesses.length === MAX_GUESSES) { setGameOver(true); } }; useEffect(() => { window.addEventListener('keydown', handleKeyPress); return () => { window.removeEventListener('keydown', handleKeyPress); }; }, [currentGuess, gameOver]); const renderGuess = (guess) => { return guess.split('').map((letter, index) => { let className = 'tile'; if (targetWord[index] === letter) { className += ' correct'; } else if (targetWord.includes(letter)) { className += ' present'; } else { className += ' absent'; } return
{letter}
; }); }; return (

Wordle Clone

{guesses.map((guess, index) => (
{renderGuess(guess)}
))}{!gameOver && (
{currentGuess.split('').map((letter, index) => (
{letter}
))}{[...Array(WORD_LENGTH - currentGuess.length)].map((_, index) => (
))}
)}
{gameOver && (
{guesses[guesses.length - 1] === targetWord ? 'You won!' : `Game over! The word was ${targetWord}`}
)}
);}ReactDOM.render(, document.getElementById('root'));