[Java] threads et jeu

Fermé
isley Messages postés 20 Date d'inscription jeudi 21 août 2008 Statut Membre Dernière intervention 14 novembre 2009 - 17 sept. 2009 à 11:55
sandul Messages postés 3927 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 - 17 sept. 2009 à 15:06
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
A voir également:

2 réponses

sandul Messages postés 3927 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 723
17 sept. 2009 à 14:49
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.

++
0
sandul Messages postés 3927 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 723
17 sept. 2009 à 15:06
[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.

++
0