Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
bem galera estive desenvolvendo este codigo a um tempo atraz para um trabalho da facu, gostaria de refatorar este codigo ...
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
class xadrez extends JFrame implements ActionListener {
/* ===========================================
* | MAPA DE REFERENCIA POR [ PEÇA ]
* ===========================================
* | Ref. | Peça | Cor
* ===========================================
* | Tb0 | Torre | Branco
* -------------------------------------------
* | Cb0 | Cavalo | Branco
* -------------------------------------------
* | Bb0 | Bispo | Branco
* -------------------------------------------
* | Eb0 | Rei | Branco
* -------------------------------------------
* | Ab0 | Rainha | Branco
* -------------------------------------------
* | Pb0 | Peão | Branco
* ===========================================
* | Tp1 | Torre | Preto
* -------------------------------------------
* | Cp1 | Cavalo | Preto
* -------------------------------------------
* | Bp1 | Bispo | Preto
* -------------------------------------------
* | Ep1 | Rei | Preto
* -------------------------------------------
* | Ap1 | Rainha | Preto
* -------------------------------------------
* | Pp1 | Peão | Preto
* -------------------------------------------
*/
ImageIcon b_torre = new ImageIcon("c:/branco/torre.gif","Tb0");
ImageIcon b_cavalo = new ImageIcon("c:/branco/cavalo.gif","Cb0");
ImageIcon b_bispo = new ImageIcon("c:/branco/bispo.gif","Bb0");
ImageIcon b_rei = new ImageIcon("c:/branco/rei.gif","Eb0");
ImageIcon b_rainha = new ImageIcon("c:/branco/rainha.gif","Ab0");
ImageIcon b_piao = new ImageIcon("c:/branco/peao.gif" ,"Pb0");
ImageIcon p_torre = new ImageIcon("c:/preto/torre.gif" ,"Tp1");
ImageIcon p_cavalo = new ImageIcon("c:/preto/cavalo.gif", "Cp1");
ImageIcon p_bispo = new ImageIcon("c:/preto/bispo.gif" ,"Bp1");
ImageIcon p_rei = new ImageIcon("c:/preto/rei.gif" ,"Ep1");
ImageIcon p_rainha = new ImageIcon("c:/preto/rainha.gif" ,"Ap1");
ImageIcon p_piao = new ImageIcon("c:/preto/peao.gif" ,"Pp1");
ImageIcon null_image = new ImageIcon("","null");
JButton peca[][] = new JButton [8][8];
//-- Objeto responsável por armazenar a peça a ser movida.
JButton trans = new JButton();
//-- Objeto responsável por certificar se ja existe alguma peça
// a ser movimentada.
boolean getPeca = false;
//-- Objeto responsável por selecionar o layer do tabuleiro.
int opcao = 1;
//-- Objeto contador para ordenar as seguencias das jogadas.
int ct = 0;
//-- Objeto de identificação entre as pecas brancas de pretas.
int ps_ref = 1;
//-- Objeto resposável por guardar as posições anteriores
// ao getSource().
int ps_i,ps_j;
String ps_peca = "";
//--
int ctp = 0;
//--
int vOrient = 0;
//--
int vDimensao = 0;
//-- Função responsável por calcular a [ dimensao ]
// que esta esta movimentando a peca.
public int Dimensao(int x, int y) {
int xy = 0;
if (x==0) {
xy = x + y;
} else {
xy = x - y;
}
return Math.abs(xy);
}
xadrez () {
setTitle("UNG");
setSize(500,500);
getContentPane().setLayout( new GridLayout(8,8,2,2) );
Color background[] = {Color.black,Color.orange};
int intColor = 0;
//-- Atribuição das linhas, para a configuração das posições
// quando for inicializado as peças.
int linha_a = 0;
int linha_b = 0;
int linha_g = 0;
int linha_h = 0;
if (opcao == 1) {
linha_a = 1;
linha_b = 0;
linha_g = 6;
linha_h = 7;
}
else {
linha_a = 6;
linha_b = 7;
linha_g = 1;
linha_h = 0;
}
for (int i=0; i<8; i++) {
for (int j=0; j<8; j++) {
//-- Inserção no tabulerio das preças [ref. branca].
if (i==linha_a) {
peca[i][j] = new JButton(b_piao);
} else if ((i==linha_B) && ((j==7) || (j==0))) {
peca[i][j] = new JButton(b_torre);
} else if ((i==linha_B) && ((j==6) || (j==1))) {
peca[i][j] = new JButton(b_cavalo);
} else if ((i==linha_B) && ((j==5) || (j==2))) {
peca[i][j] = new JButton(b_bispo);
} else if ((i==linha_B) && (j==3)) {
peca[i][j] = new JButton(b_rei);
} else if ((i==linha_B) && (j==4)) {
peca[i][j] = new JButton(b_rainha);
//-- Inserção no tabulerio das preças [ref. preta].
} else if (i==linha_g) {
peca[i][j] = new JButton(p_piao);
} else if ((i==linha_h) && ((j==7) || (j==0))) {
peca[i][j] = new JButton(p_torre);
} else if ((i==linha_h) && ((j==6) || (j==1))) {
peca[i][j] = new JButton(p_cavalo);
} else if ((i==linha_h) && ((j==5) || (j==2))) {
peca[i][j] = new JButton(p_bispo);
} else if ((i==linha_h) && (j==3)) {
peca[i][j] = new JButton(p_rei);
} else if ((i==linha_h) && (j==4)) {
peca[i][j] = new JButton(p_rainha);
} else {
peca[i][j] = new JButton(null_image);
}
peca [i][j].setBackground( background[intColor] );
peca [i][j].addActionListener(this);
getContentPane().add( peca [i][j] );
intColor = (intColor + 1) % 2;
}
intColor = (intColor + 1) % 2;
}
}
public static void main( String args[] ) {
xadrez objJanela = new xadrez();
objJanela.show();
}
public void actionPerformed ( ActionEvent e ) {
for (int i=0; i<8; i++) {
for (int j=0; j<8; j++) {
if ( e.getSource() == peca[i][j] ) {
if ( getPeca == false ) {
//-- Rotina que valida a 1º jogada a ser efetuada no jogo, sendo permitido
// apenas cavalo e peão branco.
if ((ct <= 0 ) && ( (((ImageIcon) peca[i][j].getIcon()).getDescription() != "Pb0")) && (((ImageIcon) peca[i][j].getIcon()).getDescription() != "Cb0")) {
JOptionPane.showMessageDialog(null, "Opssss ... Peça não autorizada para movimentação ! ","UNG" , JOptionPane.ERROR_MESSAGE);
break;
}
//-- Rotina que valida a jogada seguencial da peca da mesma cor.
else if ( Integer.parseInt( ((ImageIcon) peca[i][j].getIcon()).getDescription().substring(2,3) ) == ps_ref) {
JOptionPane.showMessageDialog(null, "Opssss ... Erro na seguencia da jogada !","UNG" , JOptionPane.ERROR_MESSAGE);
break;
} else {
trans.setIcon( peca[i][j].getIcon());
peca[i][j].setIcon( new ImageIcon("") );
getPeca = true;
//-- Atribuindo as referencias da peca selecionada.
ps_i = i;
ps_j = j;
ps_peca = ((ImageIcon) trans.getIcon()).getDescription();
ct = ct + 1;
break;
}
/* ===========================================
* | REGRAS DE MOVIMENTAÇÃO DA [ TORRE ]
* =========================================== */
} else if ( (getPeca == true) && ((ps_peca == "Tb0") || (ps_peca == "Tp1")) ) {
//-- Regra : movientação [vertical x horizontal] das torres.
//-- problema se existe alguma peca na frente. ancapsular regra
if ( (i!= ps_i) && (j!=ps_j) ) {
getPeca = false;
JOptionPane.showMessageDialog(null, "Opssss ... Movimentação da [Torre] não autorizada !","UNG" , JOptionPane.ERROR_MESSAGE);
peca[ps_i][ps_j].setIcon( trans.getIcon() );
ct = ct - 1;
break;
//-- Regra : Que verifica a existencia de alguma peça no raio
// de jogada, [validação da coluna] .
} else if ( (ps_i!=i) && (ps_j==j) ) {
vOrient = 0;
vDimensao = Dimensao(ps_i,i);
if (ps_i < i) {
for (int in=0; in<vDimensao; in++ ){
if (( ((ImageIcon) peca[ (ps_i+in) ][j].getIcon()).getDescription() != "") && ((ImageIcon) peca[ (ps_i+in) ][j].getIcon()).getDescription() != "null") {
vOrient = vOrient - 1;
} else {
vOrient = vOrient + 1;
}
}
} else {
for (int in=0; in < vDimensao; in++ ){
if (( ((ImageIcon) peca[ (ps_i-in) ][j].getIcon()).getDescription() != "") && ((ImageIcon) peca[ (ps_i-in) ][j].getIcon()).getDescription() != "null") {
vOrient = vOrient - 1;
} else {
vOrient = vOrient + 1;
}
}
}
//-- Verifica do conteúdo do objeto [vOrient], reponsável pela
// identificação de passagens da condição acima.
if ( (vOrient == vDimensao) ) {
peca[i][j].setIcon( trans.getIcon() );
getPeca = false;
ps_ref = Integer.parseInt( ((ImageIcon) trans.getIcon()).getDescription().substring(2,3) );
break;
} else {
getPeca = false;
JOptionPane.showMessageDialog(null, "Opssss ... Movimentação da [Torre], existem \n peças em seu raio de jogada !","UNG" , JOptionPane.ERROR_MESSAGE);
peca[ps_i][ps_j].setIcon( trans.getIcon() );
break;
}
//-- Regra : Que verifica a existencia de alguma peça no raio
// de jogada, [validação da linha] .
} else if ( (ps_i==i) && (ps_j!=j) ) {
vOrient = 0;
vDimensao = Dimensao(ps_j,j);
if (ps_j < j ) {
for (int in=0; in<vDimensao; in++ ){
if (( ((ImageIcon) peca[i][ (ps_j+in) ].getIcon()).getDescription() != "") && ((ImageIcon) peca[i][ (ps_j+in ) ].getIcon()).getDescription() != "null") {
vOrient = vOrient - 1;
} else {
vOrient = vOrient + 1;
}
}
} else {
for (int in=0; in < vDimensao; in++ ){
&Carregando comentários...