´ lica de Chile Pontificia Universidad Catolica o Escuela Escuela de Ingenier Ingenier´ ıa ´n Depart Departamento de Ciencia de la Computaci Computacion o
IIC1103 – Introducci´ on a la Programaci´ on on on 1 - 2016
Enunciado Tarea 1 Recordatorio: Fecha de entrega: lunes 11 de abril 2016 a las 23:59 hrs. Foro de consulta: https://goo.gl/ANRa8S estrictame ament nte e personal personal. Recuer Este Este trab trabajo ajo es estrict Recuerda da leer leer la Pol Pol´ıtica ıtica de Integ Integrid ridad ad Aca Acad´ d´ emica emica http://www.ing.uc.cl/ciencia-de-lacia-de-la- computacion/programas/lice computacion/programas/licenciatura/ nciatura/ del DCC disponible en http://www.ing.uc.cl/cien politica-de-integridad-academica/ . Se usar´ a un software anti-plagio para detectar la copia (similitud entre c´odigos). odigos).
Objetivo En esta tarea, se espera que practiques los contenidos de variables, operadores, control de flujo utilizando condicionales (if / elif / else ) else ) y manejo de interacci´on on con el usuario a trav´es es de entradas (inputs) y salidas (outputs). Para esto, deber´ deb er´as as programar un juego de cartas entre el usuario y el computador. Las herramientas que puedes utilizar para realizar esta tarea son todas aquellas que hayan sido tratadas en clases hasta la fecha de la entrega.
El juego https://es.wikipedia.org/wiki/Uno_(jueg wiki/Uno_(juego) o) ) En esta secci´on on se explica el juego UcNO, similar al juego UNO (ver https://es.wikipedia.org/ pero con varias simplificaciones. A continuaci´on on se explica los elementos y reglas del juego:
Jugadores Este juego cuenta cuenta con dos jugadores: jugadores: usuario usuario y computado computador. r. Ambos jugar´an an en turnos que son intercalados.
Cartas Se definen por su color y n´umero. umero. Los colores pueden ser verde, azul, amarillo y rojo, mientras que los n´umeros van del 1 al 9 (inclusive). A diferencia del juego UNO no existen las cartas especiales y puedes asumir que existe un mazo infinito de donde se sacan las cartas. Al comienzo del juego, cada jugador tiene cuatro cartas que son generadas aleatoriamente. Adem´ as as en todo momento momento hay una carta en el centro centro de la mesa que se va actualizando actualizando dependiendo dependiendo de la jugada de cada uno de los jugadores.
Desarrollo del juego En cada turno, los jugadores deben tratar de descartar una de las cartas de su mano (inicialmente de 4 cartas). Una carta puede ser descartada descartada y puesta puesta al centro centro de la mesa cuando ´esta esta coincida con el color o el n´umero umero de la carta que est´ a puesta al centro de la mesa. Las opciones para el turno de cada usuario son las siguientes: 1. Jugar carta: el jugador podr´a escoger de sus cartas, cu´al al es la que quiere jugar. En caso de ser una jugada v´alida, el jugador se descarta de esa carta y la carta del centro se actualiza por la que ha entregado el usuario y pasa el turno al computador. En caso de escoger una carta inv´alida, alida, el jugador deber´a escoger otra o bien, cambiar una carta o pasar su turno. 1
2. Cambiar carta: en caso que el usuario considere que no tiene buenas cartas, podr´a cambiar una carta por turno. ´ Este escoge una carta a cambiar, la que se borra de la mano del jugador y es reemplazada por una carta aleatoria. Dado que hay un mazo infinito de cartas, el jugador recibir´a una carta aleatoria (incluso podr´ıa, recibir una nueva carta que coincida con la misma que ha querido cambiar). Una vez cambiada una carta, corresponde el turno del computador. 3. Pasar: el usuario puede no realizar ninguna acci´on, pero seguir participando en el juego. El jugador puede pasar hasta 3 veces seguidas. En caso de pasar m´as de 3 veces seguidas, el juego se acaba y gana quien tenga menos cartas en su mano. Si el usuario decide pasar su turno, le corresponde al computador jugar. 4. Salir del juego: el usuario termina su participaci´ on y el juego termina. Una vez que el usuario ha realizado alguna de las acciones anteriores, corresponde el turno del computador. Las opciones que tiene el computador son: 1. Jugar carta: el computador revisa sus cartas y juega la primera que cumpla con las las condiciones para descartar. Si hay una carta para descartar, el computador la ”saca”de su mano y la ”pone. el centro de la mesa en reemplazo de la que all´ı hab´ıa. En caso de no tener una carta v´alida para descartar, el 50 % de las veces el computador escoger´ a cambiar una carta y el otro 50 % escoger´a pasar su turno. en
2. Cambiar carta: al igual que el usuario, el computador cambiar´a cualquiera (en forma aleatoria) de sus cartas que est´en en su mano y ´esta ser´a reemplazada por una carta aleatoria. 3. Pasar: el computador no realiza ninguna acci´on, pero sigue participando en el juego. Si el computador decide pasar, le corresponde al usuario jugar.
Fin del juego El juego puede finalizar por dos motivos: Existe un ganador: Gana el jugador que ha podido descartarse de todas sus cartas. Alguno de los jugadores ha pasado m´as de 3 veces seguidas.
Tu programa Tu programa deber´a permitir jugar el juego descrito en la secci´on anterior. Espec´ıficamente se pide que el programa permita realizar las siguientes acciones: 1. Dar una bienvenida al usuario explicando las reglas del juego. 2. Iniciar el juego pidiendo el nombre del usuario 3. Repartir en forma aleatoria 4 cartas a cada jugador (usuario y computador) 4. Poner en el centro de la mesa una carta e ir actualiz´andola a medida que los jugadores juegan. Tu programa debe mostrar en cada turno la carta central. 5. Permitir que el usuario y el computador jueguen en turnos intercalados. Siempre parte jugando el usuario. 6. Permitir al usuario escoger su acci´on (jugar carta, cambiar carta, pasar o salir del juego). Debes tener en consideraci´ on lo siguiente: Se debe mostrar (en la pantalla) las cartas del usuario con su respectivo color y n´umero (las cartas del computador no se deben mostrar al usuario). Jugar carta: Debes verificar que la carta escogida por el usuario sea v´alida. Jugar carta: Si el usuario ha escogido jugar una carta inv´alida, se le debe dar un mensaje. Luego, el usuario
podr´ a escoger jugar otra carta, cambiar o pasar su turno. Cambiar carta: Debes verificar que la carta escogida para cambiar est´e en la mano (no haya sido descartada
en un turno previo). Si el usuario ha escogido cambiar una carta, se le debe asignar una nueva aleatoriamente obtenida del mazo infinito. 2
Cambiar carta: Si el usuario ha escogido cambiar una carta que no est´ e en su mano, entonces se le debe dar
un mensaje de error. Luego, el usuario podr´a escoger nuevamente una acci´on a realizar. Pasar: Debes verificar que el usuario pase a lo m´as tres veces seguidas. Si esto ocurre, el juego termina y gana
el jugador que tenga menos cartas en su mano. 7. Realizar jugadas por parte del computador. Para esto, debes tener en consideraci´on lo siguiente: Jugar carta: El computador siempre jugar´ a cuando es posible. El computador deber´a revisar sus 4 cartas y jugar la primera carta que pueda ser descartada.
En caso de no poder jugar, el computador escoger´a cambiar cartas con igual probabilidad que pasar. En otras palabras: el 50 % de las veces que no puede jugar, cambiar´a una carta aleatoria, mientras que el otro 50 % pasar´ a de turno. Cambiar carta: el computador escoger´a al azar una carta disponible de su mano para ser cambiada. Nueva-
mente, se le asignar´a una nueva carta al azar tomada del mazo infinito. Pasar: el computador, al igual que el jugador puede pasar a lo m´as tres veces seguidas. Si esto ocurre, el juego
termina y gana el jugador que tenga menos cartas en su mano. 8. Verificar si hay un ganador al finalizar cada turno. En caso de haber un ganador, terminar el juego y mencionar al ganador. 9. Verificar si el usuario o el computador pas´o su turno m´as de 3 veces seguidas al finalizar el turno del computador. En caso de haber ocurrido esto, tu programa debe terminar el juego y mencionar al ganador, que es quien tiene menos cartas en su mano.
Entrega Debes guardar tu tarea en un archivo con el formato tarea01 rut.py , donde debes reemplazar rut con tu RUT. Por ejemplo si tu rut es 12.345.678-9 el nombre de la tarea deber´ıa ser tarea01 123456789.py . La entrega se realiza en el buz´ on electr´onico, disponible en la p´ agina web del curso: https://puc.classter.net hasta el 8 de abril a las 23:50 hrs.
Ejemplo A continuaci´ on se muestra una ronda donde el jugador 1 y el computador juegan en sus respectivos turnos. En este caso la carta del centro corresponde a una carta de color amarillo y n´umero 8. ------------------------------------------------Turno del jugador 1 Carta central: 8 AM Cartas jugador 1: - Carta 1: 7 VE - Carta 2: 5 AM - Carta 3: 1 AM - Carta 4: 6 AM Opciones: (1) Jugar carta (2) Cambiar carta (3) Pasar (4) Abandonar la partida Que quieres hacer? 1 Que carta quieres jugar (1, 2, 3 o 4)? 4 Bien! ------------------------------------------------Turno del computador Carta central: 6 AM El Computador juega Carta 1
3
En este ejemplo, el jugador 1 ha escogido la opci´on (1) Jugar carta y ha escogido la Carta 4, pues coincide con el color de la carta central. A su vez, el computador ha decidido jugar la Carta 1 de acuerdo a la carta central que ha puesto el jugador 1.
Opcional Si quieres puedes representar el juego de manera que sea m´as interactiva. Por ejemplo, podr´ıas representar el turno del jugador de la siguiente forma: ================== NUEVO TURNO ====================== +--------+ | AM | | | | 8 | | | +--------+ jugador 1 tus cartas son: ............................................... . +--------+ +--------+ +--------+ +--------+ . . | VE | | AM | | AM | | AM | . . | | | | | | | | . . | 7 | | 5 | | 1 | | 6 | . . | | | | | | | | . . +--------+ +--------+ +--------+ +--------+ . . Carta 1 Carta 2 Carta 3 Carta 4 . ............................................... 1. Jugar carta 2. Cambiar carta 3. Pasar 4. Abandonar la partida Que quieres hacer?:
4