Tabla de contenido
Una vez más aquí (después de casi un mes). Durante este tiempo he estado liado con una cosa y otra, y hoy vengo a dejar un pequeño artículo que alguien me ha propuesto hacer, y que me ha parecido un buen ejercicio para practicar Bash. La propuesta que me hizo esta persona fue la de crear un pequeño script con el que emular un juego de tragaperras en Bash.
Supongo que todo el mundo sabe que las tragaperras son uno de los juegos más populares en los casinos, y con este sencillo script, ahora cualquiera puede disfrutar de esa emoción desde la comodidad de la terminal en Linux (sin gastarse el dinero). Por eso, en las siguientes líneas vamos a ver un juego de tragaperras programado en Bash. El usuario dispondrá de 10 créditos para comenzar a jugar.
El código que vamos a ver a continuación es un script de Bash que simula una tragaperras con frutas. El objetivo del juego es obtener una combinación ganadora de tres frutas iguales en los carretes para ganar créditos. A continuación vamos a ver cómo funciona el código paso a paso:
Código de este juego de tragaperras en Bash

Inicialización del juego
Al comienzo del código, se va a definir un array llamado frutas
, que contiene diferentes nombres de frutas representados por emojis. Luego, se establece una puntuación inicial de 10 créditos y se inicializa la variable avances
a 0.
Funciones del juego
El código incluye varias funciones que son utilizadas para diferentes propósitos durante el juego. Estas funciones son:
funcion_fruta_aleatoria()
: Esta función elige una fruta aleatoria del arrayfrutas
y la devuelve.funcion_generar_combinacion()
: Genera una combinación aleatoria de tres frutas llamando a la funciónfuncion_fruta_aleatoria()
. Devuelve la combinación generada.es_combinacion_ganadora()
: Comprueba si una combinación de frutas es ganadora. Recibe una combinación como argumento y verifica si las tres frutas son iguales. Devuelve 0 si es ganadora y 1 si no lo es.mostrar_menu()
: Muestra el menú principal del juego, que incluye la puntuación disponible y las opciones para jugar o salir. Lee la opción seleccionada por el usuario y realiza la acción correspondiente.

jugar_tragaperras()
: Esta función es la más importante del juego. Genera una combinación aleatoria llamando afuncion_generar_combinacion()
, la muestra en pantalla y luego verifica si es una combinación ganadora utilizandoes_combinacion_ganadora()
. Dependiendo del resultado, actualiza la puntuación del jugador y ofrece la opción de utilizar un «avance» si aparecen dos frutas iguales, para cambiar la fruta desigual de la combinación. Después muestra el resultado final y vuelve al menú principal.
Flujo del juego

