PROGRAMACIÓN I DPTO. INFORMÁTICA

Práctica de Programación I

Curso 1999-2000


  1. Introducción
  2. Objetivo de la práctica
  3. Descripción detallada
  4. Unidad externa pantalla
  5. Parte opcional
  6. Evaluación
  7. Normas de entrega
  8. Miscelanea

1. Introducción

Como es sabido, el juego del ajedrez es originario de la India. Incluso la propia palabra ajedrez procede del término sánscrito chaturanga, que significa "el Juego de los Cuatro Reyes".

De hecho, el ajedrez se sigue jugando en la India en su forma original, que (como indica su nombre) es ligeramente distinta a la habitual. Para empezar, no se tienen sólo dos bandos sino cuatro (Amarillo, Rojo, Verde y Negro), y no existe la pieza que representa la Dama. No obstante, el resto de las figuras y el tablero de juego son iguales al del ajedrez que conocemos. La disposición inicial de las 32 piezas en el tablero es la siguiente:


A pesar de existir cuatro bandos, no es un juego de todos contra todos, sino que los bandos Amarillo y Rojo cooperan entre sí, al igual que los bandos Verde y Negro. Así sucede que, por ejemplo, las piezas del bando Amarillo no pueden comer a las piezas del bando Rojo (bando aliado) y si a las piezas de los bandos Verde y Negro (bandos contrarios).

La partida se desarrolla por turnos, comenzando a mover el bando Amarillo y continuando los bandos Verde, Rojo y Negro. Cuando es capturado (comido) el rey perteneciente a uno de los bandos, ese bando deja de jugar, y su turno pasa al siguiente bando. La partida termina, evidentemente, cuando dos bandos aliados han dejado de jugar por haber sido capturados sus dos reyes.

Otras diferencias respecto al ajedrez normal residen en el movimiento de los peones (su dirección de movimiento depende del bando) y no existen (o no se van a contemplar) el jaque, la coronación, la captura de peones en passant ni la elección de mover dos casillas los peones en la primera jugada. Tampoco existe la posibilidad de que la partida termine en tablas.

Por último, el enroque existe aunque tan sólo se va a contemplar como parte opcional.

2. Objetivo de la práctica

El objetivo de la práctica es crear un programa Pascal que sirva de tablero de juego para que varias personas puedan jugar una partida de chaturanga y guardar su desarrollo en un fichero de texto. La partida podrá ser nueva o la continuación de alguna partida ya comenzada (y almacenada en un fichero de texto).

Debe quedar claro que nuestro programa no va a jugar al chaturanga, sino tan sólo servirá de interfaz para que jugadores humanos lo puedan hacer. Sus principales responsabilidades serán representar el tablero en la pantalla, leer las jugadas y detectar si son correctas o erróneas de acuerdo a las reglas del juego.

3. Descripción detallada

La parte principal del programa consistirá en la repetición de las siguientes tareas: leer una jugada, verificar que es válida dado el estado del tablero, realizar la jugada, y mostrar los cambios en pantalla.

A. INICIO DEL PROGRAMA

Como resultado de la ejecución del programa siempre se va a obtener un fichero de texto que contendrá la lista de jugadas realizadas, a razón de una jugada por línea, y con la misma notación que usará el usuario para indicarlas. Por lo tanto, lo primero que debe hacer el programa es preguntar el nombre que queremos darle a ese fichero que va a crear:

      Nombre del fichero donde se salvara la partida: _

El siguiente paso es preguntar al usuario si desea jugar una partida nueva o continuar una existente:

      Desea continuar una partida? [S/N] _

Si la respuesta es N, el programa comenzará el ciclo de presentar el tablero y pedir, comprobar y realizar jugadas detallado posteriormente. Pero si la respuesta es S, el programa preguntará el nombre del fichero que almacena la partida que se va a continuar:

      Nombre del fichero que almacena esa partida: _

Y a partir de ese momento, el programa leerá las jugadas almacenadas en el fichero y las procesará exactamente igual que si las introdujera el usuario. Por lo tanto, la salida por pantalla deberá ser la misma que se detalla a continuación para el caso de jugadas leídas por teclado (incluyendo el que el usuario tenga que pulsar intro para poder observar el efecto de la jugada), con la única salvedad de que ahora las jugadas se leen de un fichero.

Cuando se termine el fichero, o bien en el momento en que se detecte que alguna jugada es errónea, el programa continuará con el ciclo de presentar tablero y pedir, comprobar, y realizar jugadas pero ahora pidiéndoselas al usuario.

B. PRESENTACIÓN DEL TABLERO EN PANTALLA

El aspecto del programa, en un momento dado de la ejecución, debe ser el siguiente:

Nota: La numeración de la parte superior e izquierda de la imagen no debe aparecer en pantalla, se incluye para mostrar la forma en que se accede a filas y columnas de la pantalla cuando se utilicen los procedimientos BorraFila, Cursor y Rejilla de la unidad Pantalla.

El tablero se muestra como una rejilla dentro de la cual aparecen las piezas representadas por letras del color del bando correspondiente. En la línea 20 se escribe el nombre del bando que tiene el turno y se solicita la jugada del bando al usuario (o se escribe directamente, si se están leyendo las jugadas de un fichero).

La línea 22 sirve como línea de estado, en la que se muestran mensajes referentes a la comprobación de la jugada.

C. NOTACIÓN DE LAS JUGADAS

Para indicar una jugada se utilizará una cadena de cinco caracteres con donde aparecerán la casilla origen (que contiene la pieza que se desea mover) y la casilla destino (que indica el lugar donde se quiere mover la pieza), separadas por un guión. Para indicar una casilla se usan dos caracteres: El primero es el número de su fila y el segundo la letra de su casilla.

D. MOVIMIENTOS DE LAS PIEZAS

En el juego de chaturanga, al igual que en el ajedrez normal, es obligatorio que el bando al que corresponde el turno mueva una y sólo una de sus piezas (excepto en el enroque, ver parte opcional). No es posible pasar el turno ni cederlo al bando aliado. Se supondrá que nunca se va a dar una situación en la que ninguna de las piezas de un bando tenga casillas donde hacer un movimiento válido.

En los ejemplos siguientes se va a suponer que la partida se encuentra en esta situación:


E. COMPROBACIÓN DE UNA JUGADA

Cuando se ha obtenido una jugada, ya sea procedente de un usuario o de un fichero de texto, es necesario comprobar si es válida dado el estado de la partida. Se sugiere que la validación se realice mediante las siguientes etapas:

4. Unidad externa pantalla

Para facilitar las tareas de presentación de datos en la pantalla, se ha creado una unidad externa que define un conjunto de procedimientos que pueden usarse en la práctica.

La unidad se encuentra definida en el fichero pantalla.tpu y debe encontrarse en el directorio de Turbo-Pascal. Para que un programa pueda usar los procedimientos definidos en la unidad, basta que aparezca la siguiente línea tras la cabecera del programa:

    uses pantalla;

Los tipos de datos y procedimientos definidos son los siguientes:

5. Parte opcional

Como parte opcional se propone el tener en cuenta la jugada de enroque: En esta jugada, el rey y la torre de un mismo bando intercambian sus posiciones. Para que se pueda llevar a cabo es necesario que el rey y la torre se encuentren en su posición de inicio de la partida.

Para indicar una jugada de enroque se utilizará la misma notación que para el resto de jugadas, suponiendo la casilla origen es la ocupada por el rey y la de destino la ocupada por la torre.

6. Evaluación

Para la evaluación de la práctica, los alumnos deberán presentar:

Para la evaluación de las prácticas se citará a cada subgrupo de prácticas según un horario y forma que se establecerá en su momento.

7. Normas de entrega

7. Miscelanea