benjarobin a écrit : ↑jeu. 25 mai 2017, 18:44Il y a une erreur de conception dans le programme Java. Tu n'as le droit d’interagir avec l'interface graphique que depuis le thread principal. Il est interdit de modifier des éléments graphiques depuis d'autres threads
Pas exactement. Ton thread principal est censé en lancer un autre dédié au graphique et tout se passe dans ce dernier... en théorie.
Dakyne a écrit : ↑jeu. 25 mai 2017, 19:54
D'après toi, j'ai pas de solution sans laisser tomber java ?
Tout dépend des spécifications, de ce qu'on souhaite obtenir (client/serveur léger ou lourd ? applet ? application ?), de ce que tu as à disposition (tu as un squelette, des impératifs ou tu pars de zéro ?)...
Techniquement tout peut être fait en pur swing, voire java2D, je ne pense pas qu'aller plus loin présente de l'intérêt (le fond du programme ne pose pas de problèmes en soi, au delà de la conception, voir plus bas ; sur le fond par contre java n'est pas vraiment adapté à faire du jeu même s'il existe des contre-exemples et que pas mal d'API existent: on se tourne vers du C++/Qt en effet, ne serait-ce que pour des questions de performance).
Un petit condensé de ce qu'il est possible d'utiliser:
https://openclassrooms.com/forum/sujet/ ... java-18410
Je ne vais pas m'étendre sur le sujet, mais pour avoir parcouru votre code rapidement, j'ai souri...
Sur le fond, un Indice pour développer différemment: ce n'est pas parce que le terrain de jeu est un espace en deux dimensions (ou plus) qu'il est nécessaire d'avoir une représentation en mémoire de chaque case à tout instant (en gros: tu n'as pas besoin d'une matrice, à plus forte raison car ce type d'objets est lourd et peu performant... ce ne sont pas les moyens de gérer des listes ou des collections qui manquent en java: facilité d'accès, de manipulation, d'opérations). Et pousser l'analyse plus loin (quid de mon projet actuel si je dois passer à 3 dimensions... je peux te garantir qu'en l'état tu vas souffrir
). Pas évident à réaliser d'entrée puisqu'il y a l'influence du résultat graphique justement.
Mais pour bien concevoir ton projet, il faut dissocier l'interface graphique («trivial» à réaliser) du cœur du fonctionnement. En gros, «comment je fais fonctionner mon joujou sans une once de graphique ? » «et si je veux tout changer graphiquement ? » etc. (idéal pour tester pas à pas : une fois le fonctionnement garanti, le graphique n'est plus «que» de l'habillage ) Y a une tentative de ça sur ce que je vois, faut juste la pousser un peu plus loin...
Mais au delà de ça (l'analyse et la conception demandent de la réflexion, du temps et de l'expérience... on te demande forcément de produire quelque chose mais rien ne t'empêche de dire également ce qui te chagrine, ce que tu aurais voulu pousser plus loin, etc..), surtout une chose essentielle: commenter et nettoyer votre code, c'est impératif.