Word Guess
We beginnen met een bestaande express applicatie. Deze applicatie bevat al een aantal routes en ejs bestanden. De bedoeling is dat je deze applicatie verder uitbreidt met extra functionaliteit. Je kan de starter applicatie hier vinden: Word Guess
Includes
- Maak een
header.ejsbestand aan dat de header van de pagina bevat (en de bovenkant van de html). - Maak een
footer.ejsbestand aan dat de footer van de pagina bevat (en de onderkant van de html). - Pas
index.ejsaan zodat deze deheader.ejsenfooter.ejsbevat. - Zorg dat elke ejs pagina vanaf nu de
header.ejsenfooter.ejsbevat.
Words Module
- Schrijf een functie
isFiveLetterWorddie controleert of een woord 5 letters lang is. Deze functie moet een boolean teruggeven. - Schrijf een functie
getFiveLetterWordsdie alle woorden van een meegegeven array teruggeeft die 5 letters lang zijn. Gebruik hiervoor defilterfunctie. Gebruik deisFiveLetterWordfunctie die je hiervoor gemaakt hebt. - Schrijf een function
toUpperCasedie een array van woorden omzet naar een array van woorden in hoofdletters. - Schrijf een functie
getRandomWorddie een willekeurig woord teruggeeft van een meegegeven array. - Plaats deze functies in een apart bestand
words.tsen zorg dat deze kunnen geimporteerd worden. - Vul de
createNewWordfunctie aan in deindex.tsfile die derandomWordvariabele invult met een willekeurig 5 letter woord uit dewordsarray.
Voorbeeld:
isFiveLetterWord('hello') // true
getFiveLetterWords(['hello', 'world', 'test', 'word']) // ['hello', 'world']
toUpperCase(['hello', 'world', 'test', 'word']) // ['HELLO', 'WORLD', 'TEST', 'WORD']
getRandomWord(['hello', 'world', 'test', 'word']) // 'world'
Words Route
- Maak een nieuwe
getroute voor het pad/words - Maak gebruik van de
toUpperCasefunctie van de vorige opgave om een array aan te maken van woorden in hoofdletters. Gebruik de al reeds aangemaakte arraywords. - Geef de array door aan een ejs bestand
words.ejs. - Toon de woorden aan de hand van een for lus en
<li>tags. - De woorden die geen 5 letters lang zijn geef je een rode kleur.

Words Form
- Maak een nieuwe
getroute voor het pad/guess. Zorg ervoor dat het deguess.ejspagina toont. - Maak een nieuwe
postroute voor het pad/guess. - Gebruik de al voorgemaakte
checkWordfunctie om te controleren of het woord correct is. Deze functie geeft dit aan met een kleuren code. Groen als de letter op de juiste plaats staat, geel als de letter wel in het woord zit maar niet op de juiste plaats en grijs als de letter niet in het woord zit. Geef het resultaat door aan de ejs pagina. - Toon elke letter van het woord dat je hebt ingegeven in het input veld als een
<span>. De background color van de<span>moet de kleur zijn die je hebt meegekregen van decheckWordfunctie. (letter 0 = kleur 0, letter 1 = kleur 1, ...) - Als je een woord dat geen 5 letters bevat toon je een foutmelding op de pagina. (Please enter a 5 letter word.)
- Als alle kleuren groen zijn toon je een succesmelding op de pagina. (Congratulations! You guessed the word.)

Restart Game
- Maak een nieuwe
getroute voor het pad/restart. - Zorg ervoor dat de
randomWordvariabele opnieuw wordt ingevuld met een willekeurig 5 letter woord uit dewordsarray. - Stuur de gebruiker terug naar de
/guesspagina. (redirect) - Voeg een link toe aan de
guess.ejspagina die de gebruiker naar de/restartroute stuurt. Toon deze enkel als het spel is afgelopen (bij success message).
Possible Words API
- Bij het opstarten van de web server moet de
WORDSarray gevuld worden met de woorden uit de API. Deze bevat een lijst van woorden die mogelijk geraden kunnen worden. Gebruik hiervoor een fetch op https://raw.githubusercontent.com/similonap/word-guess-api/main/words.json - Pas de code aan van de
guessPOST route zodat deze deWORDSarray gebruikt om te controleren of het woord in deze lijst staat. Geef een foutmelding als het woord niet in de lijst staat. WIOHR is een voorbeeld van een woord dat niet in de lijst staat. KRUID is een voorbeeld van een woord dat wel in de lijst staat.

Possible Words Search
- Pas de
/wordsroute aan zodat hij alleen de eerste 40 woorden van de WORDS array toont. - Voeg een query parameter
qtoe aan de/wordsroute. Als deze aanwezig is toon je enkel de woorden die deze query parameter bevatten. (bv. /words?q=hello) - Sorteer de woorden alfabetisch. Als je de query parameter
directionmeegeeft kan je de sorteer richting bepalen (asc of desc). - Voorzie een form op de
words.ejspagina die de gebruiker toelaat om te zoeken naar woorden. (GET request)
