Threads avec liaisons de touches
Problème :
Vous souhaitez créer un jeu multijoueur dans lequel plusieurs joueurs peuvent déplacer leurs palettes à l'aide de différentes touches . Cependant, vous êtes confronté à des problèmes avec un seul joueur pouvant se déplacer à la fois.
Solution :
Pour résoudre ce problème, envisagez d'utiliser des raccourcis clavier pour attribuer des touches spécifiques à le mouvement de chaque pagaie. Cela permettra à plusieurs joueurs de contrôler leurs palettes indépendamment.
Reliures de touches :
Les liaisons de touches fournissent un mécanisme distinct pour gérer les entrées de touches, contrairement aux écouteurs de touches qui sont liés à des composants spécifiques. Ils vous permettent d'associer plusieurs touches à une seule action, ce qui est idéal pour les scénarios multijoueurs dans lesquels différents joueurs peuvent utiliser des claviers différents ou avoir des préférences de touches différentes.
Mise en œuvre :
-
Créer une classe KeyBindings : Cette classe servira de conteneur pour les raccourcis clavier et les actions correspondantes à être effectué.
-
Mapper les touches aux palettes : Créez un mappage entre des touches spécifiques et les palettes qu'elles contrôlent. Par exemple, utilisez les touches « W » et « S » pour déplacer la première palette de haut en bas, et les touches « Haut » et « Bas » pour la deuxième palette.
-
Ajouter des KeyBindings à GamePanel : Ajoutez les raccourcis clavier au composant GamePanel où le jeu est en cours de lecture. Cela permettra à la boucle de jeu de gérer les entrées au clavier en fonction des raccourcis clavier.
-
Gérer les événements clés : Dans la boucle de jeu, vérifiez les événements clés et exécutez les actions associées à la touche correspondante. liaisons. Cela permettra à chaque joueur de contrôler sa pagaie indépendamment.
Avantages des liaisons de touches :
-
Contrôles indépendants : Joueurs peuvent utiliser différentes combinaisons de touches pour déplacer leurs palettes, rendant le jeu équitable et accessible aux joueurs disposant de différents claviers mises en page.
-
Réactivité accrue : Les raccourcis clavier sont généralement plus réactifs que les auditeurs de touches, car ils ne sont pas liés à un focus spécifique et peuvent répondre aux événements clés même si la fenêtre de jeu n'a pas le focus .
-
Personnalisation plus facile : Les raccourcis clavier vous permettent de modifier facilement les combinaisons de touches associées à des actions spécifiques, ce qui le rend pratique pour que les joueurs puissent personnaliser leurs contrôles.
Concernant Collections.synchronizedSet(new HashSet()) :
Cette ligne de code crée un ensemble synchronisé d'entiers. Dans ce contexte, l'ensemble est utilisé pour stocker les touches actuellement enfoncées, et la synchronisation garantit que plusieurs threads peuvent accéder et modifier en toute sécurité l'ensemble sans provoquer de conflits.
SwingUtilities.invokeLater :
Cette méthode n'est pas pertinente pour l'extrait de code que vous avez fourni et n'est pas spécifiquement liée à l'utilisation de raccourcis clavier. Il est généralement utilisé pour garantir que le code est exécuté sur le thread de répartition des événements, qui est le thread GUI dans les applications Swing.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn