Codé 100 % Scala + libGDX2D, for the culture.
« If DDR et osu! avaient un enfant polyglotte en Scala… » – Gontran
| 🎹 4 lanes | W A S D |
| ⬇️ Auto‑DL | Midi files depuis midis.triceratops.ch |
| 🏆 Leaderboard | scoring serveur |
| Touche | Lane | Couleur |
|---|---|---|
| W | 1 (haut) | Vert 💚 |
| A | 2 (gauche) | Jaune 💛 |
| S | 3 (bas) | Rouge ❤️ |
| D | 0 (droite) | Bleu 💙 |
Le timing est roi :
| Feedback | Fenêtre | Score |
|---|---|---|
| Perfect | ±50 ms | 300×combo |
| Good | ±120 ms | 100×combo |
| Miss | >120 ms | Combo reset |
graph TD
subgraph Desktop
Launcher -->|start| RhythmGame
end
subgraph UI
RhythmGame --> MainMenuScreen
RhythmGame --> GameplayScreen
end
MainMenuScreen -->|fetch list JSON| RhythmApi
MainMenuScreen -->|download .mid| MidiFiles
GameplayScreen --> NoteLoader
NoteLoader -->|parse| javax.sound.midi
- gdx2d : rendu 2D + portable window.
- RhythmApi : POST /register, /login, /score; GET /list, /leaderboard.
- NoteLoader : convertit ticks MIDI → positions circulaires « bullet‑hell ».
- InstrumentExtractor : Choix de l'instrument à l'utilisateur
libraryDependencies ++= Seq(
"org.json4s" %% "json4s-jackson" % "2.13",
"org.json4s" %% "json4s-native" % "2.12",
)Apache License 2.0

