Ir para o conteúdo
Xanoca

xadrez em java

Mensagens Recomendadas

Xanoca

Boa tarde,

Estou a tentar fazer um trabalho em java, mas não estou a conseguir. A pergunta é:

"Faça o programa P06Xadrez que declare um array bidimensional de 8 por 8 chars, no contexto de um tabuleiro de xadrez, que gere aleatoriamente as coordenadas iniciais de uma Torre, um Bispo e uma Rainha, e que mostre o tabuleiro com esses elementos lá colocados e assinalados com um caractere e com todas as quadrículas que estas peças possam atacar marcadas com uma marca. Torre – char ‘T’, marca ‘-‘ na horizontal e ́|’na vertical; Bispo – char ‘B’, marca ́/ ́na diagonal inclinada superiormente para a direita, e ‘\’ para a outra diagonal; e Rainha – char ‘R’, marca ‘+’. Garanta que as três peças não se sobrepõem. Uma quadrícula que tenha uma peça não deverá assinalar qualquer ataque e caso tenha vários ataques numa quadrícula deverá ser assinalada com a marca de ‘*’. O programa deverá gerar nova configuração quando se premir a tecla de enter."

Consegui gerar o tabuleiro com a Rainha, o Bispo e a Torre, só que não sei como fazer a parte das marcas :/ se alguém me quiser ajudar posso por o código que já tenho para verem e se puderem explicar como se faz a parte das marcas.

O código que tenho até agora é o seguinte:

package tps.tp1p1;
public class bla {
public static void main(String[] args) {
// TODO Auto-generated method stub

int tabuleiro[][] = new int[8][8];

char torre = new Character('T');
char bispo = new Character('B');
char rainha = new Character('R');

tabuleiro[(int) (Math.random()*8)][(int) (Math.random()*8)] = torre;
tabuleiro[(int) (Math.random()*8)][(int) (Math.random()*8)] = bispo;
tabuleiro[(int) (Math.random()*8)][(int) (Math.random()*8)] = rainha;

for (int i=0; i<tabuleiro.length; i++){
System.out.println("");
for (int m=0; m<tabuleiro.length; m++){
System.out.print((char) (tabuleiro[i][m]) + ".");
}
}
}
}

Se alguém me puder explicar como faço o resto agradeço :)

Editado por Rui Carlos
Formatação do código.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

aqui tens uma base de código melhor ... diverte-te:

public class Xadrez {
 public static final int WIDTH = 8;
 public static final int HEIGHT = 8;

 public static final char TOWER = 'T';
 public static final char TOWER_HATTACK = '-';
 public static final char TOWER_VATTACK = '|';

 public static final char BISHOP = 'B';
 public static final char BISHOP_DATTACK = '\\';
 public static final char BISHOP_RDATTACK = '/';

 public static final char QUEEN = 'R';
 public static final char QUEEN_ATTACK = '+';

 public static output(char board[][]) {
   // separador
   for (char j = 0; j < board.length; j++) {
     System.out.print("..");
   }
   System.out.println(".");

   // colunas
   for (char i = 0; i < board.length; i++) {
     // linhas
     for (char j = 0; j < board.length; j++) {
       System.out.print("." + board[i][j]);
     }
     System.out.println(".");

     // separador
     for (char j = 0; j < board.length; j++) {
       System.out.print("..");
     }
     System.out.println(".");
   }
 }

 public static void putTower(char board[][]) {
   char x = 0, y = 0;

   // escolher uma posição qualquer dentro do tabuleiro

   // marcar as linhas e colunas com o caracter correspondente
   // ciclo ...

   // marcar a posição da torre
   board[x][y] = TOWER;
 }

 public static void putBishop(char board[][]) {
   char x = 0, y = 0;

   // escolher uma posição qualquer dentro do tabuleiro que não seja nem na
   // linha nem na coluna da torre

   // marcar as diagonais da posição escolhida com os caracteres correspondentes
   // ciclo ...

   // marcar a posição do bispo
   board[x][y] = BISHOP;
 }

 public static void putBishop(char board[][]) {
   char x = 0, y = 0;

   // escolher uma posição qualquer dentro do tabuleiro que não esteja marcada

   // marcar a horizontal, vertical e diagonais da posição escolhida com os caracteres correspondentes
   // ciclos ...

   // marcar a posição da rainha
   board[x][y] = QUEEN;

 }

 public static void solution(char board[][]) {
   clearBoard(board);

   putTower(board);
   putBishop(board);
   putQueen(board);

   output(board);
 }


 public static void clearBoard(char board[][]) {
   for (char i = 0; i < board.length; i++) {
     for (char j = 0; j < board.length; j++) {
       board[i][j] = ' ';
 }

 public static void main(String[] args) {
   char board[][] = new char[WIDTH][HEIGHT];

   do {
     solution();

     // ler o conteúdo do teclado
   } while (1); /* no enunciado não diz como terminar ... */

 }
}


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.