50 lines
1.6 KiB
Bash
Executable file
50 lines
1.6 KiB
Bash
Executable file
words=($(grep '^\w\w\w\w\w$' /usr/share/dict/words | tr '[a-z]' '[A-Z]'))
|
|
actual=${words[$(($RANDOM % ${#words[@]}))]} end=false guess_count=0 max_guess=6
|
|
if [[ $1 == "unlimit" ]]; then
|
|
max_guess=999999
|
|
fi
|
|
while [[ $end != true ]]; do
|
|
guess_count=$(($guess_count + 1))
|
|
if [[ $guess_count -le $max_guess ]]; then
|
|
echo "Enter your guess ($guess_count / $max_guess):"
|
|
read guess
|
|
guess=$(echo $guess | tr '[a-z]' '[A-Z]')
|
|
if [[ " ${words[*]} " =~ " $guess " ]]; then
|
|
output="" remaining=""
|
|
if [[ $actual == $guess ]]; then
|
|
echo "You guessed right!"
|
|
for ((i = 0; i < ${#actual}; i++)); do
|
|
output+="\033[30;102m ${guess:$i:1} \033[0m"
|
|
done
|
|
printf "$output\n"
|
|
end=true
|
|
else
|
|
for ((i = 0; i < ${#actual}; i++)); do
|
|
if [[ "${actual:$i:1}" != "${guess:$i:1}" ]]; then
|
|
remaining+=${actual:$i:1}
|
|
fi
|
|
done
|
|
for ((i = 0; i < ${#actual}; i++)); do
|
|
if [[ "${actual:$i:1}" != "${guess:$i:1}" ]]; then
|
|
if [[ "$remaining" == *"${guess:$i:1}"* ]]; then
|
|
output+="\033[30;103m ${guess:$i:1} \033[0m"
|
|
remaining=${remaining/"${guess:$i:1}"/}
|
|
else
|
|
output+="\033[30;107m ${guess:$i:1} \033[0m"
|
|
fi
|
|
else
|
|
output+="\033[30;102m ${guess:$i:1} \033[0m"
|
|
fi
|
|
done
|
|
printf "$output\n"
|
|
fi
|
|
else
|
|
echo "Please enter a valid word with 5 letters!"
|
|
guess_count=$(($guess_count - 1))
|
|
fi
|
|
else
|
|
echo "You lose! The word is:"
|
|
echo $actual
|
|
end=true
|
|
fi
|
|
done
|