forked from STI/Astroport.ONE
82 lines
2.7 KiB
Bash
82 lines
2.7 KiB
Bash
|
# fonctions.sh
|
||
|
source config.sh
|
||
|
|
||
|
initialiser_plateau() {
|
||
|
for ((i = 0; i < ROWS * COLS; i++)); do
|
||
|
board[i]=" "
|
||
|
done
|
||
|
}
|
||
|
|
||
|
afficher_plateau() {
|
||
|
for ((i = 0; i < ROWS; i++)); do
|
||
|
for ((j = 0; j < COLS; j++)); do
|
||
|
echo -n "${board[i * COLS + j]} "
|
||
|
done
|
||
|
echo
|
||
|
done
|
||
|
}
|
||
|
|
||
|
placer_jeton() {
|
||
|
local colonne=$1
|
||
|
local token=$2
|
||
|
|
||
|
for ((i = ROWS - 1; i >= 0; i--)); do
|
||
|
if [ "${board[i * COLS + colonne - 1]}" == " " ]; then
|
||
|
board[i * COLS + colonne - 1]=$token
|
||
|
break
|
||
|
fi
|
||
|
done
|
||
|
}
|
||
|
|
||
|
verifier_victoire() {
|
||
|
# Vérification des alignements horizontaux
|
||
|
for ((i = 0; i < ROWS; i++)); do
|
||
|
for ((j = 0; j < COLS - 3; j++)); do
|
||
|
if [ "${board[i * COLS + j]}" != " " ] && \
|
||
|
[ "${board[i * COLS + j]}" == "${board[i * COLS + j + 1]}" ] && \
|
||
|
[ "${board[i * COLS + j]}" == "${board[i * COLS + j + 2]}" ] && \
|
||
|
[ "${board[i * COLS + j]}" == "${board[i * COLS + j + 3]}" ]; then
|
||
|
return 0 # Victoire
|
||
|
fi
|
||
|
done
|
||
|
done
|
||
|
|
||
|
# Vérification des alignements verticaux
|
||
|
for ((j = 0; j < COLS; j++)); do
|
||
|
for ((i = 0; i < ROWS - 3; i++)); do
|
||
|
if [ "${board[i * COLS + j]}" != " " ] && \
|
||
|
[ "${board[i * COLS + j]}" == "${board[(i + 1) * COLS + j]}" ] && \
|
||
|
[ "${board[i * COLS + j]}" == "${board[(i + 2) * COLS + j]}" ] && \
|
||
|
[ "${board[i * COLS + j]}" == "${board[(i + 3) * COLS + j]}" ]; then
|
||
|
return 0 # Victoire
|
||
|
fi
|
||
|
enddone
|
||
|
done
|
||
|
|
||
|
# Vérification des alignements diagonaux (de gauche à droite)
|
||
|
for ((i = 0; i < ROWS - 3; i++)); do
|
||
|
for ((j = 0; j < COLS - 3; j++)); do
|
||
|
if [ "${board[i * COLS + j]}" != " " ] && \
|
||
|
[ "${board[i * COLS + j]}" == "${board[(i + 1) * COLS + j + 1]}" ] && \
|
||
|
[ "${board[i * COLS + j]}" == "${board[(i + 2) * COLS + j + 2]}" ] && \
|
||
|
[ "${board[i * COLS + j]}" == "${board[(i + 3) * COLS + j + 3]}" ]; then
|
||
|
return 0 # Victoire
|
||
|
fi
|
||
|
done
|
||
|
done
|
||
|
|
||
|
# Vérification des alignements diagonaux (de droite à gauche)
|
||
|
for ((i = 0; i < ROWS - 3; i++)); do
|
||
|
for ((j = 3; j < COLS; j++)); do
|
||
|
if [ "${board[i * COLS + j]}" != " " ] && \
|
||
|
[ "${board[i * COLS + j]}" == "${board[(i + 1) * COLS + j - 1]}" ] && \
|
||
|
[ "${board[i * COLS + j]}" == "${board[(i + 2) * COLS + j - 2]}" ] && \
|
||
|
[ "${board[i * COLS + j]}" == "${board[(i + 3) * COLS + j - 3]}" ]; then
|
||
|
return 0 # Victoire
|
||
|
fi
|
||
|
done
|
||
|
done
|
||
|
|
||
|
return 1 # Pas de victoire
|
||
|
}
|