Tarea 2 - Pontificia Universidad Católica de Chile

Anuncio
Pontificia Universidad Católica de Chile
Escuela de Ingeniería
Departamento de Ciencias de la Computación
IIC1102 – Introducción a la Programación
Jueves 03 Mayo de 2007
Tarea 1: Ludo
1.
ENUNCIADO
Ludo es un juego ampliamente conocido a nivel mundial, y el objetivo de esta tarea será
implementarlo. Se juega entre cuatro jugadores, cada uno de los cuales tiene asociado un
color: verde, rojo, azul y amarillo. El tablero sobre el que se desarrolla el juego puede verse a
continuación:
Cárcel Verde
Partida Verde
El tablero tiene 88 casilleros, aquí numerados desde el 0 al 87. Cada jugador posee una
cárcel, donde comienza el juego con 4 fichas de su color. Además, cada cárcel tiene una
salida propia, que es donde se coloca una ficha que escapa de la cárcel. Finalmente, antes de
llegar a la meta hay una recta final. El jugador verde, por ejemplo, tiene una cárcel con los
casilleros 72-75, una salida en el casillero 0 y una recta final en los casilleros 52-56. El caso
para los demás jugadores es análogo.
El objetivo del juego consiste en llevar las 4 fichas del jugador hasta la meta. Para ello, el
jugador deberá sacar sus fichas de la cárcel y avanzar en el orden establecido por los números
hasta dar una vuelta completa, entrando finalmente hasta la recta final. El recorrido efectuado
por una pieza verde está marcado con flechas en el esquema. Nótese que una ficha verde
nunca pasará por el casillero 51, ya que luego del 50 entra al 52, que corresponde a la entrada
a su recta final. El caso de los demás jugadores es análogo, para lo que se considera que el
casillero 51 va seguido por el casillero 0.
Para saber qué jugador comienza el juego se lanza un dado de seis caras y se juega a
partir del jugador que obtuvo el mayor dado, tras lo cual se juega en el orden de las agujas del
reloj. Cada jugador comienza su turno lanzando un dado y, de acuerdo a lo que haya salido,
eligiendo cuál de sus fichas mover (si no es posible mover ninguna de sus fichas, el jugador
pasa), la ficha se mueve tantos casilleros como sea el valor obtenido en el dado, de acuerdo al
recorrido especificado anteriormente. Si el dado tiene un valor de 1 o 6 el jugador también
puede decidir mover una ficha que se encuentre en su cárcel hasta la salida, donde la ficha
queda detenida (inclusive con un 6).
Si la ficha queda en una posición previamente ocupada por una ficha de otro jugador, la
ficha rival es enviada de vuelta a su cárcel correspondiente, por el contrario, no es posible
mover una ficha si esta va a caer sobre una ficha propia. Esta regla es valida inclusive para
fichas que vienen saliendo de la cárcel.
Para llegar a la meta, es necesario llegar a ella como si fuera el casillero siguiente al
último casillero de la recta final, pero es necesario llegar en forma justa o de lo contrario la
ficha rebota tantos espacios hacia atrás de la recta final como sobraron para llegar a la meta.
Por ejemplo, una ficha verde que se encuentre en la posición 54 requiere de un 3 en el dado
para llegar a la meta, si por ejemplo el dado saliera un 5, la ficha avanzaría 3 espacios hacia
la meta y luego retrocedería el resto hasta llegar finalmente al casillero 55.
Un jugador que saca un 6 en el dado tiene derecho a repetir su turno.
2.
LIBRERÍA
Para el desarrollo de esta tarea se dispondrá del uso de una librería externa que
encapsulará algunas funcionalidades del juego. Es obligatorio utilizar esta librería para todas
las operaciones relevantes dado que son requeridas para la correcta corrección de la tarea. No
está permitido, por ejemplo, lanzar un dado externamente mediante otra función de números
aleatorios.
La librería se llama Tarea2.jar y debe ser incorporada en el proyecto del alumno. La
librería provee una instancia estática de la clase llamada “juego”, la cual provee las siguientes
funcionalidades:
/**
* Pide al jugador que ingrese una pieza.
*/
public int elegirPieza()
/**
* Lanza un dado.
* @return El numero obtenido.
*/
public int lanzarDado()
2
/**
* Mueve una pieza
* @param jugador
Numero correspondiente al jugador (0-3)
* @param pieza
Numero correspondiente a la pieza (0-3)
* @param posicion
Posición en que se coloca la pieza (0-87) o 1 para sacarla del tablero.
*/
public void ponerPieza(int jugador, int pieza, int posicion)
/**
* Función que se encarga de la graficación del tablero.
*/
public void repaint()
Para efectos de estas funciones se considera que el jugador verde corresponde al
jugador 0, siguiéndoles los jugadores rojo, azul y amarillo respectivamente. Estas funciones
no revisan la validez de los datos que reciben, por lo que es su responsabilidad asegurar que
los datos con que las llaman sean los adecuados.
3.
ENTREGA
La tarea es estrictamente individual. El plazo de desarrollo de la tarea es hasta el día
jueves 17 de mayo a las 23:59 hrs. El código de la tarea debe ser entregado por correo
electrónico al ayudante ([email protected]) en un archivo con nombre loginpuc.zip o
loginpuc.rar, donde loginpuc corresponde a su usuario en el mail de la universidad (por
ejemplo, jmardonez.zip). El archivo deberá contener todo el código necesario para ejecutar la
tarea (*.java). No es necesario adjuntar un informe para esta tarea, pero la documentación
correcta del código deberá incorporar conceptos de diseño y todo aquello necesario para
hacer que la tarea sea legible y completa. Se descontarán 5 décimas de la nota final por cada
hora (o fracción) de atraso en la entrega de la tarea.
4.
CONSIDERACIONES
Por favor recuerden que la tarea es parte importante del promedio final del curso y que la
detección de cualquier conducta fraudulenta o poco ética en esta será sancionada con suma
severidad, de acuerdo a los criterios explicados previamente por el.
Está prohibido utilizar cualquier materia no pasada en el curso hasta la fecha de
publicación de este enunciado, en particular arreglos. La idea es que practiquen sus
capacidades con el trasfondo de materia que existe hasta dicha fecha. Los otros contenidos
serán evaluados en las siguientes tareas.
Es responsabilidad de los alumnos asegurarse de que su tarea fue correctamente recibida
por el ayudante.
3
Descargar