Skip to content

Commit 905cfa3

Browse files
new game button
1 parent d685ab5 commit 905cfa3

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

Diff for: src/App.tsx

+18-5
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,26 @@ import { KeyboardEvent, useCallback, useEffect, useState } from "react"
44
import archive from "./assets/simpleWords.json"
55
import GuessingWord from "./components/GuessingWord/GuessingWord"
66
import HangmanSvg from "./components/HangmanSvg/HangmanSvg"
7-
7+
import ReloadButton from "./components/ReloadButton/ReloadButton"
88

99
function App() {
10-
1110
const [wordFromArchive, setWordFromArchive] = useState(() => {
12-
return archive[Math.floor(Math.random() * archive.length)].toLowerCase()
11+
return newWord()
1312
})
1413

1514

1615
const [usedLetters, setUsedLetters] = useState<string[]>([])
1716

17+
function newWord() {
18+
return archive[Math.floor(Math.random() * archive.length)].toLowerCase()
19+
}
20+
21+
function newGameFn(){
22+
setWordFromArchive(newWord())
23+
setUsedLetters([])
24+
}
25+
26+
1827
const incorrectLetters = usedLetters.filter((letter) => !wordFromArchive.includes(letter));
1928

2029
const correctLetters = usedLetters.filter(letter => wordFromArchive.includes(letter));
@@ -25,7 +34,7 @@ function App() {
2534
const addLetter= useCallback((letter:string) => {
2635
// letter = letter.toLowerCase();
2736
if (usedLetters.includes(letter) || gameIsLost || gameIsWon) return
28-
37+
<ReloadButton/>
2938
setUsedLetters(oldLetters => [...oldLetters, letter])
3039
},[usedLetters])
3140

@@ -59,12 +68,16 @@ function App() {
5968
<HangmanSvg numberWrongLetters={incorrectLetters.length}/>
6069
<GuessingWord usedLetters={usedLetters} showWord={gameIsLost}
6170
wordFromArchive={wordFromArchive} />
62-
<Letters
71+
72+
{gameIsLost || gameIsWon
73+
? <ReloadButton newGame={newGameFn}/>
74+
: <Letters
6375
correctLetters={correctLetters}
6476
incorrectLetters={incorrectLetters}
6577
addLetter={addLetter}
6678
disabled={disabled}
6779
/>
80+
}
6881
</div>
6982
)
7083
}

Diff for: src/components/ReloadButton/ReloadButton.tsx

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
type ReloadButtonProps = {
2+
newGame:()=>void
3+
}
4+
5+
6+
function ReloadButton({newGame}:ReloadButtonProps) {
7+
8+
return (
9+
<button onClick={()=>newGame()}>NeW Word</button>
10+
)
11+
}
12+
13+
export default ReloadButton

0 commit comments

Comments
 (0)