Un objet qui en crée un autre et reste lié [Résolu]

Signaler
Messages postés
38
Date d'inscription
mardi 29 octobre 2013
Statut
Membre
Dernière intervention
6 novembre 2014
-
Messages postés
38
Date d'inscription
mardi 29 octobre 2013
Statut
Membre
Dernière intervention
6 novembre 2014
-
Bonjour les gens !

petite question

j'ai une classe Joueur qui crée un objet Joueur :

Joueur J1 = new Joueur(String nom, String type, new Score());

info :
type est un String simple pour définir quel joueur est l'humain/Com.
Score est une classe qui crée des objets scores(point, set, Manche).

Question : est il possible de dire que l'obj score crée ici appartient a humain
est ainsi l'utilisé :
J1.score.setPoint();
J2.score.setPoint(); lobjet score est different pour J1 et J2

affiche J1 = 1 à J2 = 0

Ce qui me gène c'est de devoir donné une ref a chaque obj score.

Merci d'avance
Bonne soirée à tous

2 réponses

Messages postés
15060
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
11 juin 2021
94
Hello,
Vu l'appel de ton constructeur, c'est le joueur qui porte l'objet Score. Donc, si tu as 2 joueurs, tu auras 2 objet Score distincts...
C'est ce fonctionnement que tu veux?
Messages postés
38
Date d'inscription
mardi 29 octobre 2013
Statut
Membre
Dernière intervention
6 novembre 2014

Bonsoir BunoCS

oui c'est bien cela que je souhaite.
je vais tester je vais bien voir si cela fonctionne.

mais comment l'objet score sait qu'il appartient a J1 et pas à J2 ???

le fait de le créer par l'objet joueur ajoute une ref a cet objet ?
si oui peut ont la retrouver ?

Merci pour ton aide
Messages postés
38
Date d'inscription
mardi 29 octobre 2013
Statut
Membre
Dernière intervention
6 novembre 2014

Merci beaucoup !
ça fonctionne très bien :)

j'ai une dernière question pour la conception
je m'explique sur le principe :

1) je créer une partie de jeu pour cela je créer un objet partie avec les paramètre (nbr de coup jouer, nbr de joueur, ...)
2) l'objet partie ce construit avec les paramètre et crée les objet
- Joueurs
3) qui eux vont crée les objet
--Score

conclusion pour modifier mon score je fait partie.J1.score.setPoint();
par la suite je souhaite ajouter un écouteur sur score pour actualisé l'affichage des points.

pour le moment ça fonctionne (grâce vous) mais est ce que c'est la bonne solution

je garde le code comme ça ?
ou
il vaut mieux séparer l'objet partie de Joueur et score ?
ou
les rendre tous individuel ?
ou
Faire autrement ???

encore merci pour votre aide
(a l'issus je clôture le poste)
Messages postés
16361
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 juin 2021
122
Si on voulait le faire vraiment bien, on n'aurait pas les scores dans la classe Joueur, mais plutôt dans la classe Partie, même si je me doute que tu n'as pas forcément toutes les connaissances pour faire ça bien :

public class Partie
{
    private final Map<Joueur,Score> scores;

    public void ajouterPoint(Joueur joueur)
    {
        scores.get(joueur).ajouterPoint();
    }
}
Messages postés
38
Date d'inscription
mardi 29 octobre 2013
Statut
Membre
Dernière intervention
6 novembre 2014

Bonjour KX,

L'origine de mon problème c'est de faire un code qui utilise le Pattern MVC

je pose une fois pour toute le problème ou l'idée

Objectif faire un jeu Pierre feuille ciseaux

Les Class et leur contenue :

Class Jeu : contient le main() et lance l'interface.
Class Fenetre : contient le code IHM. Bouton [pierre][feuille][ciseaux]
Class TourDeJeu :
____instancie_____________________
objet Partie(nbr de tour, nbr de Joueur)
____exécute les commandes ________
-afficheCoupJoue(pattern observer)
-comparer les coups()
-ajoutePoint()
-actualiseScore(pattern observer),
-Thread2(testScoreAtteint())
-reInitScore()
-reStartGame())

Class Partie : instancie les Joueur et Score, CoupsJoue (Map?).
Class Joueur : contient le nom et le type(Humain/Com).
Class Score : contient les point, les pointSet.
Class CoupsJoue : contient dernierCoupJoue, coupsHasard.

voila la vision que j'ai pour le moment
Du coup avec l'objet MAP je peut joindre mes objet CoupsJoue et Score à la clé Joueur et ce serait mieux ?

la Class TourDeJeu est elle bien utile ?
toutes les méthodes peuvent être dans Partie ou Fenêtre ?

Merci beaucoup pour ces explications
Bonne journée
Messages postés
38
Date d'inscription
mardi 29 octobre 2013
Statut
Membre
Dernière intervention
6 novembre 2014

Re-Bonjour,

j'ai continué a chercher sur le net des info sur l'objet Map
et donc je tente de l'utilisé ainsi mais sans succès ...

j'ai donc modifier le constructeur de la Class Partie comme suite :
public class Partie {
	// variable
	private int nbrT;
	private int nbrS;
	private int nbrManche;
	private int nbrMatch;
	private int nbrSE;
	private int nbrJoueur;
	private Joueur J1;
	private Joueur J2;
	private Score scoreJ1;
	private Score scoreJ2;
	private final Map<Joueur, Score> scores;
	
	public Partie() {
		this.nbrT = 5;
		this.nbrS = 3;
		this.nbrManche = 3;
		this.nbrMatch = 1;
		this.nbrSE = 2;
		this.nbrJoueur = 2;
		scores = new HashMap<Joueur, Score>();
		scores.put(J1 = new Joueur("J1"), scoreJ1 = new Score(J1.getName()));
		scores.put(J2 = new Joueur("J2"), scoreJ2 = new Score(J2.getName()));
	}
}


Class Score
/// variable de Score
	protected String joueurName;
	protected int point;
	protected int set;
	protected int manche;
	protected int match;
	protected boolean adv;
	
	/// constructeur
	public Score(String name) {
		this.joueurName = name;
		this.point = 0;
		this.set = 0;
		this.manche = 0;
		this.match = 0;
		this.adv = false;
	}

	public void setPoint() {
		this.point += 1;
	}


Class main :
Partie partie = new Partie();
partie.scores.get(J1).setPoint();
// ou 
scores.get(J1).setPoint();
//ne fonctionne pas :(


je n'arrive pas a accéder au score dans l'objet
Mais pourquoi donc ???
Messages postés
38
Date d'inscription
mardi 29 octobre 2013
Statut
Membre
Dernière intervention
6 novembre 2014

arf c'est a cause de "private" je suis nul !