Mes boutons jouent au cache cache

cs_nili Messages postés 2 Date d'inscription samedi 24 avril 2004 Statut Membre Dernière intervention 5 mai 2004 - 5 mai 2004 à 18:13
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004 - 6 mai 2004 à 07:29
1)je vous envoie le code source,lorsque j enleve la methode paint les boutons saffichent correctement.Sinon il faut appuyer a l endroit k il vont s afficher,et puis ils s affichent.comment resoudre ce pb?

2)pour les deplacement des pion j ai touve un algo pr afficher le pion deplace mais:
1)comme je fais un repaint dans mouseclicked,je redessine tout donc ts les pions initiales vont se reafficher.
2)de tout facon le pion depalce ne s affiche pas.

merci bcp...

voila le source:

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.applet.*;
import java.awt.event.MouseListener;

class Pion
{
public int r,ox,oy;
Color c;
int y=0;
int i=0;
int j=0;

Pion(int r0,int ox0,int oy0,Color c0)
{r=r0;ox=ox0;oy=oy0;c=c0;}

public void dessiner(Graphics g,int nb,Color b)
{

for(int i=0;i<nb;i++)
{
g.setColor(b);
g.fillOval(ox-r,oy-r+y,2*r,2*r);
if (oy==75)
{y=y+2*r;}//pr les pions ki suit ds un meme triangle
else {y=y-2*r;}

}

}

public static void init(Graphics g,int nb,Color b,Pion P[],int r,int x,int y)
//methode permettant de dessiner des pions autant qu on veut et de couleur qu on veut

{ for(int i=0;i<nb;i++)
{
P[i]=new Pion(r,x,y,b);
P[i].dessiner(g,nb,b);

}


}

}

class Rectangle1
{
boolean presse = false;
Color c;
Color a=Color.black;
private int lon,lar,x,y;
Rectangle1(int longueur,int largeur,int x0,int y0,Color c0,boolean
presse)
{ lon=longueur;
lar=largeur;
x=x0;
y=y0;
c=c0;
}

public void dessiner(Graphics g)
{
g.setColor(c);
g.fill3DRect(x,y,lar,lon,presse);
/*g.setColor(a);
g.drawRect(x,y,lar,lon);*/
}

}

class Triangle1
{
Color c;
int x1,y1,x2,y2,x3,y3;
Triangle1(int a,int b,int c,int d,int e,int f)
{x1=a;y1=b;x2=c;y2=d;x3=e;y3=f;}

public void dessiner(Graphics g)
{g.setColor(c);
g.drawLine(x2,y2,x3,y3);
g.drawLine(x1,y1,x3,y3);
g.drawLine(x1,y1,x2,y2);
}

public static void init(int x1,int y1,int x2,int y2,int x3,int y3,int a,int debut,int fin,Triangle1 t1[],Graphics g)
{
for(int i=debut;i<fin;i++)
{
t1[i]=new Triangle1(x1,y1,x2,y2,x3,y3);
t1[i].dessiner(g);
x1=x1+a;
x2=x3;
x3=x3+a;

}

}

}

public class Tavla extends JApplet implements ActionListener,MouseListener

{
Button b1,b2;

//les couleurs qu on va utiliser
Color vert=Color.green;
Color gris=Color.lightGray;
Color rouge=Color.red;
Color noir=Color.black;
int i=0;
int nd=0;
Pion P[]=new Pion[15];
Pion P1[]=new Pion[15];

Triangle1 t1[]=new Triangle1 [12];
Triangle1 t2[]=new Triangle1 [12];

int r=15; //pr le rayon
int x; //pr les pions
int y;
int j=0; //la variable pour designer une triangle de t2
int n=10;
Pion P_deplace;
Pion P9[]=new Pion[n];



public void init()
{

JPanel panel;
GridLayout g=new GridLayout(1,2,50,100);
panel=new JPanel(g);

b1=new Button("lancer un nouveau jeu");
panel.add(b1);
b1.setBackground(new Color(192,137,11));
b1.setForeground(Color.black);
addMouseListener(this);
setBackground(gris);



/*//les boutons
Container cp=getContentPane();
cp.setLayout(new FlowLayout(FlowLayout.CENTER));
JButton b1=new JButton("lancer un nouveau jeu");
JButton b2=new JButton("quitter");
cp.add(b1);
cp.add(b2);

b1.addActionListener(this);
b1.setActionCommand("lancer un nouvel jeu");
b2.addActionListener(this);
b2.setActionCommand("quitter");*/

}

public void actionPerformed(ActionEvent evt)
{}/*
if (evt.getActionCommand().equals("lancer un nouvel jeu"))
{/*lancement des des}
else
{g.drawstring("au revoir",200,300);
System.exit;}
}*/



public void mousePressed(MouseEvent evt) { }

public void mouseReleased(MouseEvent evt) {}

public void mouseEntered(MouseEvent evt) { }

public void mouseDragged(MouseEvent evt) {}

public void mouseMoved(MouseEvent evt) {}
public void mouseExited(MouseEvent evt) {}

public void mouseClicked(MouseEvent e)
{


System.out.println("position" + e.getX() + "," + e.getY()); // pour verification
nd=(int)(Math.random()*5+1);

if(P[i].c==rouge)
{
//if(e.getY()60) //si le pion se trouve a t1
{i=i-nd;
if (i>0)
{ x=t1[i].x1;
y=t1[i].y2;}


else //passage a t2 de cette facon la securite du sens est deja inclus
{
j=-i;
x=t2[j-1].x1;
y=t2[j-1].y2;
}
}



if (e.getY()>270 && e.getY()<490) // si le pion se trouve a t2
{
j=j-nd;
x=t2[j].x1;
y=t2[j].y2;
}

Pion P_deplace=new Pion(15,x,y,vert);

//}
}

//pour les VERTS

if(P[i].c==vert)
{ if(e.getY()270 && e.getY()<490) //pr les pions se trouvant a t2
{ i=i-nd;
if (i>0)
{x=t2[j].x1;
y=t2[j].y2;}

else //passage a t2 de cette facon la securite du sens est deja inclus
{
j=-i;
x=t1[j-1].x1;
y=t1[j-1].y2;
}

}

if (e.getY()<250 && e.getY()>=60) // pr les pions se trouvant a t2
{
j=j-nd;
x=t2[j].x1;
y=t2[j].y2;
}

}

}
repaint();

}

public void paint(Graphics g)
{

boolean presse = false;
//creation de 4 tirangle pour la base de Tavla
Rectangle1 R=new Rectangle1(450,607,100,50,vert,presse);//la plus grde base
Rectangle1 R1=new Rectangle1(430,30,110,60,gris,presse);
Rectangle1 R2=new Rectangle1(430,234,150,60,gris,presse);
Rectangle1 R3=new Rectangle1(430,234,423,60,gris,presse);
Rectangle1 R4=new Rectangle1(430,30,667,60,gris,presse);

//on va dessiner la base de Tavla
R.dessiner(g);
R1.dessiner(g);
R2.dessiner(g);
R3.dessiner(g);
R4.dessiner(g);

//on va dessiner 24 triangles
Triangle1.init(170,200,150,60,189,60,39,0,6,t1,g);
Triangle1.init(443,200,423,60,461,60,39,6,12,t1,g);
Triangle1.init(170,350,150,490,189,490,39,0,6,t2,g);
Triangle1.init(443,350,423,490,461,490,39,6,12,t2,g);

//on va dessiner les pionts places initialement sur t1
Pion.init(g,5,vert,P1,15,t1[6].x1,(t1[6].y2)+15); //+15 pr le rayon,pour arriver au centre du cercle
Pion.init(g,5,rouge,P,15,t1[0].x1,(t1[0].y2)+15);
Pion.init(g,3,vert,P1,15,t1[4].x1,(t1[4].y2)+15);
Pion.init(g,2,rouge,P,15,t1[11].x1,(t1[11].y2)+15);

//on va dessiner les pionts places initialement sur t1
Pion.init(g,5,vert,P1,15,t2[0].x1,(t2[0].y2-15));
Pion.init(g,5,rouge,P,15,t1[6].x1,(t2[6].y2-15));
Pion.init(g,3,rouge,P,15,t1[4].x1,(t2[4].y2-15));
Pion.init(g,2,vert,P1,15,t1[11].x1,(t2[11].y2-15));//-15 pr le rayon

//les insrtuctions pour les joueurs
g.setColor(Color.blue);
g.drawString("Pour bouger un pion:",100,600);
g.drawString("Appuyer sur un des et puis sur un pion:",100,620);

//pour stocker les nouveaux pions rouges k on a crees

P_deplace.init(g,1,vert,P9,15,x,y);
/*for(i=0;i<n;i++)
{n++;}


*/

}

public static void main(String[] args)
{
JApplet applet=new Tavla();

JFrame frame=new JFrame("TAVLA"); //le nom du jeu

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(applet);

frame.setSize(1200,1000);//la taille de la fenetre

frame.show();

applet.init();

applet.start();

frame.setVisible(true);



}

}

2 réponses

cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
5 mai 2004 à 20:10
SAlut

j'ai pas tout lu (lol)

mais à premiere vue, tu n'appelles pas dans paint(Graphics) la méthode paint originale, donc il ne dessine que ce que tu lui dit de dessiner

public void paint(Graphics g)
{
super.paint(g);

boolean presse = false;
//creation de 4 tirangle pour la base de Tavla
etc.....
}

A+
DOBELIOU
0
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
6 mai 2004 à 07:29
La ligne correcte à mettre au début de ta méthode paint est:

super.paintComponent(g);
tu dessines ici :p

Essaie cela, si cela ne fonctionne pas reposte et je viendrai revoir...
B@ron {EU.BELGIUM}
0
Rejoignez-nous