Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Control de Laboratorio N 3 PDF
Control de Laboratorio N 3 PDF
Facultad de Ingeniería
Módulo Básico de Ingeniería
FUNDAMENTOS DE COMPUTACIÓN Y
PROGRAMACIÓN
Enunciado Control de Laboratorio N°3
I. Objetivos
Aplicar los conocimientos de Programación vistos en Cátedra 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 través de la suma de los valores de las cartas. Las cartas numéricas
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 más cada vez, hasta
plantarse o superar los 21. El jugador que supere los 21, queda automáticamente descalificado.
La banca, a diferencia del resto de los jugadores funciona con reglas bastante automáticas:
Si sus cartas suman menos de 16, pedir una carta más.
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 número más 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 intérprete de Python y la
máquina misma, siguiendo las reglas de la banca del juego.
Para su implementación debe tener en cuenta ciertas consideraciones que se detallan en las
secciones siguientes.
1|Página
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 ♠
Tréboles ♣
Dos cartas comodín, 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 también).
Es importante mencionar que comúnmente el Black Jack se juega utilizando no una, sino entre
4 a 8 barajas de naipe inglés. En este caso considere que se utilizarán 2 barajas completas, y
que en cada juego las cartas usadas se reincorporarán a la baraja para juegos posteriores. Esto
significa que en todo momento sólo puede haber como máximo 2 cartas idénticas circulando
entre los jugadores (mismo palo, mismo valor) y como máximo 8 del mismo valor pero distinto
palo (2 de cada palo por valor).
Enunciado Control de Laboratorio N°3 2013
Se reparten dos cartas al azar a cada jugador, la máquina y el usuario, sin mostrarle al usuario
las cartas con las que está jugando la máquina. 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 intérprete de Python podría
presentarse un mensaje del estilo (sin que sea la única opción de representación válida):
Jugador 1 tiene 2 cartas:
- J de Corazones
- 2 de Tréboles
La mano suma 12 en total...
La máquina 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 indicarán en
II.4), y juega siguiendo sus reglas, hasta que la condición de parada de dichas reglas se
cumplan (no se debe indicar al usuario aún cómo le fue a la máquina en sus jugadas).
Cuando la máquina termina de jugar, el jugador, en base a la mano recibida, decide entre
plantarse o pedir una carta más:
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 Tréboles
- 8 de Picas
La mano suma 20 en total...
Si desea pedir otra carta pulse 1, si desea plantarse pulse 2
La opción escogida es: |
3|Página
Si decide plantarse o supera los 21 al solicitar una carta más, se muestran las manos
de la máquina y del jugador y se informa quien fue el ganador. En caso de que
ambos jugadores tengan la misma puntuación 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 sólo al final de cada juego.
Los bloques de programa deben ir claramente definidos, y como mínimo debiera diferenciar:
Indicación: Considere los métodos definidos en el módulo random de Python para seleccionar
aleatoriamente las cartas en cada jugada.
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|Página
=======================================================================
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 Tréboles, 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 Tréboles, 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 N°3 2013
III. Entrega
El plazo máximo para entregar el programa será el día martes 27 de agosto a más 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 guión) por nombre de archivo siguiendo el formato <RUT N°1>-
<RUT N°2>.py por ejemplo:
173454322-18984321K.py
Además en el código, se debe añadir el siguiente encabezado del programa, con los siguientes
datos para identificar su trabajo (Rellene el encabezado del programa con los datos en formato
IDÉNTICO al indicado en el ejemplo a continuación:
# INTEGRANTES
# 1.
# NOMBRE: Juan Carlos Perez Gonzalez
# RUT: 17.345.432-2
# CARRERA: Ingeniería Civil Mecánica
# PROFESOR DE CÁTEDRA: Andrés Rice
# 2.
# NOMBRE: Javier Rojas Madariaga
# RUT: 18.984.321-K
# CARRERA: Ingeniería de Ejecución en Computación e Informática
# PROFESOR DE CÁTEDRA: César Silva
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 más archivos en su implementación, 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 extensión “.zip” o “.rar” con el mismo nombre que se indicó anteriormente.
7|Página
Considere que archivos sin identificador de autores no se considerarán como parte de su
implementación y por ende no serán revisados, ni evaluados.
IV. Evaluación
Los grupos estarán compuestos por un máximo de dos personas, ambas pertenecientes
a la misma coordinación de laboratorio.
Se permite el trabajo individual, sin embargo, esto no significa una disminución en los
criterios de evaluación.
En caso de detectar programas iguales, o con suficientes similitudes entre sí, tanto en
una misma coordinación como en coordinaciones distintas, será considerado un acto de
copia y calificado con nota mínima.
Grupos que entreguen fuera del plazo establecido serán calificados con la nota mínima.
Grupos que sean descubiertos en actos deshonestos serán sancionados con la nota
mínima.
Grupos que revelen aspectos claves de su implementación en USACHVIRTUAL u otras
plataformas serán calificados con nota mínima.
Considere que la implementación de su programa es de responsabilidad única de los
integrantes del grupo, y que tanto en cátedra como en laboratorio se han entregado
todas las herramientas y los contenidos para el desarrollo de ésta, por lo que cualquier
indicio de intervención de un tercero, será sancionado con la nota mínima.
La difusión de este enunciado, solicitando ayuda, ofreciendo dinero a cambio de la
resolución e incluso la publicación de éste dentro del plazo de desarrollo de la tarea, se
considera un acto deshonesto, que daña la imagen de la Facultad de Ingeniería y de la
Universidad de Santiago y será calificado inapelablemente con nota mínima.
Se sancionará con descuentos sobre la calificación 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 añadan funcionalidades adicionales, aspectos de
presentación más elaborados y que en general no se limiten simplemente a resolver el
Enunciado Control de Laboratorio N°3 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 código mismo, las funcionalidades conseguidas, la
estructura del programa, la ejecución del programa, la respuesta a eventos inesperados
y los comentarios en el código fuente.
La nota final de esta evaluación vale como una nota del total de notas de laboratorio, y esta se
divide en dos partes, la implementación y el test de salida con las siguientes características:
Si su nota del test es superior a 4,0, la ponderación es 10% test de salida y 90%
programa.
9|Página