138 lines
2.9 KiB
Bash
Executable File
138 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Definimos los jugadores y su puntuación
|
|
declare JUGADOR1
|
|
declare JUGADOR2
|
|
declare JUGADOR1_PUNTOS=0
|
|
declare JUGADOR2_PUNTOS=0
|
|
|
|
# Definimos las opciones disponibles para cada jugador
|
|
OPCIONES_DISPONIBLES=("piedra" "papel" "tijera")
|
|
|
|
# Función utilizada para comprobar que la entrada de usuario
|
|
# sea válida acorde al array anterior
|
|
checkAnswer() {
|
|
ESVALIDA=false
|
|
for respuesta in "${OPCIONES_DISPONIBLES[@]}"; do
|
|
if [[ "$1" == "$respuesta" ]]; then
|
|
ESVALIDA=true
|
|
fi
|
|
done
|
|
echo $ESVALIDA
|
|
}
|
|
|
|
# Función que comprueba el ganador de la ronda a partir de
|
|
# dos argumentos
|
|
checkWinner() {
|
|
case "$2" in
|
|
"piedra")
|
|
if [[ "$1" == "piedra" ]]; then
|
|
echo "EMPATE"
|
|
fi
|
|
if [[ "$1" == "papel" ]]; then
|
|
echo "$JUGADOR1"
|
|
fi
|
|
if [[ "$1" == "tijera" ]]; then
|
|
echo "$JUGADOR2"
|
|
fi
|
|
|
|
;;
|
|
"papel")
|
|
if [[ "$1" == "piedra" ]]; then
|
|
echo "$JUGADOR2"
|
|
fi
|
|
if [[ "$1" == "papel" ]]; then
|
|
echo "EMPATE"
|
|
fi
|
|
if [[ "$1" == "tijera" ]]; then
|
|
echo "$JUGADOR1"
|
|
fi
|
|
;;
|
|
|
|
"tijera")
|
|
if [[ "$1" == "piedra" ]]; then
|
|
echo "$JUGADOR1"
|
|
fi
|
|
if [[ "$1" == "papel" ]]; then
|
|
echo "$JUGADOR2"
|
|
fi
|
|
if [[ "$1" == "tijera" ]]; then
|
|
echo "EMPATE"
|
|
fi
|
|
;;
|
|
|
|
esac
|
|
}
|
|
|
|
# Función encargada de limpiar la pantalla y mostrar la puntuación
|
|
# actual
|
|
status() {
|
|
clear
|
|
echo -e "
|
|
Puntos de $JUGADOR1: $JUGADOR1_PUNTOS / $PUNTOS_LIMITE
|
|
Puntos de $JUGADOR2: $JUGADOR2_PUNTOS / $PUNTOS_LIMITE
|
|
"
|
|
}
|
|
|
|
# Función principal
|
|
main() {
|
|
clear
|
|
echo "Bienvenido!"
|
|
read -p "Número de puntos límite: " PUNTOS_LIMITE
|
|
read -p "Nombre del Jugador 1: " JUGADOR1
|
|
read -p "Nombre del Jugador 2: " JUGADOR2
|
|
|
|
while true; do
|
|
while true; do
|
|
status
|
|
|
|
if [[ "$PUNTOS_LIMITE" == "$JUGADOR1_PUNTOS" ]]; then
|
|
echo -e "JUGADOR 1 GANA"
|
|
exit
|
|
elif [[ "$PUNTOS_LIMITE" == "$JUGADOR2_PUNTOS" ]]; then
|
|
echo -e "JUGADOR 2 GANA\n"
|
|
exit
|
|
fi
|
|
|
|
read -sp "$JUGADOR1: " ELEC1
|
|
T=$(checkAnswer "$ELEC1")
|
|
if [[ "$T" == false ]]; then
|
|
echo "ENTRADA INVALIDA"
|
|
sleep 0.5s
|
|
break
|
|
fi
|
|
echo
|
|
read -sp "$JUGADOR2: " ELEC2
|
|
T=$(checkAnswer "$ELEC2")
|
|
if [[ "$T" == false ]]; then
|
|
echo "ENTRADA INVALIDA"
|
|
sleep 0.5s
|
|
break
|
|
fi
|
|
|
|
RESULTADO=$(checkWinner "$ELEC1" "$ELEC2")
|
|
|
|
if [[ "$RESULTADO" == "EMPATE" ]]; then
|
|
echo -e "\nResultado de la partida: $RESULTADO"
|
|
else
|
|
echo -e "\nResultado de la partida: $RESULTADO GANA!"
|
|
fi
|
|
|
|
case "$RESULTADO" in
|
|
"$JUGADOR1")
|
|
JUGADOR1_PUNTOS=$(($JUGADOR1_PUNTOS + 1))
|
|
;;
|
|
"$JUGADOR2")
|
|
JUGADOR2_PUNTOS=$(($JUGADOR2_PUNTOS + 1))
|
|
;;
|
|
esac
|
|
|
|
read -sp "Pulse enter para continuar: " lol
|
|
|
|
done
|
|
done
|
|
}
|
|
|
|
# Ejecuta la función principal
|
|
main
|