Last active
March 17, 2022 16:16
-
-
Save mojoaxel/a0d48601662e9a873b5e8219553df5cb to your computer and use it in GitHub Desktop.
command line rock-paper-scissors game
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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!!" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
One thing is clear after writing this: I HATE BASH! It's a horror of a programming language!