Pues yo sí. Yo sé hacer magia sirviéndome de mis dedos.
No sé cuándo, cómo o por qué exactamente empecé a interesarme por la programación. Pero sí sé que cuando termino de programar algo que sé que sirve para hacer otro algo, experimento una sensación increíble. El simple hecho de pedirle a una cosa inanimada que cobre vida por un instante y realice la tarea que le estoy pidiendo me resulta asombroso. Y más asombro aún me resulta ver que no hay huecos, fallos y que contempla todas las posibilidades de acción de una mente humana. Es decir, que funciona para todos y cada uno de los supuestos que un ser humano podría exigir. Es magia, joder.
Metafóricamente hablando, claro.
El otro día, terminando mi segunda práctica para la asignatura de programación me di cuenta de lo difícil que me resultaba pensar en los algoritmos y el código de según qué ejercicios. Así que, aunque no fue uno de los que más me costó, voy a colgar el código de mi primer juego de ajedrez en Java. Creo que fue el más laborioso, aunque no es ni de lejos un programa que sirva para jugar una partida completa de ajedrez. Pero, joder, me siento orgullosa de este código.
Si queréis probarlo tenéis que tener la herramienta Eclipse (sección Download, ahora mismo la versión que está es Eclipse Classic 3.6.1). Muy rápida y fácil de bajar y ejecutar.
Enunciado ejercicio 5. Ajedrez
Crear una clase que recibirá como parámetros del método main 2 valores, que se almacenarán en 2 variables de tipo entero, una llamada numeroPeon y otra llamada movimiento. Crear un único array para representar un tablero de ajedrez con la posición inicial de todas las piezas. Imprimir por pantalla el tablero. Implementar el movimiento del peón blanco indicado por numeroPeon (el situado más a la izquierda será el 1, etc.), que avanzará 1 ó 2 casillas según indique la variable movimiento, e imprimir por pantalla la situación final de tablero. Si elnumeroPeon no es un número entre 1 y 8, o movimiento no es igual a 1 ó 2, imprimir por pantalla "Movimiento no válido". Representar:
-Casillas vacías: símbolos @ y símbolos #, para casillas blancas y negras
respectivamente.
-Casillas ocupadas: inicial del nombre de la pieza que la ocupa, en
mayúscula para las blancas y en minúscula para las negras (ej. T para una
torre blanca, d para una dama negra, etc.).
package práctica3ªParte;
public class Ejercicio5 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/*Lo primero que hace es comprobar que se introducen dos parámetros. Si no es así, el programa lo notificará y se finalizará.*/
if (args.length>2 || args.length<2){
System.out.println("Han de introducirse dos parámetros.");
System.exit(0);
/*Si el número de parámetros introducido es correcto, entonces transformará los parámetros de tipo String a tipo int y los almacenará cada uno en una variable. También crea un array bidimensional de tipo String de 8x8*/
}else{
int numeroPeon= Integer.parseInt(args[0]);
int movimiento= Integer.parseInt(args[1]);
String [][] tablero= new String[8][8];
/*Atendiendo a las reglas del ajedrez, sabemos que la primera casilla situada más a la izquierda de cada jugador ha de ser negra y que el rey ha de estar en su color. Planteando que nosotros utilizaramos las piezas negras, la diposición del tablero sería la siguiente.*/
//Piezas blancas frente a nosotros.
tablero [0][0]= "T";
tablero [0][1]= "C";
tablero [0][2]= "A";
tablero [0][3]= "D";
tablero [0][4]= "R";
tablero [0][5]= "A";
tablero [0][6]= "C";
tablero [0][7]= "T";
//Peones blancos colocados en sus respectivas posiciones con ayuda de un bucle for.
for(int j=0; j<8; j++){
tablero[1][j]= "P";
}
/*Entre las piezas blancas y las negras hay cuatro filas de casillas vacías. Con ayuda de bucles for inicializamos cada casilla de cada fila con su correspondiente valor.*/
for (int j=0; j<8; j++){
tablero[2][j]="@";
tablero[2][1]="#";
tablero[2][3]= "#";
tablero[2][5]="#";
tablero[2][7]="#";
}
for (int j=0; j<8; j++){
tablero[3][j]="#";
tablero[3][1]="@";
tablero[3][3]= "@";
tablero[3][5]="@";
tablero[3][7]="@";
}
for (int j=0; j<8; j++){
tablero[4][j]="@";
tablero[4][1]="#";
tablero[4][3]= "#";
tablero[4][5]="#";
tablero[4][7]="#";
}
for (int j=0; j<8; j++){
tablero[5][j]="#";
tablero[5][1]="@";
tablero[5][3]= "@";
tablero[5][5]="@";
tablero[5][7]="@";
}
//Los peones negros son colocados en sus respectivas posiciones con un bucle for.
for(int j=0; j<8; j++){
tablero[6][j]= "p";
}
//Piezas negras.
tablero[7][0]= "t";
tablero[7][1]="c";
tablero[7][2]="a";
tablero[7][3]="d";
tablero[7][4]="r";
tablero[7][5]="a";
tablero[7][6]="c";
tablero[7][7]="t";
/*El programa se sirve de dos bucles "for" para recorrer todas las posiciones del array. Empieza asignándoles a las dos variables el valor [0][0] y termina cuando asigna la última posición de las filas y las columnas. Imprime por pantalla el tablero de ajedrez con sus posiciones iniciales.*/
for (int i=0; i
for (int j=0; j
System.out.print(tablero[i][j] + "\t");
}
System.out.println("");
}
/*Imprime por pantalla un mensaje que separa el tablero inicial del tablero con la jugada*/
System.out.println("El movimiento de la jugada:");
/*Antes de ejecutar el movimiento, comprueba que los parámetros introducidos son válidos. Si no lo son, lo notifica y se finaliza.*/
if (numeroPeon>8 || numeroPeon<1){
System.out.println("Movimiento no válido");
System.exit(0);
}
if (movimiento>2 || movimiento<1){
System.out.print("Movimiento no válido");
System.exit(0);
}
/*Si los parámetros son válidos comprueba qué peón ha de mover y de qué color es la casilla que va a abandonar. Esta comprobación la realiza mirando si el parámetro (al que le restamos una unidad ya que la primera posición de los arrays es "0") es par. Si es par implementamos el movimiento del peón blanco asignando a la casilla que deja vacía el color negro y a la casilla donde se traslada el símbolo del peón*/
if((numeroPeon-1)%2==0){
tablero[1][(numeroPeon-1)]="#";
tablero[1+movimiento][(numeroPeon-1)]="P";
/*Si el peón no es par implementamos su movimiento asignando a la casilla que deja vacía el color blanco y a la casilla donde se traslada el símbolo del peón.*/
}else{
tablero[1][(numeroPeon-1)]="@";
tablero[1+movimiento][(numeroPeon-1)]="P";
}
//Por último, se imprime el tablero por pantalla con el movimiento implementado.
for (int i=0; i
for (int j=0; j
System.out.print(tablero[i][j] + "\t");
}
System.out.println("");
}
}
}
}
![]() |
| Ejecución con parámetros 5 y 2. |
Nos vemos.












