Criar um pino de tabuleiro

Olá Pessoal! Sou nova no fórum e nova em Java também, como programei muito tempo com C, não estou acostumada a orientação a objetos e meu código acaba ficando muito “mecânico”.
Pois bem, estou fazendo um projeto para a faculdade e já procurei em todos os lugares mas nenhum me ajudou! Quero criar um pino de tabuleiro que ande em forma de cruz(como a torre no xadrez) o máximo que consegui fazer foi que ao clicar em uma casa vizinha a que ele se encontra a imagem do pino se torna invisível, porém ainda preciso que ele não deixe andar na diagonal, se eu estiver em uma casa por exemplo: [0,0] ele deixar meu pino aparecer na [7,6] e também deixar andar apenas oq o meu dado sorteou.
Tentei fazer a maioria dessas condições com um if, mas muitas vezes ele não chegava nem a entrar no if… e não conheço outra forma e nem achei!

Comecei testando em um código menor para depois passar para o meu código oficial! Aqui está o meu código!

Desculpa se tiver um tópico já relacionado, mas infelizmente não achei um q me ajudasse ou um muito parecido com o meu caso! Se tiverem agradeceria de mandar o link, ou me ajudassem mesmo! Obrigada :slight_smile:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.Random;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class MenuAcao extends JFrame implements WindowListener {
	JButton novoJogo = new JButton("Novo Jogo");
	JButton encerraJogo = new JButton("Encerrar o Jogo");
	JPanel painel = new JPanel(new GridLayout(8, 8, 1, 1));
	JButton[][] casas = new JButton[8][8];
	JPanel barraDeFerramentas = new JPanel(new FlowLayout());
	JLabel barraDeEstado = new JLabel("Status do Jogo");
	JMenuBar menuBar;
	JMenu menuAjuda;
	JMenu menuArquivo;
	JMenuItem menuNovo;
	JMenuItem menuSair;
	JMenuItem menuSobre;

	public MenuAcao() {
		super("Grid - Tabuleiro de xadrez");

		addWindowListener(this);
		this.setLayout(new BorderLayout());
		
		this.setLayout(new BorderLayout());
		barraDeFerramentas.add(novoJogo);
		barraDeFerramentas.add(encerraJogo);

		add(barraDeFerramentas, BorderLayout.NORTH);
		add(barraDeEstado, BorderLayout.SOUTH);
		add(painel, BorderLayout.CENTER);
		
		
	
		// add(painel);
		for (int i = 0; i < 8; i++) {
			for (int j = 0; j < 8; j++) {
				casas[i][j] = new JButton();
				painel.add(casas[i][j]);
				
				final int x=i;
				final int y=j;
				
				casas[i][j].addActionListener(new ActionListener(){
					//Escuta para quando clicar aparecer o peão
					public void actionPerformed(ActionEvent e) {
						//geradado(e);
						
						
						
						casas[x][y].setIcon(new ImageIcon("C:/Users/Aline/Desktop/quadradinhostabuleiro/peaovermelho1.png"));
						System.out.println("as coordenas são: "+x +y);
						

						
					
								if(x==0 && y==0){
									casas[x+1][y].setIcon(null);
									casas[x][y+1].setIcon(null);
								}
									
	
	/*					if( x == 1 && y==0)
						{
							casas[x+1][y].setIcon(null);
							casas[x][y+1].setIcon(null);
							casas[x-1][y].setIcon(null);
							
						}
						if( x == 2 && y==0)
						{
							casas[x+1][y].setIcon(null);
							casas[x][y+1].setIcon(null);
							casas[x-1][y].setIcon(null);
							
						}
						if( x == 3 && y==0)
						{
							casas[x+1][y].setIcon(null);
							casas[x][y+1].setIcon(null);
							casas[x-1][y].setIcon(null);
							
						}
						if( x == 4 && y==0)
						{
							casas[x+1][y].setIcon(null);
							casas[x][y+1].setIcon(null);
							casas[x-1][y].setIcon(null);
							
						}
						if( x == 5 && y==0)
						{
							casas[x+1][y].setIcon(null);
							casas[x][y+1].setIcon(null);
							casas[x-1][y].setIcon(null);
							
						}
						if( x == 6 && y==0)
						{
							casas[x+1][y].setIcon(null);
							casas[x][y+1].setIcon(null);
							casas[x-1][y].setIcon(null);
							
						}
						if( x == 7 && y==0)
						{
							
							casas[x][y+1].setIcon(null);
							casas[x-1][y].setIcon(null);
							
						}*/
					}
					
					});
				
				
				
		
				
				if (((i + j) % 2) == 0) {
					casas[i][j].setBackground(Color.white);
				} else {
					casas[i][j].setBackground(Color.black);

				}
			}
		}
	}

	public static void main(String[] args) {
		MenuAcao frame = new MenuAcao();
		frame.setSize(400, 450);
		frame.setVisible(true);
		frame.setLocationRelativeTo(null);
		

		
	}
	/*public void geradado(ActionEvent e){
	
		Random numero = new Random();
		int geradado1 = numero.nextInt(6) + 1;		
	    System.out.println("O valor do dado é: " + geradado1);
	}*/
	

	@Override
	public void windowActivated(WindowEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void windowClosed(WindowEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void windowClosing(WindowEvent e) {
		// TODO Auto-generated method stub
		dispose();

	}

	@Override
	public void windowDeactivated(WindowEvent e) {
		// TODO Auto-generated method stub
		//System.out.println("Terminou com erro");
		//System.exit(1);

	}

	@Override
	public void windowDeiconified(WindowEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void windowIconified(WindowEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void windowOpened(WindowEvent e) {
		// TODO Auto-generated method stub

	}
}

Ve ai

http://javaaberto.blogspot.com.br/2012/05/xadrez.html

A primeira coisa a se fazer é pensar na orientação a objetos, o seu código está totalmente estrutural, como você comentou, vc programa muito com C
e ela é bastante usada estruturalmente.

Aconselho você criar várias classes e relacionar seu projeto com elas.

Por exemplo:

Classe de Peças (Model) -> vai estar descrito todas as peças do seu jogo
Classe de Movimentos (Controller) -> todo comando de movimento que a peça do seu jogo poderá fazer
Classe Jogador (Model) -> para jogadores
Classe Manipulação (Controller) -> toda ação que o jogador poderá fazer no jogo

etc etc…

Desse modo você vai enxergar mais fácil a sua lógica de programação e de uma maneira mais ampla você vai ter ideias de como criar o seu jogo.

se você precisa apenas da torre, então não tem necessidade de reescrever ele orientado a objeto.
mas se no futuro vc precisar implementar outras peças, então seria bom ja refazer agora com orientação a objeto.

o que vc precisa para resolver seu problema é bastante simples.

1°: saber qual posição a peça esta.
2°: verificar onde foi escolhido para peça se movimentar
3°: verificar se a nova cordenada x ou y é igual a que a posição da peça, assim excluindo os movimentos em diagonal.

Obrigada gente! Vou tentar aqui e falo com vocês depois! :wink: