Een chaotisch, grappig spel over sorteren geschreven in Kotlin met JavaFX, waarin apen fruit sorteren.
Monkeysort is een simulatiespel waarin een 2D-raster gevuld met fruit, waar je aapjes aan het werk zet om het grid te sorteren. In eerste instantie gebruiken de apen de meest inefficiรซnte sorteermethode die er is: Bogosort (ook wel bekend als "Monkeysort"). Naarmate je voortgang boekt en munten verzamelt, kun je upgrades kopen zoals slimmere algoritmes en extra apen om je te helpen.
MacOS:
- 2D-raster (standaard: 25x25) gevuld met fruit emoji's
- Start met Bogosort: fruit wordt willekeurig gehusseld.
- Na elke game-tick:
- Controle of het fruit alfabetisch gesorteerd is
- Detectie van combo's 3-of-meer-op-een-rij fruitcombinaties (horizontaal of verticaal)
- Verkijgen van munten voor combo's
- Upgrade systeem:
- ๐ง Ontgrendel betere sorteeralgoritmes (zoals Bubble Sort en Insertion Sort)
- ๐ต Koop meer apen voor asynchrone sorting en snellere voortgang
- Game-tick loop: elke tick voert een shuffle uit, controleert sorteerstatus en verwerkt combinaties
- Modulaire code, klaar om uit te breiden
- ๐จ UI met JavaFX en animaties
Dit project gebruikt Gradle voor de build en uitvoering van de applicatie.
- Java 17+
- Kotlin
- JavaFX (zou automatisch moeten worden opgehaald via Gradle)
- Mac of Windows
Met het zelf gemaakte Gradle-commando runApp kun je de applicatie builden en uitvoeren als een zelfstandige (self-contained) applicatie:
./gradlew runAppDeze taak maakt een uitvoerbaar bestand afhankelijk van je besturingssysteem:
- macOS:
.app - Windows:
.exe
Dit is handig om het spel te verspreiden of als eindgebruiker te gebruiken zonder afhankelijkheden.
De oorspronkelijke command ./gradlew run is nog steeds beschikbaar voor ontwikkeling, maar pakt de applicatie niet in een self-contained bestand.
Gebruik dit commando om de app te compileren en starten (zonder bundling):
./gradlew runVoor de geschreven testen met JUnit en TestFX kun je de volgende opdracht gebruiken:
./gradlew testDe testresultaten worden door JaCoCo gegenereerd en opgeslagen in de build/jacoco/test/html/index.html directory. Als alles goed word uitgevoerd zou de test coverage boven de 90% zijn.
Test op: 12-juli-2025 - MacBook Pro - Sequoia 15.5
- Kotlin
- JavaFX
- JUnit 5
- TestFX
- JaCoCo
- Gradle
src/main/kotlin/com/segerend: Broncode van het spelsrc/test/kotlin/com/segerend: Unit tests met JUnit en TestFXsrc/main/resources/: Assets zoals afbeeldingenbuild.gradle.kts: Gradle configuratie
Monkeysort.Showcase.Video.mov
Veel plezier met de apen te laten sorteren! ๐๐ฅ๐