Universidad Diego Portales Facultad de Ingenier´ıa ´ tica Escuela de Infroma
´n I Curso: Computacio Profesor: Jonathan Frez ´n Ayudantes: Jaime Guzma
Tarea 2: Ajedrez Fecha de Entrega: Por confirmar. La tarea es de grupos de a lo mas dos personas, para efecto se sancionar´ a por copia de dos trabajos ”parecidos”.
1
Introducci´ on
Para realizar un juego de ajedrez es necesario tener la nociones basicas del juego, por lo tanto se explicara un poco el juego. Cada bando posee 16 piezas con diferentes capacidades de movimiento, que se mueven en un tablero cuadrado de 8 8 casillas, alternadamente blancas y negras. Las piezas de cada jugador al principio de la partida son un rey, una reina, dos alfiles, dos caballos, dos torres y ocho peones. Las piezas de los dos bandos se distinguen por sus colores, siendo tradicionalmente blancas y negras, aunque frecuentemente se utilizan colores claros y oscuros o incluso dos colores cualesquiera distintos que no necesariamente tienen que ver con los del tablero. Se juega por turnos, y comienza el que juega con blancas, el objetivo final es hacer un jaque mate al rey enemigo. La victoria se puede obtener mediante jaque mate, abandono de uno de los jugadores.
1.1
Tablero
El tablero de ajedrez es una matriz cuadrada con 64 espacios para realizar jugadas, donde en cada extremo se colocan frente a frente las piezas de los jugadores contricantes.
1.2
Piezas
rey R reina D alfil A peon P torre T caballo C
1.3
Reglas
1. Un jugador controla 16 piezas blancas y otro jugador controla 16 piezas negras. 2. El color de cada jugador puede elegirse por comn acuerdo 3. Los jugadores mueven por turnos. En cada turno, un jugador slo puede mover una pieza (con la nica excepcin de una jugada especial llamada enroque, en la cual el rey mueve dos casilleros hacia la derecha o hacia la izquierda y la torre se ubica a su lado opuesto). 4. El jugador que juega con las piezas blancas es siempre el que mueve primero. 1
5. Las piezas no pueden saltar, en su movimiento, una por encima de la otra (a excepcin del caballo, que puede saltar sobre otras, moviendo en ”L”), y de la torre, en el enroque. 6. Una pieza propia, no puede reemplazar a otra de las nuestras en la misma casilla. 7. Los espacios no pueden ser ocupados por una pieza del mismo jugador, pero s una del contrario, precisamente al capturarla (o ”comerla”). 8. La pieza ”comida” se retirar del juego. 9. El rey no puede ser capturado. Un jugador puede sin embargo amenazar al rey contrario, lo que se conoce como jaque mate, haciendo ganar al que pone en jaque al rey enemigo. 10. Cuando un jugador mueve, su rey tampoco puede colocarse en una casilla en donde se encuentre en jaque.
2
Desarrollo
Se debera programar un juego de ajedrez el cual se ejecutara mediante linea de comando de consola, el cual permitira el uso de dos jugadores( humanos). Para el ingreso de la jugada se sealara el turno del jugador correspondiente obedeciendo las reglas mencionadas en la introduccion, el nombre con su identificador de la pieza y la posicion que es solicitada, si la pieza realiza una posicion invalida, por ejemplo la torre se mueve en forma diagonal se debe sealar el error y pedirle al usuario que vuelva a entregar la nueva jugada. A diferencia del ajedrez normal no se dara como restriccion un periodo de tiempo para cada jugada. Por ejemplo : player1
T B1
2
2
Lo que significa que el jugador 1 ( Piezas blancas ) va a mover la torre numero 1 blanca a la posicion de la matriz 2,2 Por lo tanto las siglas para las piezas seran: RB rey blanca DB reina blanca AB1 alfil blanco 1 PB1 peon blanco 1 TB torre blanca 1 CB caballo blanco 1
Para la cantidad de piezas se cambiara el numero para identificarlas y para el caso de las piezas negras (otro jugador, se cambiara la B por N, simbolizando las piezas del jugador 2, piezas negras)
2.1
Accesibilidad
El juego debera tener un menu el cual permita : Empezar un nuevo juego Reiniciar el juego (Solo si existe un jaque o se termino una partida) Salir Imprimir una lista de jugadas por cada usuario
1. Usted deber´ a programar en el lenguaje C ´o C++ , tambi´en deber´a implemtar las estructura que usted estime necesario. 2. Para manipular el stream de entrada usted podra utilizar cualquier recurso de lenguaje de programacion usado para manipularlo con su programa. 2
3. Para poder ejecutar el programa usted no debera realizar ningun tipo de interface grafica el programa s´ olo deber´ a correr por linea de comando. En su defecto debera compilar y ejecutarse por consola: En C , compilar con gcc En C++, compilar con g++
3
Opciones del Programa El programa debe compilar El programa debera tener un archivo README, explicando su ejecucion y funcionamiento El Programa debera correr mediante linea de comando El Codigo Fuente del programa debera estar documentando y bien identado.
4
Restricciones
Su Tarea deber´ a cumplir con los siguientes requerimientos Debe usar C, C++ ´ o Java para realizar Los nombres de archivo que se leen y escriben deben indicarse de manera relativa al directorio en que se ejecuta el programa. Esto significa que no debe obligar a que los archivos se encuentren en una direccion absoluta como C: M is Documentos M iT area, o /home/Yo/MiTarea. Codigo fuente DOCUMENTADO En el inicio del codigo fuente a nivel de comentario debera colocar:
– Nombre y apellido – RUT – Email
5
Recomendaciones Dise˜ ne su solucion antes de programar Realice pruebas de su codigo a medida que va programando Pruebe su entrega antes de enviar su trabajo
3
6
Evaluaci´ on
Su trabajo se evaluar´ a bajo el siguiente criterio: 10% Cumplimiento de las normas de entrega. 20% Funcionamiento del juego de ajedrez. 20% Construcci´ on de la Soluci´ on
Compilaci´ on Informe de Depuraci´ on (Debera incluirlo dentro del archivo README) 50% Prueba de ejecuci´ on. Funcionamiento de cada una de las opciones solicitadas. La salida de su programa, y los archivos que genere, deben seguir las normas indicadas. 1.0 pto. de bonificaci´ on si logra que el corrector no logre hacer caer su programa.
7
Entrega
Como parte de su evaluaci´ on, usted debe enviar un archivo (.tar.gz, .zip, ´ o .rar) que contenga lo siguiente. Codigos fuentes (NO cuentan los binarios ) Archivo README Sin Archivos de prueba.
La forma de entrega via mail o weblogs se establecer´a en ayudantia o catedras.
4