Avance del proyecto final Tablero de ajedrez: Primero especificamos algunas de las restricciones que debe tener el programa: 1. La nomenclatura de las piezas ingresadas por el usuario debe ser la misma que la que usa el programa para ejecutar su algoritmo, de lo contrario este no podrá correr. 2. Las posiciones de cada una de las fichas que ingresa el usuario deben estar en el rango del mismo tablero, este es desde la letra “A” hasta la letra “H”, y desde el número 1 hasta el número 8; si el usuario ingresa alguna letra o algún número que no corresponde a dicho rango, entonces el programa no correrá. 3. El rango de movimiento de las piezas del tablero de ajedrez deberá ser de la siguiente manera: El peón: este sólo podrá moverse en dos sentidos, el primero es hacia adelante una casilla si no tiene ninguna otra pieza que obstruya su paso, pero también podrá moverse dos casillas hacia adelante si todavía está en su posición inicial de juego, el segundo tipo de movimiento es en diagonal hacia arriba una casilla (noroeste o noreste), pero sólo podrá hacer este tipo de movimiento si va a comerse una pieza del oponente, de lo contrario no podrá moverse de esta manera. La torre: esta sólo puede moverse hacia las casillas de los lados, del frente o de atrás, lo podrá hacer sólo si no hay piezas que se interpongan en su trayectoria, pero podrá comerse una pieza del oponente si esta ocupa un lugar que esté en su intervalos de recorrido. El alfil: Este es muy similar a la torre, con la diferencia de que sólo se mueve en diagonal, operan las misma restricciones que tiene la torre pero hay una condición nueva, y es que cada jugador tendrá dos alfiles, uno tendrá un recorrido que va sólo por las casillas de un color y el otro irá por el otro color, entonces cada alfil sólo podrá moverse en diagonal según su color asociado. El caballo: este tendrá un tipo de movimiento bastante peculiar, y es que para moverse de una casilla a otra sólo lo podrá hacer desplazándose dos casillas hacia un lado, ya sea hacia arriba o abajo o hacia los lados, y después se desplazará una casilla hacia el lado perpendicular a la trayectoria que acabó de ejecutar, el caballo podrá “saltarse” otras piezas que estén en su trayectoria de movimiento pero que no estén en el punto final de su movimiento, a no ser que vaya a comerse la pieza que ocupe ese lugar. La reina: esta será la pieza que tendrá todos los rangos de movimiento de todas las fichas exceptuando el caballo, operan las mismas restricciones de movimiento de las otras piezas exceptuando la del caballo. El rey: esta pieza sólo podrá moverse una casilla en cualquier dirección y podrá comer cualquier pieza enemiga que se encuentre allí, ya sea en diagonal o hacia los lados o hacia arriba o abajo, pero sólo podrá hacerlo si al moverse hacia esa casilla no queda amenazado por una pieza del oponente para que esta se lo coma. Si el usuario ingresa dos fichas de manera correcta y sus posiciones en el tablero, el programa deberá devolver una respuesta diciendo si tal ficha puede comerse a tal otra, y esto lo hará por medio de un algoritmo que tendrá como eje principal el manejo de listas de listas, las piezas ingresadas por el usuario tendrán una posición desde 0 hasta 7 de una de las 8 listas que tiene nuestro tablero, además también al ingresar la posición que tiene las piezas en las listas, también deberá ingresar las posiciones de las fichas en las otras 8 listas. En resumen, el usuario ingresará una letra y un número para indicar la posición de una ficha, el número significa la posición de la pieza en una lista y la letra significa la lista en la que se encuentra. El algoritmo básicamente tendrá que leer la posición de la ficha, ver que si esté en el rango del tablero, si así es, podrá ver las posibles casillas a las que puede moverse la pieza y luego ver si en esas casillas está ubicada la otra pieza ingresada, si es así entonces el programa mostrará un mensaje que diga que la ficha puede comerse a la otra; lo mismo se haría para la segunda pieza. En el código deberán ir varios condicionales “if” para ejecutar el filtro de las restricciones de movimiento, las validaciones del rango del tablero y la nomenclatura de las piezas ingresadas por el usuario.