Skip to content

MoaKK/CatanBoardGame

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Catan

Åpne i Eclipse Che workspace: Eclipse Che

Introduksjon

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.

Arkitektur

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.

Andre lenker

Testresultater

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.

ModuleDiagram

Testresultatene ligger i følgende mappe: Test Resultater

For å undersøke resultatene kan man:

  1. Kjøre kommandoen mvn test for å kjøre testene, eller mvn clean install hvis man ønsker å bygge prosjektet samtidig.
  2. Åpne html filen index.html i browseren.

Krav for å kjøre prosjektet

Nødvendige versioner av Java og Maven:

  • Java: 17.0.8
  • Maven: 3.9.9

Andre avhengigheter:

  • 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)

Hvordan kjøre programmet

  1. Klon prosjektet til en mapper på datamaskinen din.

  2. I rotmappen, gå inn i prosjektmappen ved å kjøre kommandoen: cd catan i terminalen.

  3. 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.

  4. Kjør mvn install eller mvn clean install for å bygge og kjøre tester for prosjektet.

    • For å kun bygge prosjektet, kjør kommandoen: mvn compile.
  5. For å kjøre springboot-serveren, kjøre kommandoen: mvn -f springboot/restserver/pom.xml spring-boot:run.

  6. 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``.

  7. Merk at applikasjonen krever at serveren kjører i en egen terminal for å kunne kommunisere med hverandre.

Hvordan shippe programmet

  1. I rotmappen, gå inn i prosjektmappen ved å kjøre kommandoen: cd catan i terminalen.

  2. 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.

  3. Kjør mvn clean package eller mvn clean install for å bygge og kjøre tester for prosjektet.

  4. Steg 4 er nødvendig for dette steget.

  5. 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``.

  6. Executable installereren vil ligge i UI sin target/dist. Kjør executabelen og plasser den hvor du vil.

  7. Deretter kjør applikasjon, med server som kjører i en annen

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •