You are on page 1of 5

Pontificia Universidad Catlica de Chile

Escuela de Ingeniera
Departamento de Ciencia de la Computacin

IIC1103 Introduccin a la Programacin


1 - 2017

Enunciado Tarea 3

Recordatorio:

Fecha de entrega: Viernes 16 de junio de 2017, a las 23:50 hrs.

Foro de consulta: https://goo.gl/g6LrzI

Este trabajo es estrictamente personal. Recuerda leer la Poltica de Integridad Acadmica


del DCC disponible en http://www.ing.uc.cl/ciencia-de-la-computacion/programas/licenciatura/
politica-de-integridad-academica/. Se usar un software anti-plagio para detectar similitud entre c-
digos.

Atencin!
Ten en consideracin que no se recibirn entregas fuera del plazo. Tampoco se evaluar tu tarea si te
equivocas al entregar el archivo.

Es tu responsabilidad subir entregas parciales de tu tarea. Se revisar la ltima versin que hayas subido.
Revisa la seccin Entrega para las instrucciones de entrega de tu trabajo.

Objetivo
En esta tarea se espera que apliques en la solucin de un problema todos los contenidos vistos en clases.

El juego
Para esta tarea debers implementar una variacin de Snakes & Ladders. A continuacin, se explican las
reglas del juego.

El juego original1 consiste en un tablero de N M en donde los jugadores juegan por turnos alternados. En
cada turno deben lanzar un dado que va desde 1 hasta 6, inclusive. Luego, estos avanzan la cantidad indicada
por el dado. Si aterrizan sobre una escalera avanzan hasta la posicin donde termina la escalera y en el caso de
haber aterrizado en una serpiente se devuelven hasta la cola de la serpiente. El primer jugador en llegar a la
posicin final del tablero se declara el ganador.

Para tu tarea debers implementar una generalizacin de este juego, para K jugadores, sobre un tablero de
tamao N M .
1
Que puedes jugar en https://www.turtlediary.com/game/snakes-and-ladders.html

1
Reglas del juego
Tablero: El tablero consiste en una lista que contiene 3 posibles casillas, que son representaciones String:

La representacin que se describe a continuacin no tiene relacin en la implementacin


del juego, si no relacin de como se guarda la informacin en los archivos

Portal Positivo: estas casillas tienen como fin hacer avanzar al jugador y su representacin es un
string de la forma "+num", donde num puede tomar el valor de cualquier nmero entero mayor a 0.
Portal Negativo: estas casillas tienen como fin hacer retroceder al jugador y su representacin es un
string de la forma "-num", donde num puede tomar el valor de cualquier nmero entero mayor a 0.
Casilla Normal : estas casillas tienen como representacin el "0"

Partida: El juego comienza con un tablero con portales positivos y negativos colocadas al azar y los
jugadores en la posicin inicial. Se decide de manera aleatoria quin inicia la partida.

Desarrollo: El juego consiste en turnos intercalados en los que cada jugador debe lanzar un dado normal.
Luego, dado el valor del dado, este jugador debe avanzar hasta la posicin indicada.

PosicinIndicada = PosicinActual + ValorDado

Si el jugador despus de la Posicin Indicada cae en una casilla de:

Portal positivo: Si cae en esta casilla, el jugador se transportar hacia el portal correspondiente que
posee el mismo valor positivo, que se encuentra ms adelante en el tablero.
Portal Negativo: Si cae en esta casilla, el jugador se transportar hacia el portal correspondiente del
mismo valor negativo, que se encuentra ms atrs en el tablero.
Casilla Normal Si cae en una casilla normal, el turno del jugador se da por terminado hasta la
prxima ronda.

Trmino: El juego termina cuando algn jugador logra llegar de forma exacta a la casilla final y, de esta
forma, gana, en caso de que el jugador supere la casilla ganadora deber retroceder el excedente.

Si el jugador se encuentra en la casilla PosicinActual y saca ValorDado

2
PosicionActual + ValorDado >CasillaFinal, luego retrocede el excedente y su posicin final queda
en:
P osicionF inal = CasillaFinal Excedente
PosicionActual + ValorDado = CasillaFinal, el jugador automticamente se declara ganador.
PosicionActual + ValorDado <CasillaFinal, termina el turno de forma normal hasta la siguiente
ronda.

