Åpne i Eclipse Che workspace: Eclipse Che
Catan er en spill app basert på brettspillet "Settlers of Catan". Appen lar brukere registrere bruker, logge inn med brukernavn og passord, og spille med andre. Brukere har også tilgang til et chatfunksjon som lar de kommunisere med hverandre.
Catan er mappen i kodelageret som utgjør kodingsprosjektet.
Catan består foreløpig av 6 hovedmoduler: core, ui, persistence, api_client, shared og springboot. Disse modulene omhandler respektivt spillmekanikk, brukergrensesnitt, datahåndtering, og håndtering av webserver og API-tjenester.
- Core-modulen inneholder spillmekanikken, dette vil si logikk knyttet til spillreglene og hvordan spillet skal spilles.
- UI-modulen inneholder FXML og CSS for de ulike sidene i appen, og tilknyttet logikk for håndtering av interaksjon mellom bruker og ui-elementer.
- Persistence-modulen inneholder logikk for håndtering, validering og lagring/henting av brukerinformasjon og spilldata, samt lagring og lesing fra filer. Denne ble brukt for å lagre og validere informasjon på klientsiden før vi fikk implentert REST-api. Nå brukes den hovedsakelig bare av springboot for lesing eller skriving til fil.
- Springboot-modulen inneholder logikk for å håndtere API-tjenester for registrering og henting av brukerinformasjon, samt feilhåndtering. Tilbyr REST-endepunkter for å kommunisere med server og administere JSON-filer som lagres på serveren. Håndterer også globale feil og returnerer dem som HTTP-responser til klient. Håndterer også meldinger gjennom websockets og broadcaster dem til clientene koblet til samme game.
- API-modulen håndterer kommunikasjonen mellom klienten og serveren. Denne fungerer som et mellomledd mellom brukergrensesnittet og spill-logikken. Den sender spillstatus, terningkast og andre handlinger til serveren via HTTP-forespørsler eller WebSocket. Den håndterer også sanntidsoppdateringer og meldinger fra serveren.
- Shared-modulen inneholder felles datastrukturer og logikk som brukes av både klient og server. Dette sikrer at dataformater som ServerRequest og GameStateRequest er konsekvente. Den tilbyr også funksjonalitet for serialisering og deserialisering av spilltilstand, slik at data kan overføres mellom server og klient.
I tillegg til hovedmodulene, inneholder Catan prosjektet:
- report folder generer og lagrer rapporter, som for eksempel for testdekning fra jacoco, samt eventuelle andre kvalitetsrapporter som checkstyle eller spotbugs. Denne henter og lagrer informasjonen fra alle moduler, mapper og filer.
- config folder inneholder konfigurasjonsfiler som brukes av ulike verktøy og plugins, som for eks. checkstyle og spotbugs.
-
dokumentasjons-mappe inneholder brukerhistorier og dokumentasjon til hver release av prosjektet.
-
Lenke til kodingprosjektets README.md: README
-
Lenke til brukerhistorier: brukerhistorier
-
Dokumentasjon for release 1: Release1.md
-
Dokumentasjon for release 2: Release2.md
-
Dokumentasjon for release 2: Release3.md
Under har vi laget et klassediagram for core-modulen. Dette klassediagrammet viser de viktigste klassene i core modulen, interaksjonen mellom de ulike klassene i core og et par viktige interaksjoner mellom api_client og core modulen, og viktige interaksjoner mellom UI modulen og core modulen. Årsaken til at klasser i core-modulen bare viser metoder og ikke 'fields' eller 'properties' er at vår kodelager i core-modulen er veldig stor, og klassene har veldig mange metoder, felt og properties. Videre har vi også flere enum-klasser og klasser som extender andre klasser. Derfor har vi ikke inkludert alt for å unngå rot og en uforståelig diagram.
Testresultatene ligger i følgende mappe: Test Resultater
For å undersøke resultatene kan man:
- Kjøre kommandoen
mvn test
for å kjøre testene, ellermvn clean install
hvis man ønsker å bygge prosjektet samtidig. - Åpne html filen index.html i browseren.
- Java: 17.0.8
- Maven: 3.9.9
- Logback: 1.5.8 (for logging)
- SLF4J 2.0.15 (for logging)
- JUnit Jupiter: 5.10.0 (for testing)
- Mockito: 4.1.0 (for mocking)
- SpotBugs: 4.7.3.2 (kodeanalyse)
- Checkstyle: 3.2.0 (kodeanalyse)
- Tyrus Standalone Client (for websocket client)
-
Klon prosjektet til en mapper på datamaskinen din.
-
I rotmappen, gå inn i prosjektmappen ved å kjøre kommandoen:
cd catan
i terminalen. -
Sørg for at du har riktig versjon av java (17.0.8) ved å kjøre kommandoen
java -version
og sørg for at maven bruker denne versjonen ogsåmvn --version
. -
Kjør
mvn install
ellermvn clean install
for å bygge og kjøre tester for prosjektet.- For å kun bygge prosjektet, kjør kommandoen:
mvn compile
.
- For å kun bygge prosjektet, kjør kommandoen:
-
For å kjøre springboot-serveren, kjøre kommandoen:
mvn -f springboot/restserver/pom.xml spring-boot:run
. -
For å kjøre applikasjonen, kjør kommandoen:
mvn -f ui/pom.xml javafx:run
, eller gå inn i UI-modulen med cd ui og kjør kommandoen: ```mvn javafx:run``. -
Merk at applikasjonen krever at serveren kjører i en egen terminal for å kunne kommunisere med hverandre.
-
I rotmappen, gå inn i prosjektmappen ved å kjøre kommandoen:
cd catan
i terminalen. -
Sørg for at du har riktig versjon av java (17.0.8) ved å kjøre kommandoen
java -version
og sørg for at maven bruker denne versjonen ogsåmvn --version
. -
Kjør
mvn clean package
ellermvn clean install
for å bygge og kjøre tester for prosjektet. -
Steg 4 er nødvendig for dette steget.
-
For å shippe applikasjonen, kjør kommandoen:
mvn -f ui/pom.xml jpackage:jpackage
, eller gå inn i UI-modulen med cd ui og kjør kommandoen: ```mvn jpackage:jpackage``. -
Executable installereren vil ligge i UI sin
target/dist
. Kjør executabelen og plasser den hvor du vil. -
Deretter kjør applikasjon, med server som kjører i en annen