Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nordi

xadrez [JAVA]

Recommended Posts

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.