Hei og velkommen til Kordle! Kordle er et spill inspirert wordle, hvor en gjetter på et tilfeldig valgt ord. I denne workshoppen skal vi lage en serverapplikasjon som håndterer forespørsler fra en klientapplikasjon som viser GUI-en for spillet.
Alle oppgavene i denne workshoppen er laget for å bli løst innad i mappen som heter server og oppgavene finner en i mappa oppgaver.
- Du har 6 forsøk på å gjette et ord.
- Hvert ord er mellom 4 og 6 bokstaver langt.
- Hver gang du gjetter et ord, vil du få tilbakemelding på hvilke bokstaver som er riktige og hvor de er plassert.
Dette indikeres ved
- Grønn: Bokstaven er riktig og på riktig plass.
- Gul: Bokstaven er riktig, men er ikke på riktig plass.
- Sort: Bokstaven er ikke i ordet.
- Du kan ikke gjette ord som ikke er i ordlisten.
- Ved duplikate bokstaver i det gjettede ordet, vil du få tilbakemelding lik antall ganger bokstaven er i ordet.
F.eks: Dersom ordet er "etse" og du gjetter "test", vil du få tilbakemeldingen:
- Den første "t" er gul, da den er i ordet men ikke på rett sted.
- Den første "e" er gul, da den er i ordet men ikke på rett sted.
- Den første "s" er grønn, da den er i ordet og på rett sted.
- Den andre "t" er sort, da den er i ordet men en har allerede fått tilbakemelding på "t" i posisjon 1.
Intellij er en IDE (Integrated Development Environment) som er laget av JetBrains. Den er veldig populær blant Java-utviklere og har mange funksjoner som gjør det enklere å utvikle kode.
Dere skal allerede ha installert Intellij Community edition men hvis en ikke har det kan en laste det ned her.
Gradle er et byggverktøy som brukes til å bygge og kjøre prosjekter. Det er et alternativ til Maven, som er et annet populært byggverktøy. Gradle blir installert av Intellij som en del av prosjektet, så det er ikke nødvendig å installere det separat.
Kotlin kjører på JVM (Java Virtual Machine), så vi trenger Java for å kjøre Kotlin-koden vår.
Spring Boot er en utvidelse av Spring-rammeverket som hovedsakelig brukes for å lage backend-applikasjoner i Java/Kotlin. Springboot tilbyr mye funksjonalitet "out of the box", noe som gjør det lettere å kjapt lage en applikasjon som tilbyr verdi. Nevneverdig funksjonalitet som tilbys av Spring Boot er:
- Lett opprettelse av REST API-er
- Lett håndtering av sikkerhet på endepunkter
- God støtte for databaseoperasjoner
- Produksjon av metrikker for overvåking av applikasjonens bruk og ytelse
- Automatisk konfigurasjon av applikasjonen basert på miljøet den kjører i og mye mer!
Spring i denne workshoppen kan deles inn i 3 overordnede deler:
- Controllers, hvor vi definerer API'ene våre.
- Service, hvor vi vår interne foretningslogikk ligger
- Repository, som beskriver hvordan vi interagerer med persistente datakilder (les: databaser)
I oppgavene kommer vi til å gå mer i detalj på hvordan disse 3 delene ser ut.
H2 er en lettvekts database som er skrevet i Java. Den er enkel å bruke og
kan kjøres i minnet, noe som gjør den perfekt for utvikling og testing.
Databasen kan konfigureres til å kjøre på mange forskjellige måter, men i dette prosjektet lagres databasen som fil(er)
i mappen /database. Dette betyr at databasen er persistent på tvers av kjøringer, og at dataene ikke går tapt når
applikasjonen stoppes.
LWJGL3 (Lightweight Java Game Library) er et sett med Java-biblioteker som brukes til å lage spill og grafiske applikasjoner. I vårt prosjekt bruker vi LWJGL3 for å kjøre opp en skrivebordsapplikasjon som viser GUI-en (Graphical User Interface) for spillet.
- Sett opp prosjektet til å bruke Java 21
- Gå til
File->Project Structure->Project->SDKog velgtemurin-21. Dette er da Java versjon 21. - Hvis du ikke har Java 21 installert, kan du laste det ned via Intellij ved å:
- Gå til
File->Project Structure->Platform settings->SDKs - Klikk på
+-knappen og velgDownload JDK - På
Versionvelger du 21 og påVendorvelger duEclipse Temurin - Klikk
Downloadog vent til det er ferdig. - Når det er ferdig, velger du
temurin-21iFile->Project Structure->Project->SDK.
- Gå til
- Gå til
Når alt er klart, skal det se slik ut:

- Øverst til høyre i Intellij, ser en en dropdown-meny som inneholder kjøretidskonfigurasjoner. Inne i denne
dropdown-menyen har en to konfigurasjoner:
Frontend- Dette er for å kjøre skrivebordsapplikasjonen.Backend- Dette er for å kjøre serverapplikasjonen.
Dette skal se slik ut:
-
Kjør opp spring-applikasjonen ved å velge
Backendi dropdown-menyen og trykke på den grønne play-knappen. Dette vil da:- Starte opp en Spring Boot-applikasjon som lytter på port 8080.
- Starte opp vår H2-database på port
9090og laste inn en liste med gyldige ord som kan brukes i spillet.
-
Når serveren er oppe, kan en starte opp skrivebordsapplikasjonen ved å velge
Frontendi dropdown-menyen og trykke på den grønne play-knappen. Dette vil da:- Kjøre opp GUI-en for Kordle-spillet.
- Koble seg til backend-serveren vi nettopp startet opp.
-
I frontenden vil en se en feil at en ikke klarer å hente ut en tilfeldig oppgave fra serverne. Dette er forventet adferd og er noe vi håper at DU kan hjelpe oss med å løse! 😄
-
Kjør denne kommandoen i terminalen for å sjekke om serveren er oppe og kjører:
curl -X GET http://localhost:8080/healthHvis du får en respons som sier Kordle server is running, så er serveren oppe og kjører som den skal!
Nå er det bare å ta fatt på oppgavene! 🚀 Oppgavene finner du i mappa oppgaver nevner nok en gang at
oppgavene er laget for å bli løst innad i mappen server ❤️
Hvis det skulle være noen problemer eller utfordringer er det bare å rope ut, så kommer vi og bistår! 🏃💨
