diff --git a/src/HangmanWord.tsx b/src/HangmanWord.tsx index afb73db..7b29d9d 100644 --- a/src/HangmanWord.tsx +++ b/src/HangmanWord.tsx @@ -1,41 +1,56 @@ +import React from 'react'; + type HangmanWordProps = { - guessedLetters: string[] - wordToGuess: string - reveal?: boolean -} + guessedLetters: string[]; + wordToGuess: string; + reveal?: boolean; +}; + +const renderLetter = ( + letter: string, + index: number, + guessedLetters: string[], + reveal: boolean +) => { + const isGuessed = guessedLetters.includes(letter); + const isHidden = !isGuessed && reveal; + const textColor = isHidden ? 'red' : 'black'; + + return ( + + {letter} + + ); +}; -export function HangmanWord({ +const HangmanWord: React.FC = ({ guessedLetters, wordToGuess, reveal = false, -}: HangmanWordProps) { +}) => { return (
- {wordToGuess.split("").map((letter, index) => ( - - - {letter} - - - ))} + {wordToGuess.split('').map((letter, index) => + renderLetter(letter, index, guessedLetters, reveal) + )}
- ) -} + ); +}; + +export default HangmanWord; diff --git a/src/Keyboard.tsx b/src/Keyboard.tsx index 58c95b1..0fa4e49 100644 --- a/src/Keyboard.tsx +++ b/src/Keyboard.tsx @@ -1,71 +1,51 @@ -import styles from "./Keyboard.module.css" +import React from 'react'; +import styles from './Keyboard.module.css'; -const KEYS = [ - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "l", - "m", - "n", - "o", - "p", - "q", - "r", - "s", - "t", - "u", - "v", - "w", - "x", - "y", - "z", -] +const KEYS = Array.from('abcdefghijklmnopqrstuvwxyz'); type KeyboardProps = { - disabled?: boolean - activeLetters: string[] - inactiveLetters: string[] - addGuessedLetter: (letter: string) => void -} + disabled?: boolean; + activeLetters: string[]; + inactiveLetters: string[]; + addGuessedLetter: (letter: string) => void; +}; -export function Keyboard({ +const Keyboard: React.FC = ({ activeLetters, inactiveLetters, addGuessedLetter, disabled = false, -}: KeyboardProps) { +}) => { return (
- {KEYS.map(key => { - const isActive = activeLetters.includes(key) - const isInactive = inactiveLetters.includes(key) + {KEYS.map((key) => { + const isActive = activeLetters.includes(key); + const isInactive = inactiveLetters.includes(key); + const buttonClasses = [ + styles.btn, + isActive ? styles.active : '', + isInactive ? styles.inactive : '', + ].join(' '); + return ( - ) + ); })}
- ) -} + ); +}; + +export default Keyboard;