Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/ksh
- set -A g
- g[1]=" "
- g[2]=" "
- g[3]=" "
- g[4]=" "
- g[5]=" "
- g[6]=" "
- g[7]=" "
- g[8]=" "
- g[9]=" "
- turn=0
- function print_game
- {
- clear
- echo "1..3 - first row, 4..6 - second row, 7..9 - third row, q - quit"
- echo "+---+---+---+"
- echo "| ${g[1]} | ${g[2]} | ${g[3]} |"
- echo "+---+---+---+"
- echo "| ${g[4]} | ${g[5]} | ${g[6]} |"
- echo "+---+---+---+"
- echo "| ${g[7]} | ${g[8]} | ${g[9]} |"
- echo "+---+---+---+"
- }
- function won
- {
- if [ "${g[1]}" == "$1" ] && [ "${g[2]}" == "$1" ] && [ "${g[3]}" == "$1" ]; then
- return 1
- fi
- if [ "${g[4]}" == "$1" ] && [ "${g[5]}" == "$1" ] && [ "${g[6]}" == "$1" ]; then
- return 1
- fi
- if [ "${g[7]}" == "$1" ] && [ "${g[8]}" == "$1" ] && [ "${g[9]}" == "$1" ]; then
- return 1
- fi
- if [ "${g[1]}" == "$1" ] && [ "${g[4]}" == "$1" ] && [ "${g[7]}" == "$1" ]; then
- return 1
- fi
- if [ "${g[2]}" == "$1" ] && [ "${g[5]}" == "$1" ] && [ "${g[8]}" == "$1" ]; then
- return 1
- fi
- if [ "${g[3]}" == "$1" ] && [ "${g[6]}" == "$1" ] && [ "${g[9]}" == "$1" ]; then
- return 1
- fi
- if [ "${g[1]}" == "$1" ] && [ "${g[5]}" == "$1" ] && [ "${g[9]}" == "$1" ]; then
- return 1
- fi
- if [ "${g[3]}" == "$1" ] && [ "${g[5]}" == "$1" ] && [ "${g[7]}" == "$1" ]; then
- return 1
- fi
- return 0
- }
- function computer_play
- {
- found=0
- while [ $found -eq 0 ]; do
- num=$((RANDOM%9+1))
- if [ "${g[$num]}" == " " ]; then
- g[$num]="o"
- found=1
- fi
- done
- }
- function is_game_dead
- {
- for i in "${g[@]}"; do
- if [ "$i" == " " ]; then
- return 0
- fi
- done
- return 1
- }
- print_game
- while read -rn1 key; do
- case "$key" in
- [1-9])
- if [ "${g[$key]}" != " " ]; then
- echo "Already taken!"
- sleep 1
- else
- g[$key]="x"
- turn=1
- print_game
- fi
- ;;
- "q")
- exit 0
- ;;
- *)
- echo "Wrong key!"
- sleep 1
- clear
- print_game
- ;;
- esac
- won "x"
- if [ $? -ne 0 ]; then
- echo "YOU WON! :)"
- exit 0
- fi
- if [ $turn -eq 1 ]; then
- is_game_dead
- if [ $? -eq 1 ]; then
- echo "No one won - play again"
- exit 0
- fi
- sleep 1
- computer_play
- print_game
- turn=0
- fi
- won "o"
- if [ $? -ne 0 ]; then
- echo "YOU LOST! :X"
- exit 0
- fi
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement