Vous êtes sur la page 1sur 11

Universidad de Santiago de Chile

Facultad de Ingeniera Mdulo Bsico de Ingeniera

FUNDAMENTOS DE COMPUTACIN Y PROGRAMACIN


Enunciado Control de Laboratorio N3

Santiago, Agosto de 2013

Enunciado Control de Laboratorio N3

2013

I.

Objetivos

Aplicar los conocimientos de Programacin vistos en Ctedra y Laboratorio para generar un programa en Python que resuelva el problema indicado.

II.

Problema

El Black Jack, es un juego de cartas de la baraja inglesa, propio de casinos, que consiste en obtener 21 puntos, a travs de la suma de los valores de las cartas. Las cartas numricas suman su valor, las figuras suman 10 y el As toma el valor de 11, o en caso de que el 11 haga que el jugador se supere los 21, toma el valor de 1.

El juego comienza cuando la banca (en este caso el computador), reparte dos cartas a cada jugador, incluido a s mismo. Al recibir las cartas, el jugador tiene la posibilidad de plantarse, es decir, quedarse en conformidad con las cartas que tiene o pedir una carta ms cada vez, hasta plantarse o superar los 21. El jugador que supere los 21, queda automticamente descalificado.

La banca, a diferencia del resto de los jugadores funciona con reglas bastante automticas: Si sus cartas suman menos de 16, pedir una carta ms. Si el valor de sus cartas est entre 17 y 21, plantarse. Si sobrepasa el valor de 21, como el resto de los jugadores, queda descalificado.

Se declara ganador al jugador que tenga el nmero ms alto, igual o inferior a 21, o al jugador que con su mano original de 2 cartas obtenga un Black Jack, es decir, el valor exacto de 21.

Se requiere que implemente un juego de Black Jack que funcione en la consola de Python 2.6, capaz de soportar a dos jugadores, un usuario que interactuar con el intrprete de Python y la mquina misma, siguiendo las reglas de la banca del juego.

Para su implementacin debe tener en cuenta ciertas consideraciones que se detallan en las secciones siguientes.

1|Pgina

II.1.

Respecto al naipe

El Black Jack se juega utilizando la baraja inglesa la cual est compuesta por 52 cartas divididas del siguiente modo: Cuatro palos, dos de color rojo y dos de color negro, de 13 cartas cada uno, los que son: Corazones Rombos Picas

Trboles Dos cartas comodn, una roja y una negra, llamadas Joker, cuyo uso se omite en el caso del Black Jack

Como se dijo anteriormente, cada palo est compuesto por 13 cartas, que se ordenan de menor a mayor rango de la siguiente forma: 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A (correspondiente al valor 1 tambin).

Las cartas con denominaciones alfabticas se inspiran en personajes de la realeza y en ingls se les denomina court cards. La J, conocida como Sota o Jack representa a un sirviente, mientras que la Q, denominada Queen representa la reina. La K se usa para representar al Rey o King en ingls. Finalmente la A se le denomina As o Ace y dependiendo del juego puede ser la carta de mayor valor (11), o ser inferior a las cartas de valor numrico adoptando el valor 1.

Es importante mencionar que comnmente el Black Jack se juega utilizando no una, sino entre 4 a 8 barajas de naipe ingls. En este caso considere que se utilizarn 2 barajas completas, y que en cada juego las cartas usadas se reincorporarn a la baraja para juegos posteriores. Esto significa que en todo momento slo puede haber como mximo 2 cartas idnticas circulando entre los jugadores (mismo palo, mismo valor) y como mximo 8 del mismo valor pero distinto palo (2 de cada palo por valor).

Enunciado Control de Laboratorio N3

2013

II.2.

Respecto a la mecnica del juego

El programa comienza cuando el cdigo se ejecuta, dndole la bienvenida al jugador e invitndolo a jugar. Una vez que el jugador acepta, el juego comienza.

Se reparten dos cartas al azar a cada jugador, la mquina y el usuario, sin mostrarle al usuario las cartas con las que est jugando la mquina. Recuerde que al igual que en el juego de cartas real, se deben generar los procedimientos para asegurar la aleatoriedad de las cartas en cada jugada.

El jugador toma conocimiento de las cartas, por ejemplo, en el intrprete de Python podra presentarse un mensaje del estilo (sin que sea la nica opcin de representacin vlida): Jugador 1 tiene 2 cartas: J de Corazones 2 de Trboles

La mano suma 12 en total...

La mquina por otro lado recibe internamente sus dos cartas (para evitar trampas, debe guardarse un historial de juego en un archivo Historial.txt cuyos requerimientos se indicarn en II.4), y juega siguiendo sus reglas, hasta que la condicin de parada de dichas reglas se cumplan (no se debe indicar al usuario an cmo le fue a la mquina en sus jugadas).

Cuando la mquina termina de jugar, el jugador, en base a la mano recibida, decide entre plantarse o pedir una carta ms: Si el jugador decide pedir otra carta, se agrega el valor de dicha carta a la suma de la mano en juego y se le indica que carta recibi. Jugador 1 tiene 3 cartas: J de Corazones 2 de Trboles 8 de Picas

La mano suma 20 en total... Si desea pedir otra carta pulse 1, si desea plantarse pulse 2 La opcin escogida es: |

3|Pgina

Si decide plantarse o supera los 21 al solicitar una carta ms, se muestran las manos de la mquina y del jugador y se informa quien fue el ganador. En caso de que ambos jugadores tengan la misma puntuacin o hayan superado los 21 ambos, se considera un empate.

Una vez finalizada la partida el jugador tiene la posibilidad de jugar nuevamente, o finalizar el juego. Si se decide jugar nuevamente, se debe establecer un marcador de Ganados, Perdidos y Empates, que se muestra slo al final de cada juego.

II.3.

Respecto a la representacin en Python

Considere que este trabajo fue conscientemente diseado para que no pueda ser resuelto sin realizar las abstracciones de procesos y de datos pertinentes a fin de dividir el problema en secciones manejables y separar las acciones a realizar de las representaciones necesarias, por lo que se recomienda leer detenidamente el documento, e identificar que informacin del enunciado es relevante para el problema y cul corresponde a informacin irrelevante.

Considere que se evaluar la estructura de programas en Python, por lo que a pesar de la envergadura del programa este DEBE estar subdividido en funciones claramente definidas, comentadas, indicando sus entradas, salidas y lo que stas entregan, y de ser necesario ir comentando paso a paso las instrucciones.

Los bloques de programa deben ir claramente definidos, y como mnimo debiera diferenciar:

Encabezado: Indicado la informacin relevante del programa. Definicin de constantes: Indicando la importacin y definicin de valores constantes en el programa. Definicin de funciones: Indicando las funciones necesarias para la ejecucin del programa, adems, se recomienda dividir dichas funciones de acuerdo a: Definiciones de estructuras de datos: Presentando las abstracciones realizadas, para representar barajas, manos, palos, contadores, etc. Funciones de la mquina: Funciones destinadas a que la mquina juegue Black Jack, con las reglas indicadas para la banca en la descripcin del problema

Enunciado Control de Laboratorio N3

2013

Funciones del juego: Funciones destinadas al juego mismo entre la mquina y el usuario, por ejemplo repartir cartas (Ver Indicacin), calcular valor de la mano, definir el ganador, etc.

Funciones del historial de juego: Funciones destinadas a almacenar los resultados del juego en el archivo historial.txt. Funciones de validacin: Funciones extra para considerar que se cumplan condiciones propias del problema.

Considere que identificando y dividiendo el programa en sub-procesos, el problema resultar ms sencillo de abordar para el equipo de trabajo, en caso de alcanzar slo parcialmente los objetivos del Control, se sugiere colocar en los comentarios las abstracciones de datos y procesos implementados y no implementados.

Indicacin: Considere los mtodos definidos en el mdulo random de Python para seleccionar aleatoriamente las cartas en cada jugada.

II.4.

Respecto al archivo historial.txt

Como se menciona en II.2, se requiere la existencia de un archivo historial.txt, en el cual se almacenarn los resultados de los juegos de una sesin, como se muestra en la pgina siguiente, el historial debiera tener por lo menos:

Encabezado: Indicando de que trata el archivo en cuestin, se sugiere usar las bibliotecas de Python de fecha y hora para indicar cundo se realiz el juego. Las manos con las que terminaron en cada partida, indicando cartas y puntaje. El ganador de cada partida El detalle de las partidas si hubo ms de una El resultado marcador final del juego

El objetivo de este archivo es que se muestre de forma legible el resultado de los distintos juegos, considere que el momento en que este historial importa para el desarrollo del juego. El siguiente es un ejemplo del archivo historial.txt que ha de generarse.

5|Pgina

======================================================================= Juego iniciado el 2013-08-18 a las 22:30:00 ======================================================================= Juego 1 - La banca obtuvo: K de Picas, A de Corazones TOTAL: 21 POR BLACKJACK - Jugador obtuvo: 10 de Rombos, 2 de Trboles, 4 de Corazones TOTAL: 16 GANADOR: La banca %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Juego 2 - La banca obtuvo: 9 de Rombos, 7 de Picas, J de Picas TOTAL: 17 - Jugador obtuvo: 10 de Corazones, 8 de Trboles, 2 de Corazones TOTAL: 20 GANADOR: Jugador %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Juego 3 - La banca obtuvo: 7 de Picas, J de Corazones TOTAL: 26 Descalificado - Jugador obtuvo: 9 de Corazones, 8 de Picas TOTAL: 19 GANADOR: Jugador ============================================================= RESULTADO FINAL BANCA: 1 JUGADOR: 2 GANADOR: JUGADOR

==============================================================

Enunciado Control de Laboratorio N3

2013

