Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env bash
- #bash-written tictactoe game
- #game save location
- rc=$HOME/.local/share/bt3.rc
- modename=('Local' 'Easy' 'Medium' 'Master' 'Online')
- #(jojo) reference
- help() {
- printf "%s\n"\
- "usage: bt3 [option] <mode>"\
- "Bash-written tictactoe game."\
- "OPTIONS:"\
- " --help|-h Show this help."\
- " --version|-v Show version."\
- "GAMEMODES:"\
- " -1 Easy bot."\
- " -2 Medium bot"\
- " -3 Master bot."\
- " -p Play together on one device."\
- " -o Play online via...(In v1.1)"
- exit 0
- }
- version() {
- printf "%s\n" "bt3 v1.0" "Bash tictactoe game."
- exit 0
- }
- #option parcer
- case $1 in
- --help|-h) help;;
- --version|-v) version;;
- -1|-2|-3|-p|-o) mode=$(echo $1 | sed 's/-//g');;
- *) echo 'Choose right game options.'; exit 1
- esac
- #ingame functions
- printField() {
- clear
- for (( i=0 ; i<9 ; i=i+3 )); do
- echo "${session[$i]}${session[$(( i + 1 ))]}${session[$(( i + 2 ))]}"
- done
- }
- 0() {
- while :; do
- printField
- read -n 1 -p '>> '
- if [[ ${session[$(( REPLY - 1 ))]} == '#' ]]; then
- session[$REPLY-1]=$1
- break
- fi
- done
- }
- 1() {
- rand=$(( RANDOM % 9 ))
- while [[ ${session[$rand]} != '#' ]]; do
- if [[ $rand == 8 ]]; then
- rand=0
- else
- rand=$(( $rand + 1 ))
- fi
- done
- session[$rand]=$1
- }
- analyze() {
- for (( i=0 ; i<9 ; i=i+3 )); do
- checkField $i $(( i + 1 )) $(( i + 2 ))
- done
- for (( i=0 ; i<3 ; i++ )); do
- checkField $i $(( i + 3 )) $(( i + 6 ))
- done
- checkField {0 4 8, 2 4 6}
- }
- checkField() {
- if [[ "${session[$1]}"!='#' && "${session[$1]}"=="${session[$2]}" && "${session[$2]}"=="${session[$3]}" ]]; then
- printf "\nPlayer ${session[$1]} win at turn $turn\n" &&
- exit 0
- fi
- }
- #choose side
- if ! source $rc; then
- for (( i=0 ; i<9 ; i++ )); do
- session[$i]='#'
- done
- select i in x o random; do
- case $i in
- x|o) playside=$i; break;;
- random)
- if (( (RANDOM % 2) == 1 )); then
- playside=x
- else
- playside=o
- fi
- break
- esac
- done
- if [[ $playside == 'x' ]]; then
- otherside='o'
- else
- otherside='x'
- fi
- fi
- #game
- while :; do
- 0 $playside
- analyze
- $mode $otherside
- analyze
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement