[Applet] ou ça coince ?

sikove Messages postés 90 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 31 mars 2010 - 17 déc. 2009 à 10:16
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 - 17 déc. 2009 à 17:15
Salut,

j'ai crée un damier avec un pion qui se déplace sur tout ce damier, mais le problème est que ce damier se recrée à chaque itération, il ne serait pas possible qu'il se crée et s'affiche une seule fois seulement ?

c'est un peu dur à expliquer, mais une fois que vous testiez cet applet ça sera plus clair :D

import java.applet.Applet;
import java.awt.*;

public class damier extends Applet implements Runnable
{
private static final long serialVersionUID = 1L;
Thread t=null;
int xx,yy, compteur;
String direction="droit";

boolean couleur=true;
public void couleur(Graphics g)
{
if(couleur)
{
g.setColor(Color.white);
couleur=!couleur;
}
else
{
g.setColor(Color.green);
couleur=!couleur;
}
}

// method depart
public void init()
{
this.setBackground(Color.lightGray);
this.setSize(370, 420);
}

public void paint(Graphics g)
{
// damier
for(int y=10; y<350; y+=50)
{
for(int x=10; x<350; x+=50)
{
couleur(g); // g couleur par ligne
g.fillRect(x,y, 50, 50);
}
}

g.setColor(Color.black);
g.fillOval(xx, yy, 23, 23);

}


public void run()
{
xx=yy=22;
compteur = 7;
for(int y=0; y<=12; y++)
{
for(int l=1; l<=compteur; l++)
{

try {
t.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
repaint();
if(l!=compteur)
{
if(direction=="droit") {xx+=50;}
if(direction=="bas") {yy+=50;}
if(direction=="gauche") {xx-=50;}
if(direction=="haut") {yy-=50;}	
}
}
if(direction=="droit")
{
direction = "bas";
if(compteur<7)
compteur=compteur-1;
}

else if(direction=="bas") 
{ 
direction = "gauche";
}

else if(direction=="gauche")
{
direction = "haut";
compteur=compteur-1;
}

else if(direction=="haut")
{
direction = "droit";	
}

}
}

public void start()
{
t = new Thread(this);
t.start();
}

public void stop()
{
t.stop();
}
}



en testant cet applet vous saurez de quoi je parle :)

merci d'avance

3 réponses

cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
17 déc. 2009 à 14:43
Salut,

Modifie ça dans ton code, ce sera pas encore parfait mais c'est un premier pas.


private BufferedImage imageDamier;

// method depart
    public void init() {
        this.setBackground(Color.lightGray);
        this.setSize(370, 420);
        
        imageDamier = new BufferedImage(370, 420, BufferedImage.TYPE_INT_RGB);
        Graphics2D g = imageDamier.createGraphics();
        
        // damier
        for (int y = 10; y < 350; y += 50) {
            for (int x = 10; x < 350; x += 50) {
                couleur(g); // g couleur par ligne
                g.fillRect(x, y, 50, 50);
            }
        }   
        
    }

    public void paint(Graphics g) {
                
        g.drawImage(imageDamier, 0, 0, null);
        g.setColor(Color.black);
        g.fillOval(xx, yy, 23, 23);

    }
0
sikove Messages postés 90 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 31 mars 2010
17 déc. 2009 à 16:51
Salut,

merci, donc tu as créé une image et tu mis dedans notre damier, mais est ce qu'il ny'a pas moyen de dessiner le damier directement dans init sans le stocker sur une image ?
0
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
17 déc. 2009 à 17:15
re,

Je pense que tu es obligé de passer par une image en mémoire. En tout cas moi je fais toujours comme ça. Tu peux aussi regarder du côté de BufferStrategy pour les questions de buffering.
0
Rejoignez-nous