III.

Entrega

El plazo mximo para entregar el programa ser el da martes 27 de agosto a ms tardar a las 23:55 horas.

Se requiere entregar un archivo .py con el programa desarrollado en Python, con los RUT de sus integrantes (sin puntos, ni guin) por nombre de archivo siguiendo el formato <RUT N1><RUT N2>.py por ejemplo: 173454322-18984321K.py

Adems en el cdigo, se debe aadir el siguiente encabezado del programa, con los siguientes datos para identificar su trabajo (Rellene el encabezado del programa con los datos en formato IDNTICO al indicado en el ejemplo a continuacin:
# -*- coding: cp1252 -*# SECCIN DE LABORATORIO: L-1 # PROFESOR DE LABORATORIO: Carlos Rey # INTEGRANTES # 1. # NOMBRE: Juan Carlos Perez Gonzalez # RUT: 17.345.432-2 # CARRERA: Ingeniera Civil Mecnica # PROFESOR DE CTEDRA: Andrs Rice # # # # # 2. NOMBRE: Javier Rojas Madariaga RUT: 18.984.321-K CARRERA: Ingeniera de Ejecucin en Computacin e Informtica PROFESOR DE CTEDRA: Csar Silva

# DESCRIPCIN DEL PROGRAMA ...<CONTINE CON EL PROGRAMA A PARTIR DE AQU>

Se requiere que suba este archivo a la plataforma USACHVIRTUAL y, como respaldo, enviar una copia al mail de su profesor de laboratorio y de su ayudante de laboratorio ANTES del plazo establecido.

En caso de tener ms archivos en su implementacin, considere que el encabezado debe ser parte de cada uno de los archivos y se debe entregar el trabajo completo en un archivo comprimido de extensin .zip o .rar con el mismo nombre que se indic anteriormente.

7|Pgina

Considere que archivos sin identificador de autores no se considerarn como parte de su implementacin y por ende no sern revisados, ni evaluados.

IV. Evaluacin
Respecto a la evaluacin tenga en consideracin:

Los grupos estarn compuestos por un mximo de dos personas, ambas pertenecientes a la misma coordinacin de laboratorio. Se permite el trabajo individual, sin embargo, esto no significa una disminucin en los criterios de evaluacin. En caso de detectar programas iguales, o con suficientes similitudes entre s, tanto en una misma coordinacin como en coordinaciones distintas, ser considerado un acto de copia y calificado con nota mnima.

Grupos que entreguen fuera del plazo establecido sern calificados con la nota mnima. Grupos que sean descubiertos en actos deshonestos sern sancionados con la nota mnima. Grupos que revelen aspectos claves de su implementacin en USACHVIRTUAL u otras plataformas sern calificados con nota mnima. Considere que la implementacin de su programa es de responsabilidad nica de los integrantes del grupo, y que tanto en ctedra como en laboratorio se han entregado todas las herramientas y los contenidos para el desarrollo de sta, por lo que cualquier indicio de intervencin de un tercero, ser sancionado con la nota mnima.

La difusin de este enunciado, solicitando ayuda, ofreciendo dinero a cambio de la resolucin e incluso la publicacin de ste dentro del plazo de desarrollo de la tarea, se considera un acto deshonesto, que daa la imagen de la Facultad de Ingeniera y de la Universidad de Santiago y ser calificado inapelablemente con nota mnima.

Se sancionar con descuentos sobre la calificacin final a los grupos que no cumplan con las instrucciones del programa y de entrega publicados en el enunciado. Se bonificar a los grupos que aadan funcionalidades adicionales, aspectos de presentacin ms elaborados y que en general no se limiten simplemente a resolver el

Enunciado Control de Laboratorio N3

2013

problema dado (en estos casos indicar en los comentarios o en un archivo .txt, requisitos, modo de uso, funcionalidades extras, etc). Considere que se evaluar el cdigo mismo, las funcionalidades conseguidas, la estructura del programa, la ejecucin del programa, la respuesta a eventos inesperados y los comentarios en el cdigo fuente.

La nota final de esta evaluacin vale como una nota del total de notas de laboratorio, y esta se divide en dos partes, la implementacin y el test de salida con las siguientes caractersticas:

El test de salida, corresponde a un control que ser tomado en la siguiente semana luego de la entrega del trabajo, en horario de laboratorio o el que el profesor de cada laboratorio convenga con su seccin de laboratorio, a fin de verificar que el grupo que presenta un trabajo que es de su autora, en el cul se le preguntar respecto a aspectos funcionales de SU implementacin o la resolucin sin el intrprete de Python de alguno de los sub-problemas del enunciado. Si su nota del test es superior a 4,0, la ponderacin es 10% test de salida y 90% programa. Si su nota en el test de salida es inferior a 4,0, la ponderacin del trabajo es 100% la nota ms baja escogiendo entre el control de salida y la nota del programa.

9|Pgina

Vous aimerez peut-être aussi