Je suis débutant à l'aide

Fermé
Novice++ Messages postés 2 Date d'inscription lundi 25 février 2013 Statut Membre Dernière intervention 25 février 2013 - 25 févr. 2013 à 14:05
 Novice++ - 26 févr. 2013 à 12:02
Bonjour,

Je commence à peine le java et j'ai un petit soucis le voici en quelques mots.

Je suis en train de programmer un jeu d'échec, voici la méthode que j'ai choisi:
l'objet échiquier connait la position de mes pièces
l'objet plateau est un gridlayout de 64 case
l'objet case hérite de canvas.

Voila mon problème, chaque case détecte l'enfoncement de la souris, mais je n'arrive pas a faire remonté l'info au plateau du coup impossible de demander à l'échiquier de me renvoyer la pièce présente sur la case GRRRRRRRRRR.

Une petite idée ou explication d'une erreur de ma part serai le bienvenue.

Merci d'avance


2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
25 févr. 2013 à 14:22
"l'objet plateau est un gridlayout de 64 case"
Attention aux confusions ! Le GridLayout permet de gérer la mise en forme des Component dans le Container, mais les Layout ne sont pas des Component eux même, ils ne possèdent pas eux même les Component, qui doivent eux être stockés dans un Container (un JPanel par exemple).

Il faudrait que tu lies ton objet échiquier à ton objet plateau, par exemple en le passant en paramètre du constructeur :

private final Echiquier ech;

public Plateau(Echiquier echiquier)
{
    ech = echiquier;
    ...
}

Comme cela lorsque tu as ton action de clic sur la case, tu peux directement utiliser les méthodes de ta classe Echiquier.
En supposant que tes différentes cases sont dans une matrice cases[8][8], et que tu veux utiliser une méthode "selection" sur ton Echiquier, alors tu devrais avoir quelque chose comme ça :

cases[i][j].addMouseListener(new MouseListener()
{
    public void mouseClicked()
    {
        ech.selection(i,j); // code qui indique à l'échiquier quelle case a été cliquée
    }
    
    ...
});
0
Bonjour,

j'essaye ça ce soir et reviens vers le forum si j'ai de nouveau un problème.

Merci.
0