Salut !
Pour lier la map au joueur ce que tu peux faire c'est assigner une location au joueur, par exemple avec une classe Location que tu instancierais. La location dans chaque joueur correspondrait aux coordonnées du joueur dans le tableau de la map (puisque ça a l'air d'être un tableau à deux dimensions).
Grâce à ça, lorsque tu veux afficher ta map dans une boucle (ou après le tour de chaque joueur si c'est tour par tour), tu aurais juste à lire la location de chaque joueur pour l'afficher au bon endroit avec une superposition ou juste en remplaçant la case correspondante du tableau.
Si tu arrives à écrire ça, il te suffira de modifier l'objet location contenu dans chaque joueur pour que sa position s'affiche correctement lorsque tu décide d'afficher la map.
Pour faire en sorte qu'il y ait un ou plusieurs joueurs en tour par tour c'est simple: tu as juste à demander l'action du joueur concerné à son tour dans le même terminal.
Si tu veux que plusieurs joueurs puissent se déplacer en parallèle et en temps réel, c'est intéressant d'utiliser des fonctionnalités réseau mais ça peut être un peu complexe comparé à ce que tu cherches à travailler, d'autant plus que ça va t'obliger à écrire deux programmes: un pour les clients et un pour le serveur. Si tu es vraiment intéressé par cette solution à l'avenir, il te faudra vraiment une formation sur le parallélisme et l'utilisation de sockets. Pour écrire des logiciels en réseau en Java je te conseille le framework Netty (JVC m'empêche de mettre des liens mais une simple recherche google du nom te permettra de trouver ce dont tu as besoin). Si Netty est un peu lourd et long à maîtriser, c'est un outil idéal pour faire du multijoueur par exemple.
Une autre solution un peu moins complexe mais toujours difficile à mettre en place, c'est d'utiliser un WatchService sur deux fichiers: ton programme va constamment attendre que deux fichiers de ton choix soient écrits (joueur1 et joueur2) et lorsque l'un deux est écrit avec l'action du joueur le fichier est vidé et il recommence à écouter. Ça nécessite tout de même quelques notions en parallélisme (threads) et ce sera peu ergonomique pour les joueurs.
Encore une autre solution mais qui nécessite de paralléliser tes actions (ou écrire deux programmes, un pour les joueurs et un pour le jeu) est d'utiliser les tubes anonymes. Ce sont comme des fichiers qui te permettent de communiquer entre processus ou threads (ce sont des flux).