Bonjour,
L'objectif : Réaliser un puissance 4 qui graphiquement se compose d'un gridlayout decomposé en petit Jpanel.
On sait qu'on peut identifier le Jpanel par un indice (qui est affecté au moment de la création du gridlayout).
Dans un puissance 4, (différent du morpion), au moment du clique sur la zone, il faut que le rond se dessine en bas (vu que ça tombe).
J'ai réussi à modifier l'indice du Jpanel (où on clique), par contre lors de l'appel à la fonction repaint() (qui ne fait que de dessiner un rond par exemple).
Celui-ci se dessine toujours la où le clique de la souris s'effectue sur l'écran malgrès le changement d'indice.
Comment faire pour dessiner à l'endroit du nouvel indice.
Le programme se compose de trois classes :
- Fenetre : elle crée la grille composée d'un nombre donnée de Jpanel
- ZoneGraphique (extends Jpanel) : C'est le petit carré dans la grille, et c'est la qu'on défini paintComponent() qui fait le dessin des ronds par ex.
- Partie : où il y a la gestion du jeu (comme par exemple rechercher le nouvelle indice), c'est ici qu'on change l'indice et qu'on appelle repaint.
Il faut savoir que l'interface graphique s'appuie sur un tableau à 2D pour la gestion du jeu.
En gros :
clique sur une case (une ZoneGraphique) >>> changement de l'indice courant grâce à une fonction dans Partie >>> Appel à repaint avec ce nouvel
indice
L'indice change bien (on a vérifié, ZoneGraphique.GetIndice() renvoi bien le nouvel indice) mais le dessin se fait toujours au même endroit (comme si la souris reprennait l'indice original)