From bf6ed0cb2166cde35761c0a707ec04d7ff20c01b Mon Sep 17 00:00:00 2001 From: raul Date: Wed, 8 Jan 2025 09:41:31 +0100 Subject: [PATCH] Add Rock Paper Scissors script --- rps.sh | 132 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100755 rps.sh diff --git a/rps.sh b/rps.sh new file mode 100755 index 0000000..83c7b1f --- /dev/null +++ b/rps.sh @@ -0,0 +1,132 @@ +#!/bin/bash + +declare JUGADOR1 +declare JUGADOR2 +declare JUGADOR1_PUNTOS=0 +declare JUGADOR2_PUNTOS=0 + +OPCIONES_DISPONIBLES=("piedra" "papel" "tijera") + +checkAnswer() { + ESVALIDA=false + for respuesta in "${OPCIONES_DISPONIBLES[@]}"; do + if [[ "$1" == "$respuesta" ]]; then + ESVALIDA=true + fi + done + echo $ESVALIDA +} + +# 2 args +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 +} + +status() { + clear + echo -e " +Puntos de $JUGADOR1: $JUGADOR1_PUNTOS / $PUNTOS_LIMITE +Puntos de $JUGADOR2: $JUGADOR2_PUNTOS / $PUNTOS_LIMITE +" +} + +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 +} + +main