IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Comment éliminer un pion d'une case?


Sujet :

avec Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut Comment éliminer un pion d'une case?
    Bon jour!
    j'essaye d'implémenter un jeu de dame, mais vue que je débute en java, donc je veux faire un jeu tres simple je vais pas appliqué toute les regles du jeu,

    jusqu'à maintenant j'ai créer ma table de jeu les case et les pions j'arrive a faire déplacer mes pions sans condition, et la je suis bloqué je n'arrive pas a éliminer le pions si soit disant a était manger par un autre.

    J'ai 6 classe :
    - Table jeu
    -Position
    -Case
    -Piece: classe abstraite qui généralise une classe:
    -Pion



    Alors dans la classe Piece j'ai les deux fonctions Déplacer et Eliminer
    et qui sont implémenter dans la classe Pion, j'ai implémenter la fonction déplacer et mes pions se déplace il me reste a implémenter la fonction éliminer.

    JE vous montrerais des bout de code:

    La classe Pion : la fonction déplacer et eliminer :
    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
     
    public void deplacer(Case depart, Case arrivee) {
     
     
    		arrivee.occupe = depart.occupe;
    		arrivee.occupe.laCase = arrivee;
    		depart.occupe = null;
    		depart.select(false);
    		depart.repaint();
    		arrivee.repaint();
    		laCase = arrivee;
    		if(arrivee.getposX() == 0 || arrivee.getposX() == 7){  // le cas ou le pion devien une dame.......
    			arrivee.occupe = Pion.pionDevienDame(arrivee.occupe);				
    		}
    		 }
     
    public void eliminer(Case depart, Case arrivee, Case Eliminee) {
     
     
    	}
    Et la classe Case: qui appelle la fonction déplacer et eliminer :

    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
    public void mouseClicked(MouseEvent arg0) {
     
    		if(this.getpeutjouer() && Table.selecte==null)
    		{
    			this.select(true);
    			Table.selecte=this;
    		}
    		else
    		{
     
    			  if(!this.getpeutjouer() && this.getcouleur()!=Color.red)// la case est vide
    				{
    					Table.selecte.occupe.deplacer(Table.selecte, this);
    					this.setpeutjouer(true);
    					Table.selecte.setpeutjouer(false);
    					Table.selecte.select(false);
    					Table.selecte=null;
    				}
    			  else if(Table.selecte!=null && this.getpeutjouer())
    			{
    				Table.selecte.select(false);
    				this.select(true);
    				Table.selecte=this;
     
    				  Table.selecte.occupe.eliminer(Table.selecte, this); <== Mon probleme est la je sais pas comment mentionné la case a éliminer
     
    			}
    		} 
     
    	}
    Ce que je viens de poster est trop long , je suis vraiment désole mais j'ai vraiment besoin de ce petit coup, je serais vraiment reconnaissante.
    Je vous remerciez d'avance

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    On ne connait rien de ton projet. Les quelques lignes de codes ne suffisent pas à expliquer le problème.
    Tu dois donner l'intégralité du code pour que celui qui aura envie de t'aider puisse voir ou est le problème en exécutant le code.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut
    Ok dino, Merci pour ton conseil!
    je vous poste les trois classes importante :

    Classe Piece :
    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
    public abstract class Piece {
    	static final short vide = 0;
    	static final short pion_vert = 1;
    	static final short dame_vert = 2;
    	static final short pion_bleu = -1;
    	static final short dame_bleu = -2;
     
     
    	protected Color couleur;
    	protected Case laCase;
    	protected Position position;
     
    	public abstract void dessiner(Graphics g);
    	public abstract void deplacer(Case depart, Case arrivee);
    	public abstract void eliminer(Case depart, Case arrivee , Case Eliminee); //manger
     
    }
    Classe Pion :
    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
    42
    43
    44
    45
    46
    47
    48
    49
    public class Pion extends Piece {
    	
    	Pion(Color coul,Case c,Position pos)	{
    		couleur = coul; 		
    		laCase = c;
    		position = pos;
    	}
    	 
    	public void deplacer(Case depart, Case arrivee) {
    		  
    		arrivee.occupe = depart.occupe;
    		arrivee.occupe.laCase = arrivee;
    		depart.occupe = null;
    		depart.select(false);
    		depart.repaint();
    		arrivee.repaint();
    		laCase = arrivee;
    		if(arrivee.getposX() == 0 || arrivee.getposX() == 7){  // le cas ou le pion devien une dame.......
    			arrivee.occupe = Pion.pionDevienDame(arrivee.occupe);				
    		}
    		 }
    	
    	public void dessiner(Graphics g) {
    		 
    		g.setColor(this.couleur);
    		
    		 g.fillOval(20, 20, 40, 40);
    
    	}
    
    	 
    	public void eliminer(Case depart, Case arrivee, Case Eliminee) {  //Mon probleme est la
           
    		  arrivee.occupe = depart.occupe;
    		  arrivee.occupe.laCase = arrivee;
    		   depart.occupe =null;
    		  depart.select(false);
    		   depart.repaint();
    		   arrivee.repaint();
    		   if(Eliminee.occupe != null)
    	       {
    		     Eliminee.repaint();
    		     
               }
    		   laCase = arrivee;
    		
    	}
    
    }
    Classe Case :
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    public class Case extends JPanel implements MouseListener{
    	// les variables
     
    	private final int posX;
    	private final int posY;
    	private final Color couleur;
    	private boolean jouable;
    	Piece occupe;
     
    	// le constructeur
     
    	Case( int x,int y, Color c, int pos, boolean jouer)
    	{
    		posX=x;
    		posY=y;
            jouable=jouer;
    		couleur=c;
    		switch(pos)
    		{
    		   case Piece.vide: 
    	 	    {
    			    occupe=null;
    	 	    	break;
    		    }
    		   case Piece.pion_vert: 
    	 	    {
    	 	    	occupe = new Pion(Color.orange,this,Table.haut);
    	 	    	break;
    		    }
    		   case Piece.pion_bleu: 
    	 	    {
    	 	    	occupe = new Pion(Color.yellow,this,Table.bas);
    	 	    	break;
    		    }
    		   case Piece.dame_vert: 
    	 	    {
    	 	    	occupe = new Dame(Color.green,this);
    	 	    	break;
    		    }
    		   case Piece.dame_bleu: 
    	 	    {
    	 	    	occupe = new Dame(Color.blue,this );		
    	 	    	break;
    		    }
    		}
    		setBorder(new BevelBorder(BevelBorder.LOWERED));
    	}
     
    	// les methodes
    	public void paintChildren(Graphics g){   // dessiner le pion dans la case
    		if(occupe!= null){
    			occupe.dessiner(g);
    		}	
    	}
    	public boolean getpeutjouer()
    	{
    		return jouable;
    	}
    	public void setPiece(Piece p)
    	{
    		occupe=p;
    	}
     
    	public int getposX()
    	{
    		return posX;
    	}
     
    	public int getposY()
    	{
    		return posY;
    	}
     
    	public Color getcouleur()
    	{
    		return couleur;
    	}
     
    	public void select(boolean f)
    	{
    		if(f){
     
    			   setBackground(Color.WHITE );
    		}
    		else{
    		       setBackground(couleur);
    		}
    	}
    	public void setpeutjouer(boolean jouer)
    	{
    		jouable=jouer;
    	}
     
    	public void mouseClicked(MouseEvent arg0) {
     
    		//pour selectionné	
    		if(this.getpeutjouer() && Table.selecte==null)
    		{
    			this.select(true);
    			Table.selecte=this;
    		}
    		else
    		{
     
    			  if(!this.getpeutjouer() && this.getcouleur()!=Color.red)// la case est vide
    				{
    					Table.selecte.occupe.deplacer(Table.selecte, this);
    					this.setpeutjouer(true);
    					Table.selecte.setpeutjouer(false);
    					Table.selecte.select(false);
    					Table.selecte=null;
    				}
    			  else if(Table.selecte!=null && this.getpeutjouer())
    			{
    				Table.selecte.select(false);  
    				this.select(true);
    				Table.selecte=this;
     
    			}
     
    		}
     
    	}
    }
    Dans la classe case je fait l'appelle de la fonction éliminer!

    J'esper que c'est un peut claire maintenant!

    Je vous remerciez

  4. #4
    Membre actif Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Points : 290
    Points
    290
    Par défaut
    Bonsoir,

    J'ai l'impression que tu as un problème de conception. Pourquoi la classe Case doit-elle s'occuper d'éliminer un pion.?

    N'as-tu pas une classe Controleur qui supervise le déplacement des pions et qui pourra avoir la responsabilité d'éliminer un pion.

    La classe qui s'occupe d'instancier les pions pour les mettre dans le jeu est une bonne candidate à cette responsabilité.

Discussions similaires

  1. comment éliminer l'ombre dans une image
    Par takfa2008 dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 11/02/2009, 09h59
  2. Réponses: 7
    Dernier message: 26/04/2008, 10h48
  3. Réponses: 4
    Dernier message: 06/10/2006, 09h06
  4. Réponses: 1
    Dernier message: 23/09/2006, 14h12
  5. Comment récupérer l'état d'une case à cocher
    Par oursquetaire dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 10/01/2006, 08h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo