Juego de poker en shell script (Poker game in shell script)

Hola de nuevo!
En esta ocasión os traigo el juego del poker para shell script, un ejercicio común en la asignatura de Sistemas Informáticos de los ciclos de desarrollo de aplicaciones, así que vamos a ello!

#!/bin/bash
#SCRIPT QUE IMPLEMENTA EL JUEGO DE LA CARTA MÁS ALTA

#Variales globales
numeros=( 1 2 3 4 5 6 7 8 9 10 11 12 )
palos=( ♥ ♦ ♣ ♠ )
cartas=»»
baraja=»»
nombre=»»
creditos=0
ganancia=0
apuesta=0
k=0

#Crea la baraja a partir de los vectores numeros y palos
function iniciaBaraja(){

#Limpiamos la baraja para cuando se llama al método al inicio de cada partida
for (( i = 0; i <48; i++ )); do
cartas[$i]=»»
baraja[$i]=»»
done

for (( i = 0; i < 4; i++ )); do
for (( j = 0; j < 12; j++ )); do
cartas[$k]=»${numeros[$j]}${palos[$i]}»
k=$((k+1))
done
done

#Desordena (baraja) las cartas
baraja=($(printf «%s\n» «${cartas[@]}» | shuf))
#Reaprovechamos la variable cartas para guardar la baraja en el mismo orden sin el palo (para poder hacer operaciones con ella)
for (( i = 0; i < 48; i++ )); do
cartas[$i]=${baraja[$i]:0:${#baraja[$i]}-1}
done

ronda1
}

#Primera ronda de juego
function ronda1(){
#La baraja ya está desordenada. El Crupier se queda con las cartas 1,3,5 y el Jugador con las 0,2,4. Así se simula la repartición alternativa.
#Representamos el reverso de las cartas con X
creditos=$((creditos-1))
apuesta=1
clear
echo Ronda 1
echo ————————————-
echo «Apustas un crédito para entrar a la partida. Créditos restantes=$creditos»
echo
echo Crupier
echo —————-
echo X X X
echo
echo «$nombre Créditos:$creditos»
echo —————-
echo «${baraja[0]} ${baraja[2]} ${baraja[4]}»
echo
echo «¿Quieres continuar? Pulsa s para Sí o cualquier otra tecla para No»
read elec
case $elec in
«s» ) echo «Cuánto apuestas?»
read cred
creditos=$((creditos-cred))
apuesta=$((apuesta+cred))
ronda2;;
*) echo Te has retirado. Pierdes la partida
jugarOtra;;
esac
}

#Segunda ronda de juego
function ronda2(){
clear
echo Ronda 2
echo ————————————-
echo
echo Crupier
echo —————-
echo «${baraja[1]} ${baraja[3]} X»
echo
echo «$nombre Créditos:$creditos»
echo —————-
echo «${baraja[0]} ${baraja[2]} ${baraja[4]}»
echo
echo «¿Quieres continuar? Para ello debes doblar tu apuesta actual de $apuesta»
echo «Pulsa s para Sí o cualquier otra tecla para No»
read elec
case $elec in
«s» )apuesta=$((apuesta*2))
echo Apuestas apuesta
creditos=$((creditos-apuesta))
iaCrupier;;
*) echo Te has retirado. Pierdes la partida
jugarOtra;;
esac
}

#La inteligencia artificial del crupier
function iaCrupier(){
result=0
echo «El Crupier está tomando su decisión»
puntosC=$((${cartas[1]}+${cartas[3]}))
puntosJ=$((${cartas[0]}+${cartas[2]}+${cartas[4]}))
echo $puntosJ $puntosC
if [[ $((puntosJ – puntosC)) -le 7 ]]; then
result=1
fi

for (( i = 0; i < 10; i++ )); do
echo -n «*»
sleep 0.3s
done
echo
case $result in
1) echo El Crupier decide apostar. La partida continua.
echo Pulsa cualquier tecla para continuar
read pause
ronda3;;
*) echo El Crupier decide retirarse
echo «¡ENHORABUENA. HAS GANADO LA PARTIDA CON $puntosJ PUNTOS!»
read -n1 -r -p «Pulsa cualquier tecla para continuar…» key
jugarOtra;;
esac
}

#Tercera ronda de juego
function ronda3(){
clear
echo «${cartas[1]} ${cartas[3]} ${cartas[5]}»
puntosC=$((${cartas[1]}+${cartas[3]}+${cartas[5]}))
puntosJ=$((${cartas[0]}+${cartas[2]}+${cartas[4]}))
echo Ronda 3
echo ————————————-
echo
echo «Crupier TotalPuntos=$puntosC»
echo —————-
echo «${baraja[1]} ${baraja[3]} ${baraja[5]}»
echo
echo «$nombre TotalPuntos=$puntosJ Créditos:$creditos»
echo —————-
echo «${baraja[0]} ${baraja[2]} ${baraja[4]}»
echo
if [[ $puntosJ -gt $puntosC ]]; then
echo «¡ENHORABUENA. HAS GANADO LA PARTIDA CON $puntosJ PUNTOS!»
elif [[ $puntosJ -eq $puntosC ]]; then
echo «EMPATE A $puntosJ PUNTOS»
else echo «HAS PERDIDO. GANA EL CRUPIER CON $puntosC PUNTOS»
fi

read -n1 -r -p «Pulsa cualquier tecla para continuar…» key

jugarOtra
}

#Función que permite jugar otra partida con los créditos restantes
function jugarOtra(){
clear
echo CRÉDITOS RESTANTES
echo ————————————
echo «$nombre Créditos:$creditos»
echo
echo «¿Quieres jugar otra partida? Pulsa s para Sí o cualquier otra tecla para No»
read elec
case $elec in
«s» ) iniciaBaraja;;
*) echo «Gracias por jugar. Hasta otra ;)»;;
esac

}

clear
echo LA CARTA MÁS ALTA
echo —————–
echo Introduce tu nombre de jugador
read nombre
echo Introduce la cantidad de créditos con la que vas a jugar, sin decimales
read creditos

iniciaBaraja

 

Y esto es todo por ahora y si os gusta ya sabeis, compartid, que es gratis!

Si te gusta, compártelo.

Deja un comentario

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies