Client Java
Choisit l'action d'un citoyen.
Un client Java qui pilote une petite tribu dans un jeu de stratégie : il observe la carte, envoie des commandes au serveur et automatise les premières tâches de survie.
Creeps est un exercice de programmation orienté jeu. Le serveur fournit un monde en deux dimensions dans lequel chaque joueur commence avec un bâtiment principal et deux citoyens. Le programme à développer joue le rôle de l'intelligence de la tribu.
Le rendu conservé communique avec ce serveur par HTTP. Il initialise une partie, récupère les rapports produits par les commandes et utilise la cartographie fournie pour rechercher des cases, déplacer les citoyens et exploiter des ressources.
Le serveur de jeu est fourni avec le sujet. Le code réalisé se concentre sur le client de stratégie : une commande est envoyée, puis son rapport est récupéré et enregistré afin d'enrichir la connaissance locale de la carte.
Choisit l'action d'un citoyen.
Envoie l'unité et l'opération au serveur.
Exécute l'action selon les ticks.
Les délais des actions ne sont pas codés en dur : le client lit leur coût dans la réponse d'initialisation et suit l'avancement du serveur via ses statistiques.
L'adresse, le port et l'identifiant sont reçus en arguments. La réponse du serveur fournit les deux citoyens de départ et le coût des commandes.
Les rapports d'observation alimentent Cartographer, utilisé
ensuite pour repérer les ressources et les cases constructibles.
Le client calcule le point connu le plus proche, déplace le citoyen sur les deux axes et peut poser des routes ou construire un foyer.
Le point d'entrée lance un thread pour chacun des deux citoyens. Le scénario principal les oriente vers la roche, puis vers le dépôt des ressources.
Initialisation, commandes, récupération des rapports, état du serveur et statistiques sont reliés à leurs routes REST avec Unirest et Jackson.
Les observations, déplacements et constructions sont enregistrés. Une recherche par distance sélectionne la ressource connue la plus proche.
Le rendu contient les déplacements, l'observation, la collecte, le déchargement et plusieurs opérations de construction.
Des fonctions existent aussi pour créer des unités, cultiver, démanteler, améliorer et tirer avec un bomber bot.
La présence d'une fonction de commande ne signifie pas qu'elle intervient dans le
scénario principal. Le parcours lancé par Program repose surtout sur
l'observation, la construction, la recherche de roche et la vérification des citoyens.
À intervalles réguliers, ce mécanisme supprime les bâtiments qui ne sont plus reliés à un Town Hall. Il impose donc de penser les routes comme un réseau continu, et pas comme de simples déplacements.
Le rush est évalué par des actions accomplies sur le serveur plutôt que par une suite de tests classique. Le développement avançait par itérations : chaque version visait un nouvel achievement, puis le code correspondant pouvait être remplacé ou retiré une fois l'objectif validé.
Un client Java découpé par actions, algorithmes et utilitaires, capable de dialoguer avec le serveur et d'orchestrer les deux citoyens initiaux en parallèle.
Mise en pratique d'une API REST, de la désérialisation JSON, du suivi d'un état distant et des premiers choix de synchronisation dans une stratégie concurrente.