Jump to content
Xanoca

xadrez em java

Recommended Posts

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 :)

Edited by Rui Carlos
Formatação do código.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.