pour un projet d'école, je fais un échiquier en java.java2D pions sur un échiquier glisser-déposer
il y avait certaines limitations, étant que nous ne pouvons pas utiliser d'images pour l'un des pions. Nous devions faire un pion de plusieurs formes.
Par exemple, j'ai un pion fait d'un cercle et d'un carré arrondi. voici quelques morceaux du code. Voici la carte définie comme un ensemble de caractères, représentent chacun un chèque sur la carte
private char[][] board = new char[][] { { 'T', 'H', 'B', 'Q', 'K', 'B', 'H', 'T' },
{ 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P' },
{ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' },
{ 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P' },
{ 'T', 'H', 'B', 'Q', 'K', 'B', 'H', 'T' } };
et est le contenu ici de la méthode qui crée un pion normale
for(int i=0; i<8; i++) {
for(int j=0; j<8;j++) {
if(board[j][i] == 'P') {
Ellipse2D.Double ellipse = new Ellipse2D.Double(i * getWidth()/8 + 20,
j * getHeight()/8 + 20,
getWidth()/8 - 40,getHeight()/8 - 40);
g2d.setPaint(new GradientPaint(i * getWidth()/8 , j * getHeight()/8 + 20, Color.orange, i * getWidth()/8, j * getHeight()/8 + 60,
Color.pink, false));
g2d.fill(ellipse);
RoundRectangle2D.Double roundRect = new RoundRectangle2D.Double(i*getWidth()/8 + 20,
j*getHeight()/8 + 10,
getWidth()/8 - 40, getHeight()/8-70,5,5);
g2d.setPaint(new GradientPaint(i * getWidth()/8 , j * getHeight()/8 + 20, new Color(20,20,150), i * getWidth()/8, j * getHeight()/8 + 60,
new Color(20, 20, 100), false));
g2d.fill(roundRect);
}
}
}
probablement pas le code plus propre pour le faire, s'il y a des suggestions pour faire mieux, s'il vous plaît, suggérez! Maintenant, le vrai problème, et ma question est que nous devons être capables de glisser et déposer ces formes multiples à la fois sur un autre endroit sur le plateau, et je n'ai honnêtement aucune idée de la façon de le faire.
Toute aide que vous pouvez me donner sera très appréciée!
Merci d'avance!
Je ne pense pas que vous pouvez glisser-déposer un JPanel. – toto2
@toto: Je suis d'accord, ce n'est pas disponible hors de la boîte, mais il peut être ajouté s'il est étendu, mais vous n'avez pas besoin de réellement. Il suffit d'utiliser un JLayeredPane et, en cliquant, de déplacer le JLabel du JPanel dans la couche de déplacement du JLayeredPane. Voir mon lien ci-dessus pour un exemple de ceci. –
J'ai couru votre exemple. C'est assez complet. vous auriez pu faire l'IA aussi pendant que vous y étiez. – toto2