Skip to content

Instantly share code, notes, and snippets.

@mojoaxel
Last active March 17, 2022 16:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mojoaxel/a0d48601662e9a873b5e8219553df5cb to your computer and use it in GitHub Desktop.
Save mojoaxel/a0d48601662e9a873b5e8219553df5cb to your computer and use it in GitHub Desktop.
command line rock-paper-scissors game
#!/bin/bash
#
# This is a bash port of a BASIC game from 1973 by Charles Lund:
# https://www.atariarchives.org/basicgames/showpage.php?page=137
#
# author: Alexander Wunschik (https://github.com/mojoaxel)
# license: CC-0 Public Domain
printf "%*s GAME OF ROCK, SCISSORS, PAPER\n" 21
printf "%*s CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n" 15
echo ; echo
while true; do
printf "HOW MANY GAMES "
read NUMBER_OF_GAMES
[ $NUMBER_OF_GAMES -ge 11 ] || break;
echo "SORRY, BUT WE AREN'T ALLOWED TO PLAY THAT MANY."
done
COMPUTER_WINS=0
HUMAN_WINS=0
TIES=0
for GAME_NUMBER in $( seq 1 $NUMBER_OF_GAMES )
do
echo
printf "GAME NUMBER %s\n" $GAME_NUMBER
COMPUTER_PICK=$((RANDOM%3+1))
while true; do
echo "3=ROCK...2=SCISSORS...1=PAPER"
printf "1...2...3...WHAT'S YOUR CHOICE "
read HUMAN_PICK
[ $(( (HUMAN_PICK-1)*(HUMAN_PICK-2)*(HUMAN_PICK-3) )) -eq 0 ] && break;
echo "INVALID."
done #true
printf "THIS IS MY CHOICE..."
if [ $COMPUTER_PICK -eq 1 ]; then
echo "...PAPER"
elif [ $COMPUTER_PICK -eq 2 ]; then
echo "...SCISSORS"
else
echo "...ROCK"
fi
if [ $COMPUTER_PICK -eq $HUMAN_PICK ]; then
echo "TIE GAME. NO WINNER."
((TIES+=1))
continue
elif ([ $COMPUTER_PICK -gt $HUMAN_PICK ] && ([ $COMPUTER_PICK -ne 3 ] || [ $HUMAN_PICK -ne 1 ])) \
|| ([ $COMPUTER_PICK -eq 1 ] && [ $HUMAN_PICK -eq 3 ]); then
echo "WOW! I WIN!!!"
((COMPUTER_WINS+=1))
continue
else
echo "YOU WIN!!!"
((HUMAN_WINS+=1))
continue
fi
done #GAME_NUMBER
echo
echo "HERE IS THE FINAL GAME SCORE:"
printf "I HAVE WON %d GAME(S).\n" $COMPUTER_WINS
printf "YOU HAVE WON %d GAME(S).\n" $HUMAN_WINS
printf "AND %d GAME(S) ENDED IN A TIE.\n" $TIES
echo
echo "THANKS FOR PLAYING!!"
@mojoaxel
Copy link
Author

One thing is clear after writing this: I HATE BASH! It's a horror of a programming language!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment