I can't select the last square (3;3). The main problem was that. I hope someone can help me because i cannot know whats the problem.
The code is here:
#!/bin/bash
board=( " " " " " "
" " " " " "
" " " " )
function draw_board {
echo "+---+---+---+"
echo "| ${board[0]} | ${board[1]} | ${board[2]} |"
echo "+---+---+---+"
echo "| ${board[3]} | ${board[4]} | ${board[5]} |"
echo "+---+---+---+"
echo "| ${board[6]} | ${board[7]} | ${board[8]} |"
echo "+---+---+---+"
}
function check_win {
local symbol=$1
if [[ ${board[0]} == $symbol && ${board[1]} == $symbol && ${board[2]} == $symbol ]] ||
[[ ${board[3]} == $symbol && ${board[4]} == $symbol && ${board[5]} == $symbol ]] ||
[[ ${board[6]} == $symbol && ${board[7]} == $symbol && ${board[8]} == $symbol ]] ||
[[ ${board[0]} == $symbol && ${board[3]} == $symbol && ${board[6]} == $symbol ]] ||
[[ ${board[1]} == $symbol && ${board[4]} == $symbol && ${board[7]} == $symbol ]] ||
[[ ${board[2]} == $symbol && ${board[5]} == $symbol && ${board[8]} == $symbol ]] ||
[[ ${board[0]} == $symbol && ${board[4]} == $symbol && ${board[8]} == $symbol ]] ||
[[ ${board[2]} == $symbol && ${board[4]} == $symbol && ${board[6]} == $symbol ]]; then
echo true
else
echo false
fi
}
function is_free {
local index=$1
if [[ ${board[$index]} == " " ]]; then
echo true
else
echo false
fi
}
function game_loop {
local player="X"
local move_count=0
local win=false
while [[ $move_count -lt 10 && $win == false ]]; do
draw_board
echo "$player következik. Adja meg az x koordinátát [1-3]: "
read x
echo "Adja meg az y koordinátát [1-3]: "
read y
x=$((x-1))
y=$((y-1))
if [[ $x -lt 0 || $x -gt 2 || $y -lt 0 || $y -gt 2 ]]; then
echo "Hibás koordináta!" >&2
elif [[ $(is_free $((y*3+x))) == true ]]; then
board[$((y*3+x))]="$player"
win=$(check_win $player)
if [[ $win == true ]]; then
echo "$player győzött!"
else
((move_count++))
if [[ $player == "X" ]]; then
player="O"
else
player="X"
fi
echo "Lépéshiba!" >&2
fi
fi
done
if [[ $win == false ]]; then
draw_board
echo "Dontetlen!"
fi
}
I tried 3;3 and the program was not accept it and give me another try. Thank you for the reading! If you have any solution please share with me! Have a nice day!