[Java] threads et jeu
isley
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
sandul Messages postés 3927 Date d'inscription Statut Membre Dernière intervention -
sandul Messages postés 3927 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je rencontre actuellement une difficulté pour débuter un exercice : en effet, cet exercice consiste à créer des joueurs (d'une classe joueur), et une balle (d'une classe balle) et dès qu'un joueur se trouve près d'un autre joueur, celui-ci passe la balle à cet autre joueur (ceci est géré par un système de coordonnées)
Or pour cet exercice, je suis amenée à utiliser des threads en Java, seulement, même après lecture d'exemples simples sur google, je ne vois pas quelques points :
- comment affecter la balle à un joueur
- comment faire la passe de la balle de joueur en joueur
- quelle est la place des threads, et dans quel cas les utiliser?
bien évidemment, je n'attends pas une réponse toute faite, mais quelques pistes afin de pouvoir démarrer.
merci
Isley
Je rencontre actuellement une difficulté pour débuter un exercice : en effet, cet exercice consiste à créer des joueurs (d'une classe joueur), et une balle (d'une classe balle) et dès qu'un joueur se trouve près d'un autre joueur, celui-ci passe la balle à cet autre joueur (ceci est géré par un système de coordonnées)
Or pour cet exercice, je suis amenée à utiliser des threads en Java, seulement, même après lecture d'exemples simples sur google, je ne vois pas quelques points :
- comment affecter la balle à un joueur
- comment faire la passe de la balle de joueur en joueur
- quelle est la place des threads, et dans quel cas les utiliser?
bien évidemment, je n'attends pas une réponse toute faite, mais quelques pistes afin de pouvoir démarrer.
merci
Isley
A voir également:
- [Java] threads et jeu
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- 94 jeu - Télécharger - Puzzle & Réflexion
2 réponses
Hi there,
Voici un début d'analyse. Nous avons 2 classses, Player et Ball. On peut considérer qu'un joueur possède ou ne possède pas la balle à un moment donné. Une première idée serait d'avoir un truc du genre
class Player {
Ball ball;
...
}
i.e. pouvoir préciser pour chaque joueur l'instance de la balle associée (si le joueur n'a pas de balle à un moment donnée, nous aurons ball à null).
Mais il y a plusieurs joueurs et une seule balle ==> la représentation ci-dessus n'est peut-être pas optimisée. Une seule balle ==> on applique le singleton pattern pour la classe Ball. Et tout ce dont nous avons besoin pour un joueur donné est maintenant un boolean, hasBall.
Le jeu se joue en 2D => faut prendre en compte les positions aussi. Rajouter donc un couple de double x, y à la classe Player. La classe Ball n'en a pas besoin (si on se résume à faire ce que tu décris)
Maintenant, il y a des passes... Faut faire une analyse pour voir où on peut rajouter une méthode passer: est-ce mieux une méthode passTheBallTo (Player aPlayer) au niveau de la classe Player ou bien une méthode genre changePlayer (Player aPlayer) au niveau de la classe Ball ? Je te laisse cette analyse.
++
Voici un début d'analyse. Nous avons 2 classses, Player et Ball. On peut considérer qu'un joueur possède ou ne possède pas la balle à un moment donné. Une première idée serait d'avoir un truc du genre
class Player {
Ball ball;
...
}
i.e. pouvoir préciser pour chaque joueur l'instance de la balle associée (si le joueur n'a pas de balle à un moment donnée, nous aurons ball à null).
Mais il y a plusieurs joueurs et une seule balle ==> la représentation ci-dessus n'est peut-être pas optimisée. Une seule balle ==> on applique le singleton pattern pour la classe Ball. Et tout ce dont nous avons besoin pour un joueur donné est maintenant un boolean, hasBall.
Le jeu se joue en 2D => faut prendre en compte les positions aussi. Rajouter donc un couple de double x, y à la classe Player. La classe Ball n'en a pas besoin (si on se résume à faire ce que tu décris)
Maintenant, il y a des passes... Faut faire une analyse pour voir où on peut rajouter une méthode passer: est-ce mieux une méthode passTheBallTo (Player aPlayer) au niveau de la classe Player ou bien une méthode genre changePlayer (Player aPlayer) au niveau de la classe Ball ? Je te laisse cette analyse.
++
[Edit] Pas répondu à la question concernant les threads... Il paraît approprié d'avoir chaque instance de la classe Player coordonnée par son propre thread. Un joueur bouge ==> tu peux donc, au niveau de chaque thread, avoir un algorithme de mouvement pour modifier les coordonnées du joueur dans le temps.
Avoir également une méthode qui va s'exécuter toutes les x millisecondes pour déterminer si un cas de proximité existe (existe-t-il un joueur suffisamment près d'un autre pour pouvoir lui passer la balle)? Cette méthode peut vivre dans son propre thread (et faire la vérif de toutes les paires de 2 joueurs à chaque exécution) ou bien dans chaque thread associé à un joueur (et dans ce cas il y aura la vérification par rapport aux position des autres (N-1) joueurs. Je te laisse égalament le soin de vérifier quelle est le meilleur choix pour cette methode.
++
Avoir également une méthode qui va s'exécuter toutes les x millisecondes pour déterminer si un cas de proximité existe (existe-t-il un joueur suffisamment près d'un autre pour pouvoir lui passer la balle)? Cette méthode peut vivre dans son propre thread (et faire la vérif de toutes les paires de 2 joueurs à chaque exécution) ou bien dans chaque thread associé à un joueur (et dans ce cas il y aura la vérification par rapport aux position des autres (N-1) joueurs. Je te laisse égalament le soin de vérifier quelle est le meilleur choix pour cette methode.
++