Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2018
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.34 KB | None | 0 0
  1. #!/bin/ksh
  2.  
  3. set -A g
  4.  
  5. g[1]=" "
  6. g[2]=" "
  7. g[3]=" "
  8. g[4]=" "
  9. g[5]=" "
  10. g[6]=" "
  11. g[7]=" "
  12. g[8]=" "
  13. g[9]=" "
  14.  
  15. turn=0
  16.  
  17. function print_game
  18. {
  19. clear
  20. echo "1..3 - first row, 4..6 - second row, 7..9 - third row, q - quit"
  21. echo "+---+---+---+"
  22. echo "| ${g[1]} | ${g[2]} | ${g[3]} |"
  23. echo "+---+---+---+"
  24. echo "| ${g[4]} | ${g[5]} | ${g[6]} |"
  25. echo "+---+---+---+"
  26. echo "| ${g[7]} | ${g[8]} | ${g[9]} |"
  27. echo "+---+---+---+"
  28. }
  29.  
  30. function won
  31. {
  32. if [ "${g[1]}" == "$1" ] && [ "${g[2]}" == "$1" ] && [ "${g[3]}" == "$1" ]; then
  33. return 1
  34. fi
  35. if [ "${g[4]}" == "$1" ] && [ "${g[5]}" == "$1" ] && [ "${g[6]}" == "$1" ]; then
  36. return 1
  37. fi
  38. if [ "${g[7]}" == "$1" ] && [ "${g[8]}" == "$1" ] && [ "${g[9]}" == "$1" ]; then
  39. return 1
  40. fi
  41.  
  42. if [ "${g[1]}" == "$1" ] && [ "${g[4]}" == "$1" ] && [ "${g[7]}" == "$1" ]; then
  43. return 1
  44. fi
  45. if [ "${g[2]}" == "$1" ] && [ "${g[5]}" == "$1" ] && [ "${g[8]}" == "$1" ]; then
  46. return 1
  47. fi
  48. if [ "${g[3]}" == "$1" ] && [ "${g[6]}" == "$1" ] && [ "${g[9]}" == "$1" ]; then
  49. return 1
  50. fi
  51.  
  52. if [ "${g[1]}" == "$1" ] && [ "${g[5]}" == "$1" ] && [ "${g[9]}" == "$1" ]; then
  53. return 1
  54. fi
  55. if [ "${g[3]}" == "$1" ] && [ "${g[5]}" == "$1" ] && [ "${g[7]}" == "$1" ]; then
  56. return 1
  57. fi
  58.  
  59. return 0
  60. }
  61.  
  62. function computer_play
  63. {
  64. found=0
  65.  
  66. while [ $found -eq 0 ]; do
  67. num=$((RANDOM%9+1))
  68. if [ "${g[$num]}" == " " ]; then
  69. g[$num]="o"
  70. found=1
  71. fi
  72. done
  73. }
  74.  
  75. function is_game_dead
  76. {
  77. for i in "${g[@]}"; do
  78. if [ "$i" == " " ]; then
  79. return 0
  80. fi
  81. done
  82.  
  83. return 1
  84. }
  85.  
  86. print_game
  87.  
  88. while read -rn1 key; do
  89. case "$key" in
  90. [1-9])
  91. if [ "${g[$key]}" != " " ]; then
  92. echo "Already taken!"
  93. sleep 1
  94. else
  95. g[$key]="x"
  96. turn=1
  97. print_game
  98. fi
  99. ;;
  100. "q")
  101. exit 0
  102. ;;
  103. *)
  104. echo "Wrong key!"
  105. sleep 1
  106. clear
  107. print_game
  108. ;;
  109. esac
  110.  
  111. won "x"
  112. if [ $? -ne 0 ]; then
  113. echo "YOU WON! :)"
  114. exit 0
  115. fi
  116.  
  117. if [ $turn -eq 1 ]; then
  118. is_game_dead
  119. if [ $? -eq 1 ]; then
  120. echo "No one won - play again"
  121. exit 0
  122. fi
  123. sleep 1
  124. computer_play
  125. print_game
  126. turn=0
  127. fi
  128.  
  129. won "o"
  130. if [ $? -ne 0 ]; then
  131. echo "YOU LOST! :X"
  132. exit 0
  133. fi
  134.  
  135. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement