My code is here. You don’t have to worry about the second while though. It the exact same just player 2 instead.
#!/bin/bash
#this is a game that is two player and it is a race to get to
#100 before the other player
echo "Player 1 name?"
read p1
echo "Player 2 name?"
read p2
echo "Okay $p1 and $p2. $p1 will go first"
p1s=0
p2s=0
pt=1
while [ $pt == 1 ]; do
echo "roll or stay"
read choice
if [ $choice == r ]; then
die=$(($RANDOM%6+1))
elif [ $die -eq 1 ]; then
p1s=$(echo "$p1s-$count" |bc)
echo "You rolled a 1. Your score is $p1s"
echo "$p2 turn now."
sleep 1
count=0
pt=2
elif [ $die > 1 ]; then
p1s=$(echo "$p1s+$die" |bc)
count=$(echo "$count+$die" |bc)
echo "You rolled a $die. Your score is $p1s"
pt=1
else
if [ $choice == s ]; then
echo "Okay $p1 your score is $p1s"
echo "$p2 turn now"
sleep 1
count=0
pt=2
else
pt=1
fi
fi
if [ $p1s > 99 ]; then
echo "$p1 won. $p2 lost"
echo "would you like to play again?"
read again
elif [ $again == yes ]; then
echo "Okay one second."
sleep 1
clear
bash num.sh
elif [ $again == no ]; then
echo "ok going back to the games directory then"
sleep 1
bash games.sh
fi
done
while [ $pt == 2 ]; do
echo "roll or stay"
read choice
if [ $choice == r ]; then
die=$(($RANDOM%6+1))
elif [ $die -eq 1 ]; then
p1s=$(echo "$p2s-$count" |bc)
echo "You rolled a 1. Your score is $p2s"
echo "$p1 turn now."
sleep 1
count=0
pt=2
elif [ $die > 1 ]; then
p1s=$(echo "$p2s+$die" |bc)
count=$(echo "$count+$die" |bc)
echo "You rolled a $die. Your score is $p2s"
pt=1
else
if [ $choice == s ]; then
echo "Okay $p1 your score is $p2s"
echo "$p1 turn now"
sleep 1
count=0
pt=2
else
pt=2
fi
fi
if [ $p2s > 99 ]; then
echo "$p2 won. $p1 lost"
echo "would you like to play again?"
read again
elif [ $again == yes ]; then
echo "Okay one second."
sleep 1
clear
bash num.sh
elif [ $again == no ]; then
echo "ok going back to the games directory then"
sleep 1
bash games.sh
fi
done
What happens after I run it is this
Player 1 name?
name1
Player 2 name?
name2
Okay name1 and name2. name1 will go first
roll or stay
r
name1 won. name2 lost
would you like to play again?
It is supposed to roll and you get a random number if one then the score for that round is deleted and goes to next player. If you roll a 2-6 it adds to that rounds score. if you stay then you save your score and each rounds score add up till one player gets 100 points.
The test comparison operators you are using to test numeric relations are wrong. For example:
elif [ $die > 1 ]; thenshould be —->elif [ $die -gt 1 ]; thenif [ $p2s > 99 ]; thenshould be —->if [ $p2s -gt 99 ]; thenand so on.
Here are the list of test comparison operators for numeric values:
==—>-eq(equals)!=—>-ne(not equals)>—>-gt(greater than)<—>-lt(less than)>=—>-ge(greater or equal to)<=—>-le(lesser or equal to)