diff --git a/wordle b/wordle index 3c9f470..cdbd257 100755 --- a/wordle +++ b/wordle @@ -27,6 +27,7 @@ declare -gr INDENT=$'\e[1C' function main() { echo -en "${CLEAR_SCREEN}" declare -g ANSWER + declare -g POOL='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ANSWER=$(select_random_word) set_options "$@" @@ -63,8 +64,9 @@ function select_random_word() { function set_options() { declare -g BORDER=1 + declare -g HARD_MODE=0 - while getopts "bw:h" OPT; do + while getopts "bw:Hh" OPT; do case "${OPT}" in b) BORDER=0 @@ -77,6 +79,9 @@ function set_options() { exit 1 fi ;; + H) + HARD_MODE=1 + ;; h) exit # add help message ;; @@ -123,14 +128,14 @@ function retrive_guess() { while [[ ${#GUESS} -ne 5 ]] || [[ ! "${GUESS,,}" =~ ^[a-z]{5}$ ]]; do read -r -p "${CLEAR_UP1}Must be 5 letters: " GUESS done - declare valid_guess validate_guess "${GUESS}" & declare validation_pid=$! wait $validation_pid valid_guess=$? - [[ ${valid_guess} != 0 ]] && GUESS=$(retrive_guess "Not A Valid Word") + [[ ${valid_guess} == 1 ]] && GUESS=$(retrive_guess "Not A Valid Word") + [[ ${valid_guess} == 2 ]] && GUESS=$(retrive_guess "Not A Valid Guess") echo -n "${GUESS^^}" } @@ -140,6 +145,9 @@ function validate_guess() { for WORD in ${VALID_GUESSES}; do if [[ "${WORD}" == "${GUESS,,}" ]]; then + if [[ "${HARD_MODE}" == 1 ]]; then + hard_mode_check "${GUESS^^}" || return $? + fi return 0 fi done @@ -147,12 +155,45 @@ function validate_guess() { return 1 } +function hard_mode_check() { + [[ -z "${row}" || "${row}" == 0 ]] && return 0 + + declare GUESS=$1 + + for (( i=0; i