sikove
Messages postés90Date d'inscriptionlundi 17 mars 2008StatutMembreDernière intervention31 mars 2010
-
17 déc. 2009 à 10:16
cs_jojolemariole
Messages postés519Date d'inscriptionmercredi 21 mars 2007StatutMembreDernière intervention19 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 :)
cs_jojolemariole
Messages postés519Date d'inscriptionmercredi 21 mars 2007StatutMembreDernière intervention19 décembre 201625 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);
}
sikove
Messages postés90Date d'inscriptionlundi 17 mars 2008StatutMembreDernière intervention31 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 ?
cs_jojolemariole
Messages postés519Date d'inscriptionmercredi 21 mars 2007StatutMembreDernière intervention19 décembre 201625 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.