Java - ayuda ajedrez

 
Vista:
sin imagen de perfil

ayuda ajedrez

Publicado por Dennis (15 intervenciones) el 09/11/2021 22:21:28
Porfavor llevo 10 horas intentando resolver este caso, soy nuevo en java
Escribir un programa que dibuje un tablero de ajedrez. Mostrará B por las casillas
blancas y N por las casillas negras. Los tableros de ajedrez son de 8x8 pero en este caso,
dejaremos que el usuario elija de qué tamaño quiere crearlo. Tendrás que tener en cuenta que
siempre será un cuadrado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

ayuda ajedrez

Publicado por Kabuto (1102 intervenciones) el 10/11/2021 10:54:33
Este no es un ejercicio para hacer un juego de ajedrez. Es una propuesta para practicar con bucles y condicionales y aprender a desarrollar una lógica con ellos, cosa que por cierto, va a dar igual si es Java, C#, Python, Pascal, FORTRAN...


Necesitas usar bucles anidados e idear una forma de alternar entre B y N en cada línea.

Un tablero, como su nombre indica, básicamente es una tabla, con filas y columnas.

Si nos fijamos bien, veremos que en las filas impares (1,3,5,7,...), las casillas BLANCAS ocupan las columnas impares.
Y en las filas pares(2,4,6,8...), las BLANCAS ocupan las columnas pares.

Si usamos dos bucles for anidados, uno nos dará los índices de las filas y el otro los índices de las columnas, por tanto, en cada iteración podemos preguntar si la fila es impar, para entonces también detectar las columnas impares donde poner BLANCAS.
Y si la fila es par, entonces en las columnas impares pondremos las NEGRAS.

Así pues, tan solo hay que preguntar al usuario el tamaño que quiere, que será el limite que usaremos para los bucles for.
Y ya dentro de cada bucle anidado, hacer las preguntas necesarias para detectar las filas impares en uno, y las columnas pares en el otro.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.util.Scanner;
 
public class Tablero {
 
	public static void main(String[] args) {
 
		Scanner teclado = new Scanner(System.in);
		System.out.print("Tamaño deseado: ");
		int tam = teclado.nextInt();
		teclado.close();
 
		for (int fila = 0; fila < tam; fila++) {
			System.out.println();
			//En las filas impares, pondremos BLANCAS en columnas impares
			if (fila % 2 != 0) {
				for (int columna = 0; columna < tam; columna++) {
					if (columna % 2 != 0) //Ponemos BLANCA
						System.out.print("B ");
					else //Ponemos NEGRA
						System.out.print("N ");
				}
			}
			else {//En las pares, ponemos BLANCAS en las columnas pares
				for (int columna = 0; columna < tam; columna++) {
					if (columna % 2 != 0) //Ponemos NEGRA
						System.out.print("N ");
					else //Ponemos BLANCA
						System.out.print("B ");
				}
			}
		}
	}
}

Al ejecutarlo, en pantalla veremos que se dibuja el "tablero" con BLANCAS y NEGRAS alternando sus posiciones.

1
2
3
4
5
6
7
8
9
10
11
12
Tamaño deseado: 10
 
B N B N B N B N B N
N B N B N B N B N B
B N B N B N B N B N
N B N B N B N B N B
B N B N B N B N B N
N B N B N B N B N B
B N B N B N B N B N
N B N B N B N B N B
B N B N B N B N B N
N B N B N B N B N B


Por cierto, el código lo he escrito de manera que se entienda lo mejor posible la lógica.

Una vez se ha comprendido, las líneas de código pueden reducirse si empleamos booleans y operadores ternarios.
Teniendo en cuenta que siempre que las columnas que coinciden con las filas (en cuanto a si son pares o impares) llevan BLANCAS, el código puede reducirse así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.Scanner;
 
public class Tablero {
 
	public static void main(String[] args) {
 
		Scanner teclado = new Scanner(System.in);
		System.out.print("Tamaño deseado: ");
		int tam = teclado.nextInt();
		teclado.close();
 
		for (int fila = 0; fila < tam; fila++) {
			System.out.println();
			boolean filaImpar = fila % 2 != 0;
 
			for (int columna = 0; columna < tam; columna++) {
				boolean columnaImpar = columna % 2 != 0;
				System.out.print(filaImpar==columnaImpar?"B ":"N ");
			}
 
		}
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

ayuda ajedrez

Publicado por Dennis (15 intervenciones) el 10/11/2021 12:03:15
MUCHISIMAS GRACIAS, ES BUENO QUE EXISTA GENTE TAN AMABLE Y QUE TE PRESTE SU AYUDA CUANDO LA NECESITAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar