Я сделал bash-программу в Ubuntu. Программа "Камень, ножницы, бумага с компьютером". Я хочу продолжить эту программу, пока не появится сообщение «Вы выиграли, пока, пока».

Может ли кто-нибудь предложить мне способ сделать это, используя код ниже?

#!/bin/bash

echo "Welcome to play Rock, Paper, Scissors"
echo "Choose Rock(0), Paper(1), Scissors(2)"

#read players choice
read PLAYER

choices=( 0 1 2 )

#randomize the computer choice
COMPUTER=${choices[$((RANDOM%3))]}

if [[ $PLAYER = 0 && $COMPUTER = 1 ]]
    then echo "i have paper , i win";
elif [[ $PLAYER = 1 && $COMPUTER = 1 ]]
    then echo "i have paper , we draw";
elif [[ $PLAYER = 2 && $COMPUTER = 1 ]]
    then echo "i have paper , you win, bye bye";
elif [[ $PLAYER = 0 && $COMPUTER = 0 ]]
    then echo "i have rock , we draw";
elif [[ $PLAYER = 1 && $COMPUTER = 0 ]]
    then echo "i have rock , you win, bye bye";
elif [[ $PLAYER = 2 && $COMPUTER = 0 ]]
    then echo "i have rock , i win";
elif [[ $PLAYER = 0 && $COMPUTER = 2 ]]
    then echo "i have scissors, you win, bye bye";
elif [[$count = 0 && $PLAYER = 1 && $COMPUTER = 2 ]]
    then echo "i have scissors, i win";
elif [[$count = 0 && $PLAYER = 2 && $COMPUTER = 2 ]]
    then echo "i have scissors, we draw "
fi

2 ответа2

2

Вы можете просто добавить бесконечный цикл, используя while цикла и выход из программы в зависимости от ввода игрока. Пример:

#!/usr/env bash

echo "Welcome to play Rock, Paper, Scissors"

choices=( 0 1 2 )

while [ "$PLAYER" != "Q" ]; do
    echo "Choose Rock(0), Paper(1), Scissors(2), or quit (Q)"
    read PLAYER

    #randomize the computer choice
    COMPUTER=${choices[$((RANDOM%3))]}

    if   [[ "$PLAYER" = "0" && "$COMPUTER" = "1" ]]
        then echo "i have paper , i win"
    elif [[ "$PLAYER" = "1" && "$COMPUTER" = "1" ]]
        then echo "i have paper , we draw"
    elif [[ "$PLAYER" = "2" && "$COMPUTER" = "1" ]]
        then echo "i have paper , you win, bye bye"
    elif [[ "$PLAYER" = "0" && "$COMPUTER" = "0" ]]
        then echo "i have rock , we draw"
    elif [[ "$PLAYER" = "1" && "$COMPUTER" = "0" ]]
        then echo "i have rock , you win, bye bye"
    elif [[ "$PLAYER" = "2" && "$COMPUTER" = "0" ]]
        then echo "i have rock , i win"
    elif [[ "$PLAYER" = "0" && "$COMPUTER" = "2" ]]
        then echo "i have scissors, you win, bye bye"
    elif [[ "$PLAYER" = "1" && "$COMPUTER" = "2" && "$count" = "0" ]]
        then echo "i have scissors, i win"
    elif [[ "$PLAYER" = "2" && "$COMPUTER" = "2" && "$count" = "0" ]]
        then echo "i have scissors, we draw "
    fi
done
0

Оберните все время в while true цикл и break в каждой точке, где вы хотите закончить.

Обратите внимание, что нет необходимости в массиве choices .

#!/bin/bash


echo "Welcome to play Rock, Paper, Scissors"

while true
do
       echo "Choose Rock(0), Paper(1), Scissors(2)"
       #read players choice
       read PLAYER

       #randomize the computer choice

       COMPUTER=$((RANDOM%3))

       if [[ $PLAYER = 0 && $COMPUTER = 1 ]]
           then echo "i have paper , i win";
       elif [[ $PLAYER = 1 && $COMPUTER = 1 ]]
           then echo "i have paper , we draw";
       elif [[ $PLAYER = 2 && $COMPUTER = 1 ]]
           then echo "i have paper , you win, bye bye"; break
       elif [[ $PLAYER = 0 && $COMPUTER = 0 ]]
           then echo "i have rock , we draw";
       elif [[ $PLAYER = 1 && $COMPUTER = 0 ]]
           then echo "i have rock , you win, bye bye"; break
       elif [[ $PLAYER = 2 && $COMPUTER = 0 ]]
           then echo "i have rock , i win";
       elif [[ $PLAYER = 0 && $COMPUTER = 2 ]]
           then echo "i have scissors, you win, bye bye"; break
       elif [[$count = 0 && $PLAYER = 1 && $COMPUTER = 2 ]]
           then echo "i have scissors, i win";
       elif [[$count = 0 && $PLAYER = 2 && $COMPUTER = 2 ]]
           then echo "i have scissors, we draw "
       fi
done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .