Pour répondre à tes question techniques, au moins pour satisfaire ta curiosité
- Le programme est écrit intégralement en Scala. C'est un langage qui compile vers du bytecode java et est donc très facilement interopérable avec lui. La plupart du temps c'est transparent.
- Au sujet de la boucle évènementielle. Il n'y en a pas une à proprement parlé ou alors elle se situe dans les bibliothèque. Ce que je peux t'en dire:
Je tente de garder toute la logique du jeu dans le modèle, dans le package leval.core (common/src/main/scala/leval/core). Les messages/actions/évènements envoyés au modèle sont situés dans ce package dans le fichier Move.scala. Pour la boucle proprement dite, pour la partie réseau, je te renvoie vers les deux fichiers suivant :- client/src/main/scala/leval/network/client/MenuActor.scala l. 61 à 84
- server/src/main/scala/leval/network/server/GameMaker.scala l. 38 à 64
Coté client et interface graphique, le control observe le jeu. C'est le MenuActor qui applique les actions aux modèle et control est alors notifié et c'est la fonction allant de la ligne 293 à 473 qui est appelée :- client/src/main/scala/leval/gui/gameScreen/GameScreenControl.scala l.293 à 473