Bonjour tout le monde,

Je viens vous demander un coup de main concernant mon jeu de dames.
J'ai donc développé un petit jeu de dames et je me trouve face à un problème dans la dernière partie de mon développement, j'ai réalisé la partie fonctionnelle du programme, c'est à dire, placement des pions, mouvement, saut d'un pion adverse et rafle.
Le tout est codé et fonctionne, le souci est que j'ai opté dans un 1er temps pour une représentation de mon Damier en console, l'objectif est de réaliser une interface graphique.
Faire une fenêtre avec une partie damier et une partie affichage des infos est très simple, du coup j'ai la partie fonctionnelle et la partie visuelle, mon gros problème est de faire le lien entre les 2 parties.
Je n'arrive pas a appliquer la logique de mouvement de pion de mon damier en console avec un damier en interface graphique... même après plusieurs jours de recherche!
Je viens donc vers vous pour que vous puissiez me donner des pistes et savoir si la logique appliqué pour mon damier en console est applicable pour mon IG !?

Je suis parti sur un tableau 2D de string et je joue avec les coordonnés pour déplacer mes pions (en console).
Je pensais faire de même avec des JLabel mais je n'arrive a rien ! Je reste dispo si il faut d'autres précision sur ma façon de faire.
Je vous poste les méthodes utiles pour la compréhension du problème.

Création tableau, remplissage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
	public Plateau(int l, int c){		
		nbLigne = l;
		nbCol = c;		
		plateau = new String[nbLigne][nbCol];
 
		for(int i=0; i<nbLigne; i++){
			for(int j=0; j<nbLigne; j++){				
				plateau [i][j] = " - ";				
			}					
		}		
	}
 
	public void afficher(){
		for(int i=0; i<nbLigne; i++){
			for(int j=0; j<nbCol; j++){				
				System.out.print(" | " + plateau[i][j]);				
			}
			System.out.println(" | ");
		}
		System.out.println();
	}
Placement des pions:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	public void placerPion(int l,int c, String string){		
 
		l = l-1;
		c = c-1;
 
		if ( l<0 || c<0 || l>nbLigne || c>nbCol ){  // Test si on est bien sur le damier
			System.out.println("Error!");
			return;
		}
		if ( plateau[l][c] == " - "){
			 plateau[l][c] = string;
		}
		else{
			System.out.println("Error! Cette zone est occupé ");
		}		
	}
Méthode déplacement haut/droite :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public void deplacerPionBlancDiagDroiteHaute(String numPion){	// Pav num 9 		
	String tmp;
		for(int i=0; i<nbLigne; i++){
			for(int j=0; j<nbCol; j++){			
				if(plateau[i][j].equals(numPion)){ 											// Recherche du pion blanc
				try{
					if(i-1 < 5 && j+1 < 5 && plateau[i-1][j+1] == " - "){ 								// Test limite de tableau et que la case soit vide
						tmp = plateau[i][j];   										// Copie position pion dans une variable temporaire
						plateau[i][j] = " - ";   										// On remplace le pion en place par un vide 
						plateau[i-1][j+1] = tmp; 										// On déplace le pion
					}
					else if(plateau[i-1][j+1] == "pb1" || plateau[i-1][j+1] == "pb2" || plateau[i-1][j+1] == "pb3" || plateau[i-1][j+1] == "pb4" || plateau[i-1][j+1] == "pb5"){
						System.out.println("Mouvement impossible, un de vos pions s'y trouve déjà!\n");	
					}
					else if(i-1 >= 0 && j+1 < 5 && plateau[i-1][j+1] != " - "){			// Ou si l'emplacement voulu n'est pas vide....
						if (plateau[i-1][j+1] == "pn1" || plateau[i-1][j+1] == "pn2" || plateau[i-1][j+1] == "pn3" || plateau[i-1][j+1] == "pn4" || plateau[i-1][j+1] == "pn5"){// On regarde si un des pions adverse s'y trouve					
							if (plateau[i-2][j+2] == " - "){ 									// Si un pion adverse si trouve on regarde le contenu de la case se trouvant derriere le pion pour savoir si on peut le manger							
								tmp = plateau[i][j];									// On place le contenu de la position de base dans une variable temporaire "tmp"
								plateau[i][j] = " - "; 									// On remplace notre position de base par un vide
								plateau[i-1][j+1] = " - "; 								// Le pion adverse disparait 
								plateau[i-2][j+2] = tmp; 								// Nouvelle position du pion qui vient de manger un pion adverse						
								System.out.println("Pion adverse mangé!");							
								deplacementMultipleBlanc(numPion ,i-2, j+2);								
							}
							else System.out.println("Impossible de sauter ce pion!\n");
							break;
						}						
					}	
				}catch (ArrayIndexOutOfBoundsException e){}
				}
			}
		}		
	}
Création IG:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public Damier() {
 
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);						// JFrame
		setSize(700,500);
 
		JPanel panelDamier = new JPanel();  								// JPanel affichage damier
		panelDamier.setLayout(new GridLayout(5,5));
		getContentPane().add(panelDamier, BorderLayout.CENTER);
 
		JPanel panelInfo = new JPanel(); 								// JPanel affichage information
		panelInfo.setBackground(Color.WHITE);					
		GridBagLayout gblPanelInfo = new GridBagLayout();
		gblPanelInfo.columnWidths = new int[] {200};
		gblPanelInfo.rowHeights = new int[] {500};
		panelInfo.setLayout(gblPanelInfo);		
		panelInfo.setBorder(new LineBorder(Color.DARK_GRAY, 3, true));
		getContentPane().add(panelInfo, BorderLayout.EAST);	
 
		creationPlateau(panelDamier);
		setVisible(true);	
	}
 
	// Création Damier
	public void creationPlateau(JPanel panelDamier){						
 
		JLabel damier[][] = new JLabel[5][5];									
		for (int i = 0; i<damier.length; i++){			
			for(int j = 0; j<damier.length; j++){	
				damier[i][j] = new JLabel();
				damier[i][j].setSize(new Dimension(100,100));
				damier[i][j].setOpaque(true);
				if((i+j)% 2 == 0){
					damier[i][j].setBackground(Color.gray);									
				}
				else{
					damier[i][j].setBackground(Color.lightGray);			
				}
				panelDamier.add(damier[i][j]);
			}
		}
	}
Merci d'avance pour le temps passé sur mon problème !