Решил я сделать то что никто не делал на bash, получилась хорошая игра на реакцию.
Управление в игре клавишами z,x,c,v, а q выйти.
Игра была написана на андроид, поэтому на пк прилется увеличивать шрифт. Игра работает и не глючит. В будущем возможно будет обновление.
Показать
#!/bin/bash
# игра "ну погоди ловит яйца"
# версия 1.0
# Автор: Moritto
#яйца
for ((i=1;i<=5;i++)); do
egg1[$i]=" "
egg2[$i]=" "
egg3[$i]=" "
egg4[$i]=" "
done
volk1="\
^ ^\n\
\\_/ (0-0)\n\
# (~)\n\
#==[ ]===\n\
[ ]\n\
// \\\\\\ " #волк в первой позиции
volk2="\
^ ^\n\
\\_/ (0-0)\n\
# (~)\n\
#==[ ]===\n\
[ ]\n\
// \\\\\\ "
volk3="\
^ ^\n\
(0-0) \\_/ \n\
(~) #\n\
===[ ]==#\n\
[ ]\n\
// \\\\\\ "
volk4="\
^ ^\n\
(0-0) \\_/ \n\
(~) #\n\
===[ ]==#\n\
[ ]\n\
// \\\\\\ "
print() #печать игры
{
if [ "$eggMove1" -eq 6 ] && [ "$volkPos" -eq 1 ]
then
volk="\
^ ^\n\
\\O/ (0-0)\n\
# (~)\n\
#==[ ]===\n\
[ ]\n\
// \\\\\\ " #придется так, ибо переменные во вставляемых переменных не работают
fi
if [ "$eggMove2" -eq 6 ] && [ "$volkPos" -eq 2 ]
then
volk="\
^ ^\n\
\\O/ (0-0)\n\
# (~)\n\
#==[ ]===\n\
[ ]\n\
// \\\\\\ "
fi
if [ "$eggMove3" -eq 6 ] && [ "$volkPos" -eq 3 ]
then
volk="\
^ ^\n\
(0-0) \\O/ \n\
(~) #\n\
===[ ]==#\n\
[ ]\n\
// \\\\\\ "
fi
if [ "$eggMove4" -eq 6 ] && [ "$volkPos" -eq 4 ]
then
volk="\
^ ^\n\
(0-0) \\O/ \n\
(~) #\n\
===[ ]==#\n\
[ ]\n\
// \\\\\\ "
fi
if [ "$eggMove1" -eq 7 ] && [ "$volkPos" -eq 1 ]
then #это чтобы убрать яйцо из корзины
eggMove1=0
volk=$volk1
fi
if [ "$eggMove2" -eq 7 ] && [ "$volkPos" -eq 2 ]
then #это чтобы убрать яйцо из корзины
eggMove2=0
volk=$volk2
fi
if [ "$eggMove3" -eq 7 ] && [ "$volkPos" -eq 3 ]
then
eggMove3=0
volk=$volk3
fi
if [ "$eggMove4" -eq 7 ] && [ "$volkPos" -eq 4 ]
then
eggMove4=0
volk=$volk4
fi
clear
echo -e \
"\\ ${egg1[1]} \\ \\ ${egg2[1]} \\ / ${egg3[1]} / / ${egg4[1]} /\n\
\\ ${egg1[2]} \\ \\ ${egg2[2]} \\ / ${egg3[2]} / / ${egg4[2]} /\n\
\\ ${egg1[3]} \\ \\ ${egg2[3]} \\ / ${egg3[3]} / / ${egg4[3]} /\n\
\\ ${egg1[4]} \\ \\ ${egg2[4]} \\ / ${egg3[4]} / / ${egg4[4]} /\n\
\\ ${egg1[5]} \\ \\ ${egg2[5]} \\ / ${egg3[5]} / / ${egg4[5]} /\n\
$volk\n\n\
Поймано: $score\t\tЖизни: $health"
}
declare -i eggMove1=0 #стадия движения 1-го яйца
declare -i eggMove2=0
declare -i eggMove3=0
declare -i eggMove4=0
declare -i score=0 #счёт
declare -i health=3 #жизни
SPUSK1="no"
SPUSK2="no"
SPUSK3="no"
SPUSK4="no"
spusk1() #спуск первого яйца
{
if [ "$SPUSK1" = "no" ] #если спуск не начался
then
rnd=$RANDOM
let rnd=rnd%=2 #генерируем 0 или 1
if [ "$rnd" -eq 1 ]
then
SPUSK1="yes"
egg1[1]="0"
eggMove1=1
fi
fi
}
spusk2() #спуск второго яйца
{
if [ "$SPUSK2" = "no" ] #если спуск не начался
then
rnd2=$RANDOM
let rnd2=rnd2%=2 #генерируем 0 или 1
if [ "$rnd2" -eq 1 ]
then
SPUSK2="yes"
egg2[1]="0"
eggMove2=1
fi
fi
}
spusk3() #спуск второго яйца
{
if [ "$SPUSK3" = "no" ] #если спуск не начался
then
rnd3=$RANDOM
let rnd3=rnd3%=2 #генерируем 0 или 1
if [ "$rnd3" -eq 1 ]
then
SPUSK3="yes"
egg3[1]="0"
eggMove3=1
fi
fi
}
spusk4() #спуск второго яйца
{
if [ "$SPUSK4" = "no" ] #если спуск не начался
then
rnd4=$RANDOM
let rnd4=rnd4%=2 #генерируем 0 или 1
if [ "$rnd4" -eq 1 ]
then
SPUSK4="yes"
egg4[1]="0"
eggMove4=1
fi
fi
}
move_egg1() #передвижение 1-го яйца
{
if [ "$eggMove1" -eq 1 ]
then
((eggMove1++))
egg1[1]=" "
egg1[2]="0"
elif [ "$eggMove1" -eq 2 ]
then
((eggMove1++))
egg1[2]=" "
egg1[3]="0"
elif [ "$eggMove1" -eq 3 ]
then
((eggMove1++))
egg1[3]=" "
egg1[4]="0"
elif [ "$eggMove1" -eq 4 ]
then
((eggMove1++))
egg1[4]=" "
egg1[5]="0"
elif [ "$eggMove1" -eq 5 ]
then
((eggMove1++))
egg1[5]=" "
elif [ "$eggMove1" -eq 6 ]
then
SPUSK1="no"
eggMove1=7
if [ "$volkPos" -eq 1 ]
then
((score++))
else
((health--))
fi
fi
}
move_egg2() #передвижение 2-го яйца
{
if [ "$eggMove2" -eq 1 ]
then
((eggMove2++))
egg2[1]=" "
egg2[2]="0"
elif [ "$eggMove2" -eq 2 ]
then
((eggMove2++))
egg2[2]=" "
egg2[3]="0"
elif [ "$eggMove2" -eq 3 ]
then
((eggMove2++))
egg2[3]=" "
egg2[4]="0"
elif [ "$eggMove2" -eq 4 ]
then
((eggMove2++))
egg2[4]=" "
egg2[5]="0"
elif [ "$eggMove2" -eq 5 ]
then
((eggMove2++))
egg2[5]=" "
elif [ "$eggMove2" -eq 6 ]
then
SPUSK2="no"
eggMove2=7
if [ "$volkPos" -eq 2 ]
then
((score++))
else
((health--))
fi
fi
}
move_egg3() #передвижение 3-го яйца
{
if [ "$eggMove3" -eq 1 ]
then
((eggMove3++))
egg3[1]=" "
egg3[2]="0"
elif [ "$eggMove3" -eq 2 ]
then
((eggMove3++))
egg3[2]=" "
egg3[3]="0"
elif [ "$eggMove3" -eq 3 ]
then
((eggMove3++))
egg3[3]=" "
egg3[4]="0"
elif [ "$eggMove3" -eq 4 ]
then
((eggMove3++))
egg3[4]=" "
egg3[5]="0"
elif [ "$eggMove3" -eq 5 ]
then
((eggMove3++))
egg3[5]=" "
elif [ "$eggMove3" -eq 6 ]
then
SPUSK3="no"
eggMove3=7
if [ "$volkPos" -eq 3 ]
then
((score++))
else
((health--))
fi
fi
}
move_egg4() #передвижение 4-го яйца
{
if [ "$eggMove4" -eq 1 ]
then
((eggMove4++))
egg4[1]=" "
egg4[2]="0"
elif [ "$eggMove4" -eq 2 ]
then
((eggMove4++))
egg4[2]=" "
egg4[3]="0"
elif [ "$eggMove4" -eq 3 ]
then
((eggMove4++))
egg4[3]=" "
egg4[4]="0"
elif [ "$eggMove4" -eq 4 ]
then
((eggMove4++))
egg4[4]=" "
egg4[5]="0"
elif [ "$eggMove4" -eq 5 ]
then
((eggMove4++))
egg4[5]=" "
elif [ "$eggMove4" -eq 6 ]
then
SPUSK4="no"
eggMove4=7
if [ "$volkPos" -eq 4 ]
then
((score++))
else
((health--))
fi
fi
}
clear
volk=$volk1
print
declare -i spsk=1 #начальные паузы перед спуском яиц
declare -i spsk2=3
declare -i spsk3=4
declare -i spsk4=6
volkPos=1 #позиция волка
while true; do #тут сам процесс игры
if [ "$health" -eq 0 ]; then
clear
echo "Вы проиграли! Ваш счёт: $score"
exit 0
fi
read -t 1 -s -n1 key #ждём нажатия клавиши
if [ "$key" = "z" ]
then
volkPos=1
volk=$volk1
key="no"
print
elif [ "$key" = "x" ]
then
volkPos=2
volk=$volk2
key="no"
print
elif [ "$key" = "c" ]
then
volkPos=3
volk=$volk3
key="no"
print
elif [ "$key" = "v" ]
then
volkPos=4
volk=$volk4
key="no"
print
elif [ "$key" = "q" ]
then
clear
echo "Вы вышли из игры. До встречи!"
exit 0
else #обновляем поле если ничего не нажато
print
fi
((spsk--))
if [ "$spsk" -le 0 ]
then
spsk=10
spusk1 #каждые 10 секунд пытатся делать спуск яйца
fi
if [ "$SPUSK1" = "yes" ]
then
move_egg1 #продолжаем движение яйца
fi
((spsk2--))
if [ "$spsk2" -le 0 ]
then
spsk2=12
spusk2
fi
if [ "$SPUSK2" = "yes" ]
then
move_egg2 #продолжаем движение яйца
fi
((spsk3--))
if [ "$spsk3" -le 0 ]
then
spsk3=9
spusk3
fi
if [ "$SPUSK3" = "yes" ]
then
move_egg3 #продолжаем движение яйца
fi
((spsk4--))
if [ "$spsk4" -le 0 ]
then
spsk4=9
spusk4
fi
if [ "$SPUSK4" = "yes" ]
then
move_egg4 #продолжаем движение яйца
fi
done