Jogo de Xadrez

1 resposta
J

estou fazendo um jogo de xadrez cada peça é uma classe que extend de PecaXadrez que extend de JLABEL
TEnho um metodo chamado adicionaPeca que adiciona as peças em um array de object
Minha duvida seria como eu faco para fzer aparecer as peças em cima do tabuleiro

meu codigo:

// cria tabuleiro
package Xadrez;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;

public class Tabuleiro extends JPanel {

   private static final long serialVersionUID = 1L;

   public static Casa casas[][] = new Casa[8][8];

   public Tabuleiro() {
      setOpaque(false);
      setLayout(new GridLayout(8, 8));

      for (int y = 0; y < 8; y++) {

         for (int x = 0; x < 8; x++) {

            final Casa casa = new Casa(new Point(x, y));
            this.add(casa);
            casa.addMouseListener(new MouseListener() {
               public void mouseExited(MouseEvent arg0) {
               }

               public void mouseEntered(MouseEvent arg0) {
               }

               public void mouseReleased(MouseEvent arg0) {
               }

               public void mousePressed(MouseEvent arg0) {
               }

               public void mouseClicked(MouseEvent e) {
                  Casa casaPressionada = (Casa) e.getSource();

                    casaPressionada.setBorder(new
                   LineBorder(Color.red,
                    5));
                    System.out.println("1="+casa);
                   System.out.println("2=" + casa.getPosicao());
                   if (casa.verifica == true) {
                                    
                   casa.verifica = false;
                   } else {
                   casaPressionada.setBorder(new LineBorder(null));
                   casa.verifica= true;
                   }

                   System.out.println("2="+casa.getPosicao().getX());
                   System.out.println("2="+casa.getPosicao().getY());
                  // System.out.println("Estou aqui");
               }

            });

            casas[x][y] = casa;

            if ((y % 2 == 0 && x % 2 == 0) || (y % 2 != 0 && x % 2 != 0))
               casa.setBackground(Casa.CLARA);
            else {
               casa.setBackground(Casa.ESCURA);

            }

            // casa.adicionaPeca();
            add(casa);

         }
      }
   }

}

Presico muito fazer aparecer estas peças em cima do tabuleiro

nessa classe eu criei um metodo que adiciona peça em array de object

mas nao consigo fazer a chamada em tabuleiro ( ou seja na classe acima )

package Xadrez;

import java.awt.Color;
import java.awt.Point;

import javax.swing.JLabel;
import javax.swing.JPanel;

public class Casa extends JPanel {

   private static final long serialVersionUID = 1L;

   private JLabel peça = new JLabel();

   private Point posicao = new Point();

   public static boolean verifica;

   private boolean selecionado = false;

   public static int jogador;

   Object[][] a = new Object[8][8];

   public static final Color ESCURA = new Color(255, 250, 250);

   public static final Color CLARA = new Color(000, 000, 000);

   Rainha rainhaBranca = new Rainha("branco");

   Rei reiBranco = new Rei("branco");

   Bispo bispoBranco = new Bispo("branco");

   Cavalo cavaloBranco = new Cavalo("branco");

   Torre torreBranca = new Torre("branco");

   Peao peaoBranco = new Peao("branco");

   Rainha rainhaPreta = new Rainha("preto");

   Rei reiPreto = new Rei("preto");

   Bispo bispoPreto = new Bispo("preto");

   Cavalo cavaloPreto = new Cavalo("preto");

   Torre torrePreto = new Torre("preto");

   Peao peaoPreto = new Peao("preto");

   public Casa() {
      this.adicionaPeca();
   }

   public Casa(Point posicao) {
      this.posicao = posicao;
   }

   public Casa(boolean verifica) {
      verifica = false;
   }

   public void adicionaPeca() {
      for (int x = 0; x < 8; x++) {
         for (int y = 0; y < 8; y++) {

            if (((x == 0) && (y == 0)) || ((x == 7) && (y == 0))) {
               a[x][y] = new Torre("branco");
            }
            if (((x == 1) && (y == 0)) || ((x == 6) && (y == 0))) {
               a[x][y] = new Cavalo("branco");
            }
            if (((x == 2) && (y == 0)) || ((x == 5) && (y == 0))) {
               a[x][y] = new Bispo("branco");
            }
            if ((x == 3) && (y == 0)) {
               a[x][y] = new Rainha("branco");
            }
            if ((x == 4) && (y == 0)) {
               a[x][y] = new Rei("branco");
            }
         }
      }

      // adiciona peao branco
      for (int y = 1; y == 1;) {
         for (int x = 1; x < 8; x++) {
            a[x][y] = new Peao("branco");
         }
      }
      // adiciona peao preto
      for (int y = 6; y == 6;) {
         for (int x = 0; x < 8; x++) {
            a[x][y] = new Peao("preto");
         }
      }
      
      }

   public void setPeçaVazia() {
      peça.setIcon(null);
   }

   public boolean isPeçaVazia() {

      if (peça.getIcon() == null) {
         return true;
      } else
         return false;
   }

   public Point getPosicaoAtual() {

      for (int y = 0; y < 8; y++) {
         for (int x = 0; x < 8; x++) {
            if (Tabuleiro.casas[x][y] == this)
               return new Point(x, y);
         }
      }
      return null;
   }

   public boolean getSelecionada() {
      return verifica;
   }

   public Point getPosicao() {
      return posicao;
   }

   public void setPosicao(Point posicao) {
      this.posicao.setLocation(posicao.getLocation());
   }

}

1 Resposta

A

Considerando que o casa é um Panel e um peça é um Label que deve ser posicionado em uma casa, o que falta é adicionar o Label no Panel.

ex:

// adiciona peao branco for (int y = 1; y == 1;) { for (int x = 1; x < 8; x++) { a[x][y] = new Peao("branco"); this.add(a[x][y]); } }

Criado 22 de julho de 2006
Ultima resposta 25 de jul. de 2006
Respostas 1
Participantes 2