bugfix/hardmode #2

Merged
adam merged 3 commits from bugfix/hardmode into main 2025-01-29 13:19:30 +00:00
Showing only changes of commit d1ff8262db - Show all commits
+18 -14
View File
@@ -41,8 +41,7 @@ function main() {
for (( row=0; row<HEIGHT; row++ )); do
declare GUESS
GUESS=$(retrive_guess)
check_guess "${GUESS}" "${row}"
win=$?
check_guess "${GUESS}" "${row}" ; win=$?
reveal_row "${row}"
[[ $win == 5 ]] && echo -e "${CLEAR_DOWN}YOU WIN" && exit 0
@@ -157,6 +156,9 @@ function retrive_guess() {
[[ ${valid_guess} == 1 ]] && GUESS=$(retrive_guess "Not A Valid Word")
[[ ${valid_guess} == 2 ]] && GUESS=$(retrive_guess "Not A Valid Guess")
[[ ${valid_guess} == 3 ]] && GUESS=$(retrive_guess "GREEN Issue")
[[ ${valid_guess} == 4 ]] && GUESS=$(retrive_guess "YELLOW Issue")
[[ ${valid_guess} == 5 ]] && GUESS=$(retrive_guess "POOL Issue")
echo -n "${GUESS^^}"
}
@@ -183,14 +185,16 @@ function hard_mode_check() {
for (( i=0; i<WIDTH; i++ )); do
if [[ "${STRICT_HARD_MODE}" == 1 ]]; then
[[ "${POOL}" == *${GUESS:i:1}* ]] || return 2
[[ "${POOL}" == *${GUESS:i:1}* ]] || return 5
fi
color_check "${GUESS:i:1}" $i && continue
if [[ -n "${greens[i]}" ]]; then
[[ "${greens[i]}" != "${GUESS:i:1}" ]] && return 3
fi
if [[ "${yellows}" == *${GUESS:i:1}* ]]; then
yellows="${yellows/${GUESS:i:1}/}"
color_check "${GUESS:i:1}" $i && return 2
if [[ " ${yellows[*]} " =~ ${GUESS:i:1} ]]; then
unset 'yellows[i]'
color_check "${GUESS:i:1}" $i && return 4
fi
done
@@ -213,10 +217,10 @@ function check_guess() {
declare -r _guess=$1
declare -r _row=$2
declare -r _answer="${ANSWER}"
declare green_count=0
declare chars=""
declare -g greens=""
declare -g yellows=""
declare -ga greens=()
declare -ga yellows=()
for (( i=0; i<WIDTH; i++ )); do
[[ "${_answer:i:1}" != "${_guess:i:1}" ]] && chars+=${_answer:i:1}
@@ -229,18 +233,18 @@ function check_guess() {
if [[ "${_char}" == "${_answer:$c:1}" ]]; then
green_count=$(( green_count+1 ))
greens+="${_char}"
greens[c]="${_char}"
BOARD[$_row,$c]="${BOLD}${LETTER}${GREEN} ${_char} "
[[ $green_count == 5 ]] && return 5
[[ "${#greens[*]}" -eq 5 ]] && return 5
continue
fi
if [[ "${chars}" == *${_char}* ]]; then
chars="${chars/${_char}/}"
yellows+="${_char}"
yellows[c]="${_char}"
BOARD[$_row,$c]="${BOLD}${LETTER}${YELLOW} ${_char} "
else
POOL="${POOL/${_char}/}"
POOL="${POOL/${_char}/_}"
fi
done
}