Недавно научился писать на bash и у меня получилась игра.
Версия 1.0.
В будущем будет разработан исскуственный интелоект чтоб было сложно играть, а пока вот так.
#!/bin/bash
#Игра крестики нолики 1.0
for ((i=1;i<10;i++)); do #назначаем значения полей
pole[ # форум не пускает это i]="-"
done
print_pole() #печать поля
{
echo -e "\
${pole[1]} | ${pole[2]} | ${pole[3]}\n\
${pole[4]} | ${pole[5]} | ${pole[6]}\n\
${pole[7]} | ${pole[8]} | ${pole[9]}"
}
echo -n "За кого будете играть? (x, o): "
read GAMER
while [ "$GAMER" != "x" ] && [ "$GAMER" != "o" ]\
&& [ "$GAMER" != "х" ] && [ "$GAMER" != "о" ]; do #учитываются и русские буквы
echo "Неверный ввод!"
echo -n "За кого будете играть? (x, o): "
read GAMER
done
if [ "$GAMER" = "х" ] #переводим русские символы в английские для переменной GAMER
then GAMER=x
elif [ "$GAMER" = "о" ]
then GAMER=o
fi
if [ "$GAMER" = "x" ] #даём врагу крестик или нолик
then ENEMY=o
elif [ "$GAMER" = "o" ]
then ENEMY=x
fi
clear
print_pole
check() #проверка выигрыша
{
if [ "${pole[1]}" = "x" ] && [ "${pole[2]}" = "x" ] && [ "${pole[3]}" = "x" ]
then
if [ "$GAMER" = "x" ]
then echo "Вы выиграли!"
else echo "Вы проиграли."
fi
exit 0
fi
if [ "${pole[4]}" = "x" ] && [ "${pole[5]}" = "x" ] && [ "${pole[6]}" = "x" ]
then
if [ "$GAMER" = "x" ]
then echo "Вы выиграли!"
else echo "Вы проиграли."
fi
exit 0
fi
if [ "${pole[7]}" = "x" ] && [ "${pole[8]}" = "x" ] && [ "${pole[9]}" = "x" ]
then
if [ "$GAMER" = "x" ]
then echo "Вы выиграли!"
else echo "Вы проиграли."
fi
exit 0
fi
if [ "${pole[1]}" = "x" ] && [ "${pole[4]}" = "x" ] && [ "${pole[7]}" = "x" ]
then
if [ "$GAMER" = "x" ]
then echo "Вы выиграли!"
else echo "Вы проиграли."
fi
exit 0
fi
if [ "${pole[2]}" = "x" ] && [ "${pole[5]}" = "x" ] && [ "${pole[8]}" = "x" ]
then
if [ "$GAMER" = "x" ]
then echo "Вы выиграли!"
else echo "Вы проиграли."
fi
exit 0
fi
if [ "${pole[3]}" = "x" ] && [ "${pole[6]}" = "x" ] && [ "${pole[9]}" = "x" ]
then
if [ "$GAMER" = "x" ]
then echo "Вы выиграли!"
else echo "Вы проиграли."
fi
exit 0
fi
if [ "${pole[1]}" = "x" ] && [ "${pole[5]}" = "x" ] && [ "${pole[9]}" = "x" ]
then
if [ "$GAMER" = "x" ]
then echo "Вы выиграли!"
else echo "Вы проиграли."
fi
exit 0
fi
if [ "${pole[3]}" = "x" ] && [ "${pole[5]}" = "x" ] && [ "${pole[7]}" = "x" ]
then
if [ "$GAMER" = "x" ]
then echo "Вы выиграли!"
else echo "Вы проиграли."
fi
exit 0
fi
if [ "${pole[1]}" = "o" ] && [ "${pole[2]}" = "o" ] && [ "${pole[3]}" = "o" ]
then
if [ "$GAMER" = "o" ]
then echo "Вы выиграли!"
else echo "Вы проиграли."
fi
exit 0
fi
if [ "${pole[4]}" = "o" ] && [ "${pole[5]}" = "o" ] && [ "${pole[6]}" = "o" ]
then
if [ "$GAMER" = "o" ]
then echo "Вы выиграли!"
else echo "Вы проиграли."
fi
exit 0
fi
if [ "${pole[7]}" = "o" ] && [ "${pole[8]}" = "o" ] && [ "${pole[9]}" = "o" ]
then
if [ "$GAMER" = "o" ]
then echo "Вы выиграли!"
else echo "Вы проиграли."
fi
exit 0
fi
if [ "${pole[1]}" = "o" ] && [ "${pole[4]}" = "o" ] && [ "${pole[7]}" = "o" ]
then
if [ "$GAMER" = "o" ]
then echo "Вы выиграли!"
else echo "Вы проиграли."
fi
exit 0
fi
if [ "${pole[2]}" = "o" ] && [ "${pole[5]}" = "o" ] && [ "${pole[8]}" = "o" ]
then
if [ "$GAMER" = "o" ]
then echo "Вы выиграли!"
else echo "Вы проиграли."
fi
exit 0
fi
if [ "${pole[3]}" = "o" ] && [ "${pole[6]}" = "o" ] && [ "${pole[9]}" = "o" ]
then
if [ "$GAMER" = "o" ]
then echo "Вы выиграли!"
else echo "Вы проиграли."
fi
exit 0
fi
if [ "${pole[1]}" = "o" ] && [ "${pole[5]}" = "o" ] && [ "${pole[9]}" = "o" ]
then
if [ "$GAMER" = "o" ]
then echo "Вы выиграли!"
else echo "Вы проиграли."
fi
exit 0
fi
if [ "${pole[3]}" = "o" ] && [ "${pole[5]}" = "o" ] && [ "${pole[7]}" = "o" ]
then
if [ "$GAMER" = "o" ]
then echo "Вы выиграли!"
else echo "Вы проиграли."
fi
exit 0
fi
}
verify() #проверка на заполненность всех ячеек
{
if [ "${pole[1]}" != "-" ] && [ "${pole[2]}" != "-" ] && [ "${pole[3]}" != "-" ]\
&& [ "${pole[4]}" != "-" ] && [ "${pole[5]}" != "-" ] && [ "${pole[6]}" != "-" ]\
&& [ "${pole[7]}" != "-" ] && [ "${pole[8]}" != "-" ] && [ "${pole[9]}" != "-" ]
then
echo "Ничья."
exit 0
fi
}
enemy_step() #шаг соперника
{
while true; do
rnd=$RANDOM #берём рандомное число
let rnd=rnd%=10 #отбираем от 0 до 9
if [ "$rnd" -eq 0 ]
then rnd=1
fi
if [ "${pole[$rnd]}" = "x" ] || [ "${pole[$rnd]}" = "o" ]
then
continue
else
pole[rnd]=$ENEMY
break
fi
done
}
while true; do
echo -n "Ваш ход (1-9): "
read STEP
if [ "${pole[$STEP]}" = "-" ] #проверка на пустую клетку
then
pole[$STEP]=$GAMER
clear
print_pole
check
verify
enemy_step
clear
print_pole
check
clear
print_pole
verify
else
echo "Здесь уже есть х/о!"
fi
done