forked from STI/Astroport.ONE
60 lines
1.9 KiB
Bash
60 lines
1.9 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# Initialisation du plateau de jeu
|
||
|
declare -a board
|
||
|
for i in {0..8}; do
|
||
|
board[$i]=$i
|
||
|
done
|
||
|
|
||
|
# Affichage du plateau de jeu
|
||
|
function display_board {
|
||
|
echo " ${board[0]} | ${board[1]} | ${board[2]} "
|
||
|
echo "---|---|---"
|
||
|
echo " ${board[3]} | ${board[4]} | ${board[5]} "
|
||
|
echo "---|---|---"
|
||
|
echo " ${board[6]} | ${board[7]} | ${board[8]} "
|
||
|
}
|
||
|
|
||
|
# Vérification de la victoire
|
||
|
function check_win {
|
||
|
local player=$1
|
||
|
local symbol=$2
|
||
|
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 "Le joueur $player ($symbol) gagne !"
|
||
|
exit
|
||
|
fi
|
||
|
if ! (echo ${board[@]} | grep -q '[0-8]'); then
|
||
|
echo "Match nul !"
|
||
|
exit
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# Boucle de jeu principale
|
||
|
player=1
|
||
|
symbol="X"
|
||
|
while true; do
|
||
|
display_board
|
||
|
echo "Joueur $player: Choisissez une position (0-8) pour le symbole $symbol:"
|
||
|
read -r pos
|
||
|
if ! [[ $pos =~ ^[0-8]$ ]] || [[ ! ${board[$pos]} =~ ^[0-8]$ ]]; then
|
||
|
echo "Entrée invalide, veuillez réessayer."
|
||
|
continue
|
||
|
fi
|
||
|
board[$pos]=$symbol
|
||
|
check_win $player $symbol
|
||
|
if [ "$symbol" == "X" ]; then
|
||
|
symbol="O"
|
||
|
player=2
|
||
|
else
|
||
|
symbol="X"
|
||
|
player=1
|
||
|
fi
|
||
|
done
|