informacion[arroba]digitallearning.es +34 958084455
Título curso Aprende a programar (con Javascript)

Ejercicios: control flujo de programa

Ejercicio 2: simulador juego de cartas

Vamos a elaborar un script que simule una versión  del juego de cartas “veintiuno/a” o blackjack. En ese juego, también similar a las “siete y media/o” en baraja española, un jugador va pidiendo cartas y acumula los puntos que tiene el valor de cada una de ellas, tratando de llegar a 21, o lo más cerca posible que el resto de jugadores. Si se pasa, pierde, y si se ‘planta’, es decir, no pide más cartas antes de llegar a 21, y hay varios jugadores que han hecho lo mismo, gana el que más cerca se quedó.

Nosotros vamos a simplificar, porque nuestro objetivo principal es practicar la lógica de un proceso que incluye condicionales y bucles, sin querer reproducir todas las características o reglas de ese juego. Solo habrá ‘cartas’ con valor del 1 al 10, y jugaremos solo contra la máquina.

Vamos a dividir el programa en dos versiones como en el anterior ejercicio, la primera con una funcionalidad más básica y la segunda, más completa.

Versión 1: un solo jugador

En esta versión vamos a jugar solos. Como es una variación más simple del juego pondremos la regla de que si llegamos o sobrepasamos los 18 puntos (y quedamos por debajo de 21), conseguimos un empate y si llegamos a 21, ganamos. Si nos pasamos de 21 (o nos quedamos por debajo de 18), perdemos. El programa deberá hacer lo siguiente:

  • El programa empezará dándonos una carta, mostrando su valor en pantalla (cuadro ‘resultados’) y nos preguntará si queremos una nueva o no.
  • Si pulsamos ‘s’ (también será válido si teclea ‘S’ por error) nos la dará, calculará lo que llevamos acumulado y lo volverá a mostrar en pantalla. Salvo que hayamos llegado a 21, ó nos hayamos pasado, nos volverá a preguntar si queremos carta.
  • Si pulsamos cualquier otra tecla, acabará nuestro turno con los puntos que llevamos acumulados.
  • Si llegamos justo a 21, ganamos y si nos pasamos de 21, perdemos. En ambos casos se acaba la partida y sale un pop-up con el mensaje: “¡ Enhorabuena, has ganado !” o “Lo siento, has perdido”, respectivamente, aparte de mostrar en pantalla los puntos que llevábamos (21, en el primer caso, o una cifra superior en el segundo).
  • Si nos hemos plantado en una puntuación inferior a 21, si es por debajo de 18 puntos nos mostrará el mensaje “¿Qué has hecho? ¡ Has perdido por no pedir más!” y si es igual o superior a 18 , no mostrará: “Has conseguido un empate” .

Te recomendamos que los intentes por tu cuenta. Con lo que has aprendido hasta ahora podrías hacerlo por ti mismo. No obstante, si te surgen muchas dudas, y antes de consultar la solución propuesta abajo, puedes consultar unas pistas que te damos justo antes de la solución y que pueden ayudarte a realizar el programa.

 

Versión 2: jugar contra la ‘máquina’

En este caso ya jugamos contra el propio programa, así que habrá una mano o turno, donde juguemos nosotros, y otro donde juegue la máquina.

  • En nuestra ‘mano’, el programa nos empezará dando una carta y nos preguntará si queremos una nueva o no.
  • Si pulsamos ‘S’ ó ‘s’ nos la dará, calculará lo que llevamos acumulado y lo mostrará en pantalla y salvo que hayamos llegado a 21, ó nos hayamos pasado, nos volverá a preguntar si queremos carta.
  • Si pulsamos cualquier otra tecla, acabará nuestro turno con los puntos que llevamos acumulados.
  • Si llegamos justo a 21, ganamos y si nos pasamos de 21, perdemos. En ambos casos se acaba la partida y sale un pop-up con el mensaje: “¡ Enhorabuena, has ganado !” o “Lo siento, has perdido”, respectivamente, aparte de mostrar en pantalla los puntos que llevábamos (21, en el primer caso, o una cifra superior en el segundo).
  • Si nos hemos plantado en una puntuación inferior a 21, será el turno de la máquina. El programa nos preguntará cuántas cartas pedirá en su turno (por defecto, tendrá 3). De esta forma estableceremos una especie de nivel de dificultad del juego (si, respondemos 1 ó 2, la máquina nunca llegará a 21. Si decimos un nº alto es probable que se pase)
  • La máquina avisará con un mensaje que empieza su turno y va mostrando en pantalla (cuadro ‘resultados’) los puntos que saca y los que va acumulando con las cartas que le hemos dicho que saque.
  • Si se pasa, ganamos y nos muestra el mensaje.
  • Si llega a 21, gana y nos muestra el mensaje de que hemos perdido.
  • Si es inferior a 21, comparará con nuestra puntuación, y según sea mayor o menor, nos dará el consiguiente mensaje (hemos perdido, o hemos ganado). Si la puntuación es igual a la nuestra nos mostrará: “Hemos empatado!”

Soluciones a simulador de cartas (versiones 1 y 2)