Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1442 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Interface jeu de dames (is back)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Interface jeu de dames (is back)

n°1691601
Glycerin
Posté le 24-02-2008 à 19:16:40  profilanswer
 

Hello les gens,
de retour avec mon jeu de dames. En fait mon soucis est le suivant, j'utilise un gridLayout de 10X10 pour faire mon damier. Le truc c'est que dans chaque case de ce gridLayout je veux insérer une case (le 2nd bout de code), une case hérite de JButton (pour que je puisse stocker sa location sur la grille). Le truc c'est que je n'arrive pas à insérer une image (cf la partie commentée dans le 2nd bout de code). En effet j'aimerai pouvoir ainsi mettre une image représentant un pion sur une case et sinon une image noire (idem avec une image blanche sur les cases blanches sauf qu'il n'y a pas de pions). Quand je met setBackground() ça marche nickel mais des que je me sers d'une ImageIcon soit j'ai mon damier mais que composé de Jbutton ou rien. Une idée ?
 
 
Ma vue :

Code :
  1. package Dames.Vue;
  2. import java.awt.BorderLayout;
  3. import java.awt.Color;
  4. import java.awt.Dimension;
  5. import java.awt.GridLayout;
  6. import javax.swing.*;
  7. import javax.swing.border.Border;
  8. import Dames.modele.Case;
  9. public class Vue {
  10. private JFrame fenetre;
  11. private JPanel plateau;
  12. private JPanel score;
  13. private JPanel action;
  14. private JMenuBar barre;
  15. private Case cases[][];
  16. public Vue()
  17. {
  18.  fenetre = new JFrame();
  19.  fenetre.setSize(600,600);
  20.  fenetre.setTitle("Jeu de dames" );
  21.  fenetre.setResizable(false);
  22.  fenetre.setLayout(new BorderLayout());
  23.  fenetre.setVisible(true);
  24.  barre = new JMenuBar();
  25.  JMenu fichier = new JMenu("Fichier" );
  26.  JMenuItem nouveau = new JMenuItem("Nouvelle partie" );
  27.  JMenuItem Apropos = new JMenuItem("A propos" );
  28.  JMenuItem quitter = new JMenuItem("Quitter" );
  29.  Apropos.addActionListener(new FenetreAP());
  30.  fichier.add(nouveau);
  31.  fichier.add(Apropos);
  32.  fichier.add(quitter);
  33.  barre.add(fichier);
  34.  fenetre.add(barre,BorderLayout.NORTH);
  35.  score = new JPanel();
  36.  score.add(new JLabel("Score : blablablabla" ));
  37.  fenetre.add(score,BorderLayout.EAST);
  38.  score.setBorder(BorderFactory.createLineBorder(Color.black));
  39.  action = new JPanel();
  40.  action.add(new JLabel("Déplacement impossible" ));
  41.  fenetre.add(action,BorderLayout.SOUTH);
  42.  action.setBorder(BorderFactory.createLineBorder(Color.black));
  43.  plateau = new JPanel();
  44.  plateau.setLayout(new GridLayout(10, 10));
  45.  cases = new Case[10][10];
  46.  for(int i=0;i<10;i++){
  47.   cases[i]=new Case[10];
  48.   for(int j=0;j<10;j++)
  49.   {
  50.    if(((i+j)%2)==0)
  51.     cases[i][j] = new Case(i,j,"Blanc",false);
  52.    else cases[i][j] = new Case(i,j,"Noir",false);
  53.    plateau.add(cases[i][j]);
  54.   }
  55.  }
  56.  fenetre.add(plateau, BorderLayout.CENTER);
  57. }
  58. }


 
 
Le code d'une case :

Code :
  1. package Dames.modele;
  2. import java.awt.Color;
  3. import javax.swing.Icon;
  4. import javax.swing.ImageIcon;
  5. import javax.swing.JButton;
  6. import javax.swing.event.EventListenerList;
  7. import Dames.controleur.caseListener;
  8. public class Case extends JButton {
  9. private int colonne;
  10. private int ligne;
  11. private String couleur;
  12. private boolean estOccupee;
  13. private EventListenerList listeners;
  14. public Case(int colonne, int ligne, String couleur, boolean estOccupee)
  15. {
  16.  super();
  17.  setCouleur(couleur);
  18.  setColonne(colonne);
  19.  setLigne(ligne);
  20.  setEstOccupee(estOccupee);
  21.  listeners = new EventListenerList();
  22.  addActionListener(new caseListener());
  23. }
  24. public String getCouleur() {
  25.  return couleur;
  26. }
  27. public void setCouleur(String couleur) {
  28.  this.couleur = couleur;
  29.  if(couleur.compareTo("Blanc" )==0)
  30.  {
  31.   //setIcon(new ImageIcon("caseBlanche.GIF" ));
  32.   setBackground(Color.white);
  33.  }
  34.  if(couleur.compareTo("Noir" )==0)
  35.  {
  36.   //setIcon(new ImageIcon("caseNoire.GIF" ));
  37.   setBackground(Color.black);
  38.  }
  39. }
  40. public int getColonne() {
  41.  return colonne;
  42. }
  43. public void setColonne(int colonne) {
  44.  this.colonne = colonne;
  45. }
  46. public int getLigne() {
  47.  return ligne;
  48. }
  49. public void setLigne(int ligne) {
  50.  this.ligne = ligne;
  51. }
  52. public boolean isEstOccupee() {
  53.  return estOccupee;
  54. }
  55. public void setEstOccupee(boolean estOccupee) {
  56.  if(estOccupee==true){
  57.   setBackground(Color.black);
  58.  }
  59.  this.estOccupee = estOccupee;
  60. }
  61. }


 
P.S. : l'IA d'un jeu de Dames c'est si chaud que çà ?


Message édité par Glycerin le 04-03-2008 à 10:27:23
mood
Publicité
Posté le 24-02-2008 à 19:16:40  profilanswer
 

n°1691608
Glycerin
Posté le 24-02-2008 à 19:46:25  profilanswer
 

.


Message édité par Glycerin le 04-03-2008 à 10:27:41
n°1696825
Glycerin
Posté le 04-03-2008 à 10:28:19  profilanswer
 

Un petit up pour la modification de mon message.

n°1696907
lolobaro
Posté le 04-03-2008 à 12:42:10  profilanswer
 

Salut,
 
a mon avis tu t'y prend mal.
 
Au lieu de faire dériver ta classe Case de JButton, fait la plutot dériver de JLabel.
Ton caseListener sera un MouseListener au lieu d'un ActionListener.
 
Ensuite, il te suffit de changer les Icon de chaque JLabel en fonction de son occupation.
tu peux ainsi avoir 4 types de case pion blanc/noir sur fond blanc/noir.
 
Et voila le travail ...
 
En ce qui concerne l'IA d'un jeu de dame, je suppose que tu vas utiliser des procédures de backtracking avec une profondeur donnée (le programme va essayer tous les coups possibles jusqu'à une certaine profondeur et évaluer le damier afin de trouver la suite de coups optimale).
Toute la difficulté est dans la fonction d'évaluation.
Les fonctions d'évaluation d'un damier, ça doit se trouver assez facilement.
 
@+ bon courage

n°2226130
pilaau
Posté le 24-04-2014 à 18:11:11  profilanswer
 

Bonjour,
 
je ne suis pas là par hazard, je ne sais pas inclure mes pièces d'échecs, dans un echiquier,  
Je sais faire les pièces disposées harmonieusement, je suppose que je sais dessiner l'echiquier, bien que ce n'est qu'une supposition, parce qu'avant de le faire, je me demande comment je vais bien pouvoir placer ensuite mes pièces, je n'ai pas envie de me retrouver avec un échiquier, d'un coté, des pièces de l'autre.
J'aimerais avoir d'abord une idée de la manière de les "harmoniser ??!"
 
Merci, si vous savez m'aider,  
 
Pilaau
 
P.S.
Le début de mon programme, ci-après, pour placer mes pièces (seules), il m'a été sympatiquement suggéré par Honrisse
 

Code :
  1. Code :
  2. import java.awt.Container;
  3. import java.awt.Dimension;
  4. import java.awt.GridLayout;
  5. import javax.swing.ImageIcon;
  6. import javax.swing.JFrame;
  7. import javax.swing.JLabel;
  8. import javax.swing.JPanel;
  9. import javax.swing.SwingUtilities;
  10. public class Main {
  11. public static void initAndShowGui() {
  12. JFrame f = new JFrame("Chess Game" );
  13. f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  14. f.setLayout(new GridLayout(8, 8));
  15. JPanel[][] gridPanel = new JPanel[8][8];
  16. for(int i = 0; i<8; i++) {
  17. for(int j = 0; j<8; j++) {
  18.    gridPanel[i][j] = new JPanel();
  19. }
  20. }
  21. ImageIcon dameIcon = new ImageIconMerci, si vous savez m'aider!!?


 
Merci,
 
Pilaau.
 
P.S, je nai pas insisté pour joindre ces deux aspects avec Honrisse, estimant qu'il m'avait assez aidé et pensant que ce serait plus facile
 
 
 
 
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Interface jeu de dames (is back)

 

Sujets relatifs
Interface de création 3DInterface
Hypérion et interface utilisateur.Interface graphique
[divers] Avec quel langage peut-on créer une interface comme cela ?Interface internal
Serveur BD - client avec interface comme open office BDInterface GTK2 - Fonction zoom sur liste
BACK OFFICE SITE FULL FLASHInterface web de gestion de code source.
Plus de sujets relatifs à : Interface jeu de dames (is back)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR