Xanoca Posted April 30, 2013 at 06:06 PM Report #505356 Posted April 30, 2013 at 06:06 PM 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 🙂
HappyHippyHippo Posted April 30, 2013 at 07:55 PM Report #505363 Posted April 30, 2013 at 07:55 PM 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 Portugol Plus
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now