diff --git a/.gitignore b/.gitignore
index 39818d197..66c08ecfb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,3 +19,5 @@ dist
npm-debug.log*
yarn-debug.log*
yarn-error.log*
+
+.vscode
diff --git a/src/components/Banner/Banner.js b/src/components/Banner/Banner.js
new file mode 100644
index 000000000..24f771a3b
--- /dev/null
+++ b/src/components/Banner/Banner.js
@@ -0,0 +1,28 @@
+import React from "react";
+
+function Banner({ type, answer = "", guesses = 6 }) {
+ if (type === "happy") {
+ return (
+
+
+ Congratulations! Got it in
+
+ {guesses} {guesses === 1 ? "guess" : "guesses"}
+
+ .
+
+
+ );
+ } else if (type === "sad") {
+ return (
+
+
+ Sorry, the correct answer is {answer}.
+
+
+ );
+ }
+ return;
+}
+
+export default Banner;
diff --git a/src/components/Banner/index.js b/src/components/Banner/index.js
new file mode 100644
index 000000000..1a3d55b83
--- /dev/null
+++ b/src/components/Banner/index.js
@@ -0,0 +1,2 @@
+export * from './Banner';
+export { default } from './Banner';
diff --git a/src/components/Game/Game.js b/src/components/Game/Game.js
index fc7615d24..ae2f6eddc 100644
--- a/src/components/Game/Game.js
+++ b/src/components/Game/Game.js
@@ -1,15 +1,42 @@
-import React from 'react';
+import React, { useState } from "react";
-import { sample } from '../../utils';
-import { WORDS } from '../../data';
-
-// Pick a random word on every pageload.
-const answer = sample(WORDS);
-// To make debugging easier, we'll log the solution in the console.
-console.info({ answer });
+import { sample } from "../../utils";
+import { WORDS } from "../../data";
+import Input from "../Input/Input";
+import Guesses from "../Guesses/Guesses";
+import { checkGuess } from "../../game-helpers";
+import Banner from "../Banner/Banner";
function Game() {
- return <>Put a game here!>;
+ const [answer, setAnswer] = useState(() => sample(WORDS));
+ const [guesses, setGuesses] = useState([]);
+
+ const gameIsWon =
+ guesses.filter((guess) => guess === answer).length > 0 ? true : false;
+
+ const nonEmptyGuesses = guesses.filter((guess) => guess.length === 5);
+
+ const gameLost = nonEmptyGuesses.length === 6 && gameIsWon === false;
+
+ return (
+ <>
+ {(gameLost || gameIsWon) && (
+
+ )}
+
+ setGuesses([...guesses, guess])} />
+ {gameLost && }
+ {gameIsWon && }
+ >
+ );
}
export default Game;
diff --git a/src/components/Guess/Guess.js b/src/components/Guess/Guess.js
new file mode 100644
index 000000000..aebfc6f1e
--- /dev/null
+++ b/src/components/Guess/Guess.js
@@ -0,0 +1,25 @@
+import React from "react";
+import { range } from "../../utils";
+import { checkGuess } from "../../../src/game-helpers";
+
+function Guess({ value, answer }) {
+ const letterStatuses = checkGuess(value, answer);
+ return (
+
+ {range(5).map((i) => {
+ return (
+
+ {value?.split("")[i]}
+
+ );
+ })}
+
+ );
+}
+
+export default Guess;
diff --git a/src/components/Guess/index.js b/src/components/Guess/index.js
new file mode 100644
index 000000000..afbf137b5
--- /dev/null
+++ b/src/components/Guess/index.js
@@ -0,0 +1,2 @@
+export * from './Guess';
+export { default } from './Guess';
diff --git a/src/components/Guesses/Guesses.js b/src/components/Guesses/Guesses.js
new file mode 100644
index 000000000..c2e75a4e1
--- /dev/null
+++ b/src/components/Guesses/Guesses.js
@@ -0,0 +1,16 @@
+import React from "react";
+import { range } from "../../utils";
+import { NUM_OF_GUESSES_ALLOWED } from "../../constants";
+import Guess from "../Guess";
+
+function Guesses({ guesses, answer }) {
+ return (
+
+ {range(NUM_OF_GUESSES_ALLOWED).map((number) => {
+ return ;
+ })}
+
+ );
+}
+
+export default Guesses;
diff --git a/src/components/Guesses/index.js b/src/components/Guesses/index.js
new file mode 100644
index 000000000..8d27e0072
--- /dev/null
+++ b/src/components/Guesses/index.js
@@ -0,0 +1,2 @@
+export * from './Guesses';
+export { default } from './Guesses';
diff --git a/src/components/Input/Input.js b/src/components/Input/Input.js
new file mode 100644
index 000000000..60959ccab
--- /dev/null
+++ b/src/components/Input/Input.js
@@ -0,0 +1,29 @@
+import React, { useState } from "react";
+
+function Input({ setGuesses }) {
+ const [guess, setGuess] = useState("");
+
+ function handleSubmit(event) {
+ event.preventDefault();
+ setGuesses(guess);
+ setGuess("");
+ }
+ return (
+
+ );
+}
+
+export default Input;
diff --git a/src/components/Input/index.js b/src/components/Input/index.js
new file mode 100644
index 000000000..b64980c62
--- /dev/null
+++ b/src/components/Input/index.js
@@ -0,0 +1,2 @@
+export * from './Input';
+export { default } from './Input';