Chez moi, "accepté" apparaît deux fois: je dirais une fois pour faire visible et une fois pour le layout. Il faut comprendre que le système de dessin a en principe le droit d'appeler le code de dessin autant de fois qu'il le juge utile.
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
public class GameDemo extends JFrame {
public GameDemo() {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(630, 630);
setLocationRelativeTo(null);
add(new MyGame());
}
public static void main(final String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new GameDemo().setVisible(true);
}
});
}
}
class MyGame extends JPanel {
private int[][] dame;
private Image cadre, noir, blanc, pionNoir, pionBlanc, pionNoirSelect,
pionBlancSelect, dameNoirSelect, dameBlancSelect, dameNoir, dameBlanc;
private int k = 50;
public MyGame() {
initImages();
}
@Override
protected void paintComponent(final Graphics g) {
super.paintComponent(g);
dame = new int[10][10];
g.drawImage(cadre, 10, 2, this);
/***** Création des cases *****/
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j = j + 2) {
if ((i % 2) != 0) {
g.drawImage(noir, k * i, k * j, this);
dame[i - 1][j - 1] = 0;
g.drawImage(blanc, k * i, k * (j + 1), this);
dame[i - 1][j] = 5;
} else {
g.drawImage(blanc, k * i, k * j, this);
dame[i - 1][j - 1] = 5;
g.drawImage(noir, k * i, k * (j + 1), this);
dame[i - 1][j] = 0;
}
}
}
/***** Création des pions *****/
int j = 50;
for (int i = 0; i < 10; i++) {
if ((i % 2) == 0) {
g.drawImage(pionNoir, j, 100, this);
dame[i][1] = 2;
g.drawImage(pionNoir, j, 200, this);
dame[i][3] = 2;
g.drawImage(pionBlanc, j, 400, this);
dame[i][7] = 1;
g.drawImage(pionBlanc, j, 500, this);
dame[i][9] = 1;
} else {
g.drawImage(pionNoir, j, 50, this);
dame[i][0] = 2;
g.drawImage(pionNoir, j, 150, this);
dame[i][2] = 2;
g.drawImage(pionBlanc, j, 350, this);
dame[i][6] = 1;
g.drawImage(pionBlanc, j, 450, this);
dame[i][8] = 1;
}
j = j + 50;
}
g.drawImage(pionBlancSelect, -50, -50, this);
g.drawImage(pionNoirSelect, -50, -50, this);
g.drawImage(dameBlanc, -50, -50, this);
g.drawImage(dameNoir, -50, -50, this);
g.drawImage(dameBlancSelect, -50, -50, this);
g.drawImage(dameNoirSelect, -50, -50, this);
System.out.println("accepté");
}
private void initImages() {
int w1 = 50;
int h1 = 50;
int w2 = 30;
int h2 = 30;
cadre = new BufferedImage(581, 581, BufferedImage.TYPE_INT_ARGB);
Graphics g = cadre.getGraphics();
g.setColor(Color.BLACK);
g.drawRect(0, 0, 580, 580);
noir = new BufferedImage(w1, h1, BufferedImage.TYPE_INT_ARGB);
g = noir.getGraphics();
g.setColor(Color.BLACK);
g.fillRect(0, 0, w1, h1);
blanc = new BufferedImage(w1, h1, BufferedImage.TYPE_INT_ARGB);
g = blanc.getGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, w1, h1);
pionBlanc = new BufferedImage(w2, h2, BufferedImage.TYPE_INT_ARGB);
g = pionBlanc.getGraphics();
g.setColor(Color.YELLOW);
g.fillOval(0, 0, w2, h2);
pionNoir = new BufferedImage(w2, h2, BufferedImage.TYPE_INT_ARGB);
g = pionNoir.getGraphics();
g.setColor(Color.GRAY);
g.fillOval(0, 0, w2, h2);
pionBlancSelect = new BufferedImage(w2, h2, BufferedImage.TYPE_INT_ARGB);
g = pionBlancSelect.getGraphics();
g.setColor(Color.YELLOW);
g.fillOval(0, 0, w2, h2);
pionNoirSelect = new BufferedImage(w2, h2, BufferedImage.TYPE_INT_ARGB);
g = pionNoirSelect.getGraphics();
g.setColor(Color.GRAY);
g.fillOval(0, 0, w2, h2);
dameBlanc = new BufferedImage(w2, h2, BufferedImage.TYPE_INT_ARGB);
g = dameBlanc.getGraphics();
g.setColor(Color.YELLOW);
g.fillOval(0, 0, w2, h2);
dameNoir = new BufferedImage(w2, h2, BufferedImage.TYPE_INT_ARGB);
g = dameNoir.getGraphics();
g.setColor(Color.GRAY);
g.fillOval(0, 0, w2, h2);
dameBlancSelect = new BufferedImage(w2, h2, BufferedImage.TYPE_INT_ARGB);
g = dameBlancSelect.getGraphics();
g.setColor(Color.YELLOW);
g.fillOval(0, 0, w2, h2);
dameNoirSelect = new BufferedImage(w2, h2, BufferedImage.TYPE_INT_ARGB);
g = dameNoirSelect.getGraphics();
g.setColor(Color.GRAY);
g.fillOval(0, 0, w2, h2);
}
}