nordi 1 Denunciar post Postado Julho 19, 2006 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++ ){ & Compartilhar este post Link para o post Compartilhar em outros sites
abcd_man 0 Denunciar post Postado Julho 29, 2006 Esse código apareceu incompleto aki, acho que o fórum cortou um pouco pq era muito grande, podes mandar de novo, só que dividido??? Compartilhar este post Link para o post Compartilhar em outros sites