Archivos
Adems de lo anterior, debers ser capaz de leer y escribir archivos de estado de partidas que poseen el
siguiente formato:
A,L,J,T
NombreJugador1,Pos1
NombreJugador2,Pos2
.
.
NombreJugadorJ,PosJ
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
A continuacin se explican los parmetros del formato descrito:
A: Ancho del tablero.

L: Largo del tablero.

J: Cantidad J de jugadores.

T: Nmero de turno en que qued la partida.

Ejemplo:

J = 15, T = 3, luego 15 %3 = 0, por lo que le toca al Jugador1, ya que l juega primero.

Jugadores: Nombre de los jugadores, en el mismo orden de ejecucin que los turnos, junto con su posicin
en el tablero.

Tablero: Una lista con todas las posiciones del tablero, separadas por una coma. Las posiciones del tablero
comienzan desde el 1 para su enumeracin.

Casilla: Cada casilla tiene el valor asociado a si es un portal positivo, negativo o casilla neutra.
Debers revisar que el tablero es vlido. Esto es que existen portales (entrada y salida), y que los jugadores no
estn en una posicin de portal invlida, es decir si es positivo no se puede encontrar en el primer portali y si
es negativo no puede estar en el segundo portali . En caso de que esto ocurra debes retornar que no es posible
jugar con la configuracin del tablero.
Aqu se adjunta un tablero de ejemplo, que es equivalente a la foto adjunta en la tarea para que puedas probar
si funciona la lectura.
6,5,6,2,14
Jugador1,28
Jugador2,29
-1,0,+1,-2,+2,0,-3,+2,-4,0,+3,0,0,0,0,0,-2,0,-3,+4,-4,+1,0,0,0,+3,-1,0,+4,0

3
Interaccin
Debes implementar un programa que permita a los jugadores participar por turnos intercalados. En parti-
cular el juego debera:
1. Poder importar una partida anterior.
2. Comenzar una nueva partida.
3. Pedir el nombre de los jugadores.
4. Entregar el orden de los turnos una vez, entregando el nombre de todos los jugadores.
5. Antes de cada turno, debe poder preguntarle al usuario si quiere:
Exportar la partida.
Qu combinacin de dados debera sacar para ganar en la menor cantidad de turnos.
6. Turno:
Mostrar Nombre del jugador - Nmero de turno.
Mostrar estado actual del tablero con sus respectivas dimensiones y las posiciones de los jugadores
dentro del tablero.
Lanzar el dado.
Mover al jugador a donde le corresponda de acuerdo al dado .
Si cae en un portal, mostrar su posicin final y en caso contrario terminar el turno.
7. Retornar jugador ganador una vez terminada la partida.
8. Preguntar si quiere jugar otra partida.

Backtracking
Este tem se evaluara por por separado, y de manera significativa para que lo tenga en cuenta para la
construccin de su tarea.
Para un tablero dado y la posicin de algn jugador, deber decir cul es la combinacin de dados (valores) de
forma ordenada que le permite ganar el juego en la menor cantidad de turnos (camino ms corto).
Debe usar backtracking.

Restricciones
Debe existir la clase Juego.
Se debe utilizar esta clase en la solucin del problema.

Entrega
Debes guardar tu tarea en un archivo de nombre tarea3_numero_alumno.py, donde debes reemplazar
numero_alumno con tu nmero de alumno. Por ejemplo, si tu nmero de alumno es 12345678 el nombre de
la tarea sera tarea3_12345678.py. Debers crear un archivo .zip donde debers incluir los archivos
.py utilizados en tu tarea y deber tener el nombre t3_numero_alumno.zip

La entrega se realiza a travs de un cuestionario en el Siding disponible en la pgina web del curso hasta el
Viernes 16 de junio de 2017 a las 23:50 hrs. No se recibirn entregas atrasadas ni entregadas por otro medio.

4
Tareas que no sean entregadas en un archivo .zip tendrn un descuento por formato de entrega
de 0.5 pts a su nota final.

You might also like