/lernia-wordle

Primary LanguageJavaScript

Ordspel, inlämning 1: Testade algoritmer

Denna uppgift går ut på att skriva en (eller två om så önskas) centrala algoritmer i ett spel inspirerat av “Wordle”, samt test för dessa.

Uppgiften

I denna kurs ska ni bygga ett spel inspirerat av det populära spelet “Wordle”. Det första steget är att skriva den algoritm som utgör de centrala spelreglerna i spelet. Reglerna kan sammanfattas såhär:

Spelet väljer ut ett ord med (vanligtvis) fem bokstäver. Spelaren ska gissa vilket ord det är genom att mata in något ord. Om ordet är korrekt har spelaren vunnit. Om det är fel ord ger spelet feedback som indikerar huruvida några bokstäver i det gissade ordet finns med i det hemliga ordet, och huruvida spelaren placerat dem på rätt plats. Spelaren gissar sedan på nytt.

Den här uppgiften handlar inte om att bygga hela spelet, utan den centrala algoritm som kontrollerar om användaren placerat rätt bokstäver på rätt plats.


Moment

  • Utforma en lösning på algoritm A nedan
  • Tänk igenom och utforma en teststrategi för algoritmen
  • Implementera algoritmen i form av en funktion
  • Skriv minst två tester, troligtvis fler, som verifierar att funktionen - fungerar som den ska
  • Dokumentera er teststrategi med kommentarer i testkoden
  • Om du vill, upprepa allt för algoritm B (valfritt, men fungerar som underlag för bedömning av kursens helhet)

Algoritm A – feedback

Denna funktion definierar reglerna för den feedback spelet ger när spelaren gissar ett ord. Den ska uppfylla följande kriterier:

  • Inputs: Två ord (två textsträngar)
    • Ett ord som är gissningen
    • Ett ord som är det korrekta ordet
  • Funktionalitet: Kontrollera vilka bokstäver från det ena ordet som förekommer i det andra och i så fall var
  • Output: En array med objekt, ett för varje bokstav i samma ordning som de förekommer i det gissade ordet, med följande attribut:
    • letter (bokstaven)
    • result (ett av följande värden)
      • ‘incorrect’: Finns inte med i det andra ordet
      • ‘misplaced’: Finns med i det andra ordet, men på annan plats
      • ‘correct’: Korrekt plats i det andra ordet

Exempel:

Orden “CYKLA” (utvalt) och “HALLÅ” (gissning) skulle ge följande tillbaka:

  • H / incorrect
  • A / misplaced
  • L / incorrect (eftersom det redan finns ett korrekt L)
  • L / correct
  • Å / incorrect

Algoritm B – val av ord (frivillig, krävs ej för godkänt)

Denna funktion är spelets sätt att välja ut ett ord att spela med. Den ska uppfylla följande kriterier:

  • Inputs:

    • En lista med ord
    • En siffra som anger önskad längd
    • En indikation på huruvida samma bokstav får förekomma mer än en gång i ordet, eller om alla bokstäver måste vara unika
  • Funktionalitet:

    • Välj slumpmässigt ut ett ord ur listan som uppfyller kriterierna i de övriga parametrarna
    • Hantera på något väldefinierat sätt situationen som uppstår när inget passande ord finns
  • Output: Det slumpmässigt utvalda ordet


Inlämning

Uppgiften lämnas in genom att koden publiceras på GitHub och en länk till repot skickas in via ItsLearning. Följande kriterier ska vara uppfyllda:

  • Inga dependencies
  • För varje algoritm (minst A, potentiellt både A och B) ska följande finnas:
    • En modul med något passande namn
    • En testfil med motsvarande namn
    • Testfilen ska innehålla dokumentation i form av kommentarer som beskriver strategin, alltså på vilket sätt testerna är heltäckande
  • Test ska gå att köra med “npm test”

Betygskriterier

På denna uppgift kan man få betygen underkänt eller godkänt.

Betyg Godkänd

Enligt kursplanen: För att få betyget Godkänt (G) ska den studerande ha genomfört kursen och nått alla kursens läranderesultat.

Det betyder för denna uppgift:

  • Algoritm A är implementerad enligt momenten ovan
  • Källkod redovisad via GitHub
  • Algoritmen följer specifikationen
  • Algoritmen testas heltäckande med minst två tester