Final Balckjack
Final Balckjack
Final Balckjack
TITULO: 21 BLACKJACK.
SECCIÓN: IX42
ALUMNOS:
Kevin Castilla Jiménez.
Leyla Estrada Ccotarma.
Diana Sofia Montenegro Carhuas.
Leao Osmar Salinas Alvarez.
CURSO: Algoritmos
FECHA: 19/11/2018
1
Resumen
El presente trabajo diseñado para el curso de Algoritmos es el “Juego de
Blackjack”, cuyo origen es desconocido y uno de los juegos con mayor
popularidad en los casinos a nivel mundial. El primer objetivo del juego es ganar la
mano sin pasarse de 21, y segundo vencer al dealer o hacer que este pase el 21.
Debido a la Ley de Reordenamiento y Formalización de la Actividad de
Explotación de juegos de Casinos y Máquinas Tragamonedas, promulgada en el
año 2006, se dio un incremento del 85% en la formalización de dichos
establecimientos.
Este proyecto nace a partir de las necesidades de los jugadores, es decir con la
elaboración del algoritmo muchos de ellos podrán realizar el juego desde su
comodidad mediante la ejecución de una aplicación creada en un documento
Excel habilitado para macros. De esta manera se espera que diversos aficionados
de 21 Blackjack comprendan más acerca del juego, como la manera en la que se
juega, las estrategias, las reglas y entre otros, así podrá más adelante realizar
verdaderas apuestas en los casinos.
Palabras Clave
Blackjack: Resultado que se obtiene al sumar dos cartas entregadas al
jugador.
Dealer o Crupier: Persona encargada de repartir las cartas a los jugadores
Random: Sirve para elegir una carta al azar del 1 al 52.
Depurar: Verifica que el Ramdon no de una carta repetida.
Redimensionado: Se usa cuando no se sabe el tamaño de las cartas que
saldrán, ya que es un juego de predicciones.
2
INDICE
1. Introducción………………………………………………………………………4
2. Marco Teórico …………………………………………………………………...5
3. Análisis y diseño de la solución………………………………………………..8
3.1Análisis de datos de entrada, salida e intermedios…………..8
3.2Modelo temático…………………………………………………11
3.3Algoritmo de solución-representación…………………………12
3.4Diseño procedimientos y funciones……………………………19
3.5Diseño interfaces de entrada y salida…………………………24
4. Implementación Visual Basic para Aplicaciones (VBA)…………………….25
5. Escenario solución………………………………………………………………31
6. Conclusiones…………………………………………………………………….32
7. Recomendaciones………………………………………………………………33
8. Bibliografía……………………………………………………………………….33
9. Apéndices y Anexos…………………………………………………………….34
3
1. Introducción:
Hoy en día, los juegos de azar que ofrecen los establecimientos de casino son
muy atractivos e interesantes para el público en general. Por ello, en la actualidad
en el Perú existen 440 salas de juegos o también referenciado como “casinos”
autorizados, esto lo precisó la Sociedad Nacional de juegos al azar (Sonaja). Con
relación a la industria de los casinos en el país, esta última va en aumento, la gran
mayoría de inversionistas en este rubro son peruanos, y realizan constantemente
mejoras y ampliaciones en las instalaciones de juego. Sin embargo, un gran sector
de personas se preguntará: ¿Qué es lo que hace atractivo estos establecimientos?
La respuesta a esto es que hoy en día el principal atractivo que ofrecen los
casinos son los juegos de azar, estos resultan muy agradables e interesantes para
el público en general, estos lugares cuentan con una amplia diversidad de juegos
como: la ruleta, rueda de la fortuna, dados, juegos de cartas, y por supuesto una
amplia gama de máquinas tragamonedas. Asimismo, uno de los juegos más
populares dentro de los casinos es el Blackjack o también llamado juego del 21, es
uno de los juegos de cartas más atractivo en los casinos de todo el mundo.
El presente trabajo consiste en elaborar un algoritmo que pueda realizar una
simulación del juego de Blackjack, por ello elegimos a Casino Luckia como el
ambiente en el que se desarrollará el trabajo. Casino Luckia es una empresa
española dedicada al juego, con servicios de casa apuestas, casino y máquinas
tragamonedas, tanto en línea como en locales presenciales 1. Se presenta una
partida de Blackjack dentro de las instalaciones con el fin de conocer si el jugador
gana o pierde en su juego. Los aspectos más importantes que intervienen por
resolver en este proyecto implica conocer las reglas del juego y todas las
restricciones que este mismo posee como, por ejemplo: la cantidad de barajas
utilizadas, cantidad de jugadores y apuestas realizadas por los jugadores. Debido
a esto, se implementa un algoritmo que permite conocer el valor obtenido por el
jugador con las condiciones específicas del juego como el hecho de pedir las
cartas necesarias para poder acercarse a los 21. Otro aspecto importante es la
formulación del algoritmo en base a una elección aleatoria de cartas sin que estos
repitan para un mejor realismo.
Para resolver el tema asignado, se ha realizado una investigación del
funcionamiento del juego en los diferentes tipos de Blackjack que existen tales
como el Blackjack americano y europeo. En este caso se eligió el americano
debido a que en el Perú tiene mayor influencia. Asimismo, se ha examinado
acerca de las cantidades máximas y mínimas que se puede apostar en los casinos
de Perú, en especial Casino Luckia; todo esto para construir el algoritmo y deducir
las variables de entrada y salida.
1
Cfr. Luckia
4
Las etapas que solucionan el problema implican el conocimiento del juego en un
casino del Perú. Para ello, se ha ingresado a la página oficial del casino para
extraer sus respectivas reglas y en base a ello, realizar el algoritmo.
La motivación para realizar este proyecto es conocer más sobre el juego y poner
en práctica los conocimientos del curso de algoritmos en la elaboración del trabajo
para construir el aplicativo en Excel. Los recursos disponibles para la realización
de este proyecto es la información que nos brinda internet, libros, computadoras,
cartas de mesa y los integrantes del grupo.
2. Marco teórico:
Este proyecto es un sistema que permite realizar un juego de cartas en
computadora. Para empezar con el juego, a continuación, se explicará en que
consiste: Dicho juego se basa en ganarle al Dealer o Crupier (persona encargada
de dirigir y organizar el juego representando al casino) con una mano que tenga
un valor mayor a la suya, pero sin excederse de 21 puntos, ya que al pasarse
habrá perdido.
Para jugar Blackjack es importante conocer el valor de cada una de las cartas. Las
cartas numeradas del 2 al 10 tienen el mismo valor que marcan, en cambio las
jotas, las reinas y los reyes valen 10 puntos, la pinta de las cartas no tiene
importancia; el “as” puede valer 1 u 11, el jugador escoge de acuerdo a que valor
le da mayor probabilidad de ganar la partida. El juego básico consta de una mesa
con capacidad para hasta 7 jugadores, y un crupier. Cada jugador tiene por
derecho a una casilla donde podrá hacer la apuesta que le plazca, siempre y
cuando se acople a los montos máximos y mínimos que tenga cada casino, se
jugará con cartas barajadas manualmente por el dealer, jugando entre 4 a 8
barajas, usando un “zapato” del que sacará las cartas conforme avance el juego.
Al principio del juego se repartirán dos cartas a cada jugador. El Dealer también se
reparte dos cartas a sí mismo, pero solo una de las cartas queda a la vista de
todos. Dependiendo del valor de tu mano y el de la carta del crupier, el jugador
deberá decidir entre las siguientes opciones:
Doblar: Poniendo una apuesta adicional a la primitiva, el dealer le sirve al jugador
una sola carta sobre las dos iniciales. Cada casino tiene regalas para esta jugada;
unos permiten doblar siempre, sean cuales sean las dos primeras cartas y en
cambio otros solo aceptan doblar si las dos primeras cartas suman 9,10 u 11.
Separar: Si te reparten dos cartas del mismo valor, puedes separar el par, recibir
una carta adicional para cada una de esas cartas, y colocar una segunda apuesta
por la nueva mano.
Asegurar/Seguro: Jugada que consiste en apostar a que el crupier obtendrá
Blackjack, cuando su primera carta es un As. Solo se puede apostar la mitad de la
5
apuesta inicial. Si el crupier obtiene Blackjack paga el jugador dos veces la
apuesta del seguro.
Rendirse: Si considera que sus dos primeras cartas no serán capaces de vencer
al dealer o crupier, rindiéndose solo le será cobrada al jugador la mitad de su
apuesta inicial.
Luego el dealer revela sus cartas, y la mano que se acerque más a 21 será la
ganadora.
Si el valor de las cartas es exactamente 21, tienes un Blackjack y el jugador
ganará la partida sin importar las cartas del dealer, con un premio 3:2.
Si el valor de tus cartas supera los 21 puntos, te habrás pasado y el jugador
habrá perdido su apuesta.
Si el valor de tus cartas supera el valor de las cartas del dealer y es menor
a 21 puntos, el jugador recibirá un premio 1:1.
Si el valor de las cartas del crupier es igual al de las del jugador, el jugador
recupera su apuesta.
Este proyecto pretende realizar en una aplicación a través de un macro Excel,
donde primeramente el jugador tendrá que realizar una apuesta y seguidamente
este recibirá 2 cartas y de la misma forma el crupier, con la diferencia que solo 1
es visible para todos. Para realizar el pedido de la siguiente carta, el usuario del
juego presiona un botón y el sistema automáticamente hace entrega de manera
aleatoria y diferente a las cartas presentes en la mesa, cuando el usuario decida
no recibir más cartas escribe la palabra “No”, de esta manera el crupier mostrará
sus cartas y al comparar los valores se conocerá quien fue el ganador. También,
se implementa la cantidad de créditos del usuario con la funcionalidad de jugar
hasta que estos sean agotados. Además, existen opciones para doblar la apuesta
o rendirse de acuerdo como se desarrolle la partida.
Esta aplicación debe enfocarse en funcionar correctamente por medio de las
validaciones de todos los datos de entrada, diseñar un interfaz de datos de
entrada y salida, la cual permita a cualquier usuario lograr comprender el
programa sin necesidad de instrucciones. El contenido a desarrollar consta de un
algoritmo con las diversas restricciones que el verdadero juego posee para
prosperar como una verdadera partida en un casino.
6
EJEMPLO:
Decisiones del
Repartición Comparación Resultados
jugador
suma:20
Dealer o
Crupier
suma: 20
Jugador recupera
su apuesta.
Caso 1
Jugador decide
pedir 1 carta. Jugador
Jugador decide decide parar y se
pedir 1 carta más. muestran
automáticamente las
cartas.
Suma: 25
¡PERDEDOR!
Caso 2
Pasó de 21.
Jugador decide Jugador decide
pedir 1 carta. Jugador
pedir 1 carta y decide
posterior a ello, parar y se muestran
pedir 1 carta más. automáticamente las
cartas.
7
Suma: 21
¡GANADOR!
Caso 3
Ganó al dealer.
Jugador decide
pedir 1 carta más. Jugador decide parar
y se muestran
Jugador decide automáticamente las
pedir 1 carta. cartas.
Datos Intermedios
8
Nombre Tipo Descripción Rango de valores
9
Es una variable bandera Entre 0 y 1.
que indica que el random
Ok Integer
está yendo correctamente.
Mayor a 0.
Son los contadores.
x, i, j, n, t Integer
10
3.2 Modelo matemático:
El presente trabajo es un juego de cartas, por lo tanto, realizar un modelo
matemático es impredecible, pero sí se puede formular el comportamiento que
este puede tener hasta que el jugador decida parar.
El contador “n” indica el número de veces que se ha repartido la carta, eso
funciona para poder agregarle el tamaño del vector. La sumaD indica el valor del
dealer de la carta obtenida. Se realiza el juego hasta que el jugador decida no
recibir más cartas ya que el blackjack tiene como objetivo llegar a la suma 21
superando al dealer. En base a ello, se empieza con el “n” la primera corrida, el “x”
es una variable que se va asignar al random cada vez que salga se redimensiona
el vector dealer porque ya se escogió un valor, no validamos si salió o no salió
porque es la primera repartición. Por consiguiente, se realiza asignar los
depurados que sirven para confirmar que todas las cartas que anteriormente
fueron repartidas y no vuelvan a repetirse nuevamente en el random debido que
no puede existir dos cartas exactamente iguales. Finalmente, se implementa un
subprograma borrar que tendrá como objetivo vaciar las celdas cada vez que se
intente iniciar el juego.
11
3.3 Algoritmo de solución: Pseudocódigo
12
13
14
15
16
17
18
3.4 Diseño de procedimientos y funciones:
Para desarrollar el algoritmo se optó por el uso de subrutinas en las variables
correspondientes a cada dato, estas subrutinas fueron elaboradas de la siguiente
manera:
En la primera parte, validamos todas las variables de entrada, intermedias y de
salida.
En la segunda parte, utilizando una subrutina nombrado Inicio (), esto nos sirve
para sacar la carta al azar sin repetir la baraja. También, validamos la apuesta con
“DO…LOPP UNTIL” para ingresar la apuesta y asignamos los datos de acuerdo a
su vector y símbolo, por ejemplo:
SIMBOLOS VBA SIMBOLOS VBA
“C” “E”
“T” “R”
19
En la tercera parte, se hace uso de la estructura “DO…LOOP UNTIL” para validar
el 1er y 2do ingreso del dealer, y de igual forma para el jugador. También se hace
uso de la condición.
20
21
En la cuarta parte, se da uso nuevamente del contador implícito “FOR…NEXT”
mostramos las cartas para el dealer y los puntajes. También, evaluamos la
condición de la sumaD1, suma D2 y ambos.
22
Para finalizar con el proceso de este algoritmo se creó una subrutina de nombre
Borrar (), esto sirve para que al iniciar el juego las cartas que quedaron se
eliminen y el jugador pueda empezar nuevamente.
23
3.5 Diseño de la interfaz gráfica:
INTERFACES DE ENTRADA:
Las cartas repartidas tanto para el participante como para el dealer se ejecuta
mediante el botón “Inicio”.
Inicio
24
La respuesta del mensaje ¿Deseas continuar? Dependerá de cada jugador.
25
INTERFACES DE SALIDA:
26
27
28
29
30
31
32
5. Escenarios de solución (elegir el mejor escenario):
Decisiones del
Repartición Comparación Resultados
jugador
suma:20
Dealer o
Crupier
33
Suma: 21
Jugador
Mejor ¡BLACKJAC
escenario K!
¡GANADOR!
El jugador recibe el
par de cartas para Jugador decide
iniciar el juego. quedarse con las
cartas que obtuvo
al inicio.
34
6. Conclusiones:
35
7. Recomendaciones:
Como posibles recomendaciones seria que brinden mayor información de otras
funciones que permitan realizar las validaciones simples de algunas variables y de
esta manera obtener que el algoritmo de solución sea más compacto.
36
9. Apéndices y/o anexos:
Si el curso fuese más extenso, podríamos utilizar muchas más herramientas
que nos brinda Excel como Userform que sirve para ejecutar operaciones
como el registro, eliminación o actualización de datos existentes en el
programa Excel. Por ello se anexa un algoritmo más avanzado, en donde se
observa el uso de las cartas dentro del programa Excel y otros vectores.
Asimismo, este trabajo es el objetivo que tenemos como grupo, pues nos
incentiva a investigar sobre el uso de sus funciones, vectores, entre otros
utilizados en su algoritmo.
Botón “PLAY” da inicio a la partida y “RESET” para borrar las cartas que salieron.
37
Mensaje indica que el jugador excedió la suma de 21.
38