Después de definir las funciones, se llama a la función mostrar_menu()
para iniciar el juego. El menú muestra la puntuación disponible y las opciones para jugar o salir. Si el jugador elige jugar y tiene créditos disponibles, se llama a la función jugar_tragaperras()
. En caso contrario, se muestra un mensaje de que el jugador se ha quedado sin créditos y se finaliza el juego.
Dentro de jugar_tragaperras()
, se genera una combinación aleatoria de frutas, se muestra en pantalla y se verifica si es ganadora. Si el jugador obtiene una combinación ganadora, se muestra un mensaje de felicitación y se suman tres créditos a la puntuación. En caso contrario, si la combinación obtenida tiene al menos dos frutas iguales, se ofrece la opción de utilizar un «avance» para cambiar la fruta diferente por otra aleatoria. Después de cada ronda, se muestra el resultado final y se vuelve al menú principal.
El código del juego tragaperras
!/bin/bash # array frutas frutas=("🍒cerezas🍒" "🍍piña🍍" "🍉sandía🍉" "🍎manzana🍎") # Puntuación inicial del usuario puntos=10 avances=0 # Función para obtener una fruta aleatoria funcion_fruta_aleatoria() { local indice=$((RANDOM % ${#frutas[@]})) echo "${frutas[$indice]}" } # Función para generar una combinación aleatoria funcion_generar_combinacion() { combinacion=() for ((i=0; i<3; i++)); do fruta=$(funcion_fruta_aleatoria) combinacion+=("$fruta") done echo "${combinacion[*]}" } # Función para comprobar si la combinación es ganadora es_combinacion_ganadora() { local combinacion=("$@") if [[ "${combinacion[0]}" == "${combinacion[1]}" && "${combinacion[0]}" == "${combinacion[2]}" ]]; then return 0 else return 1 fi } # Función para mostrar el menú y obtener la opción del usuario mostrar_menu() { echo "-------------------------" echo "Crédito disponible: $puntos" echo "-------------------------" echo "1. Jugar a la tragaperras" echo "2. Salir" read -p "Selecciona una opción: " opcion case $opcion in 1) if [[ $puntos -gt 0 ]]; then jugar_tragaperras else echo "------------------------------------------------" echo "Te has arruinado. Vuelve cuando tengas dinero!!!" echo "------------------------------------------------" exit 0 fi ;; 2) echo "-------------" echo "¡Hasta luego!" echo "-------------" exit 0 ;; *) echo "---------------" echo "Opción inválida" echo "---------------" mostrar_menu ;; esac } # Función principal jugar_tragaperras() { combinacion=($(funcion_generar_combinacion)) clear echo "----------------------------------------------------------------------" echo "COMBINACIÓN GANADORA: ${combinacion[*]}" if [[ "${combinacion[0]}" == "${combinacion[1]}" && "${combinacion[0]}" == "${combinacion[2]}" ]]; then echo "----------------------------------------------------------------------" echo "¡FELICIDADES!" echo "Has ganado tres créditos" echo "----------------------------------------------------------------------" puntos=$((puntos + 3)) else if [[ "${combinacion[0]}" == "${combinacion[1]}" || "${combinacion[0]}" == "${combinacion[2]}" || "${combinacion[1]}" == "${combinacion[2]}" ]]; then echo "----------------------------------------------------------------------" echo "¡Hay frutas iguales en la combinación!" echo "¿Deseas utilizar un avance? (S/N)" read -r opcion_avance if [[ "$opcion_avance" == "S" || "$opcion_avance" == "s" ]]; then posicion_no_igual=-1 if [[ "${combinacion[0]}" != "${combinacion[1]}" && "${combinacion[0]}" != "${combinacion[2]}" ]]; then posicion_no_igual=0 elif [[ "${combinacion[1]}" != "${combinacion[0]}" && "${combinacion[1]}" != "${combinacion[2]}" ]]; then posicion_no_igual=1 else posicion_no_igual=2 fi if [[ $posicion_no_igual != -1 ]]; then fruta_nueva=$(funcion_fruta_aleatoria) combinacion[$posicion_no_igual]=$fruta_nueva fi clear echo "----------------------------------------------------------------------" echo "COMBINACIÓN GANADORA: ${combinacion[*]}" if [[ "${combinacion[0]}" == "${combinacion[1]}" && "${combinacion[0]}" == "${combinacion[2]}" ]]; then echo "----------------------------------------------------------------------" echo "¡FELICIDADES!" echo "Has ganado tres créditos" echo "----------------------------------------------------------------------" puntos=$((puntos + 3)) else echo "----------------------------------------------------------------------" echo "Lo siento, has perdido un crédito" echo "----------------------------------------------------------------------" puntos=$((puntos - 1)) fi fi else echo "----------------------------------------------------------------------" echo "Lo siento, has perdido un crédito" echo "----------------------------------------------------------------------" puntos=$((puntos - 1)) fi fi read -p "Presiona Intro para continuar..." clear mostrar_menu } # Llamada inicial al menú clear mostrar_menu
Diviértete y juega
¡Ahora que conoces cómo funciona el código de este juego de tragaperras en Bash, estás listo para disfrutarlo! Puedes ejecutar el script en tu terminal y seguir las instrucciones del menú para jugar. Gira los carretes, cruza los dedos y espera obtener una combinación ganadora. Recuerda que el objetivo del juego es divertirse y entretenerse.
Este código se puede encontrar disponible en el repositorio de GitHub en el que también he alojado este pequeño proyecto.