basic keyboard function

This commit is contained in:
adam committed 2025-01-29 22:41:04 +00:00
1 parent 1e6942c5b7
commit 2ee79b85db
1 file changed
+21 -6
+21 -6
View File
@@ -23,10 +23,11 @@ declare -gr SHOW_CURSOR=$'\e[?25h'
declare -gr GOHOME=$'\e[H' declare -gr GOHOME=$'\e[H'
declare -gr DOWN1=$'\e[1E' declare -gr DOWN1=$'\e[1E'
declare -gr INDENT=$'\e[1C' declare -gr INDENT=$'\e[1C'
declare -gr DOWN3=$'\e[9;0H'
function main() { function main() {
declare -g ANSWER declare -g ANSWER
declare -g POOL='ABCDEFGHIJKLMNOPQRSTUVWXYZ' declare -g POOL='QWERTYUIOPASDFGHJKLZXCVBNM'
ANSWER=$(select_random_word) ANSWER=$(select_random_word)
set_options "$@" set_options "$@"
@@ -40,6 +41,7 @@ function main() {
declare row declare row
for (( row=0; row<HEIGHT; row++ )); do for (( row=0; row<HEIGHT; row++ )); do
declare GUESS declare GUESS
[[ "${KEYBOARD}" == 1 ]] && render_keyboard
GUESS=$(retrive_guess) GUESS=$(retrive_guess)
check_guess "${GUESS}" "${row}" ; win=$? check_guess "${GUESS}" "${row}" ; win=$?
@@ -67,6 +69,7 @@ function set_options() {
declare -g HARD_MODE=0 declare -g HARD_MODE=0
declare -g STRICT_HARD_MODE=0 declare -g STRICT_HARD_MODE=0
declare -g DELAY=0.5 declare -g DELAY=0.5
declare -g KEYBOARD=1
while getopts "bw:HSdh" OPT; do while getopts "bw:HSdh" OPT; do
case "${OPT}" in case "${OPT}" in
@@ -149,10 +152,7 @@ function retrive_guess() {
read -r -p "${CLEAR_UP1}Must be 5 letters: " GUESS read -r -p "${CLEAR_UP1}Must be 5 letters: " GUESS
done done
declare valid_guess declare valid_guess
validate_guess "${GUESS}" & validate_guess "${GUESS}" ; valid_guess=$?
declare validation_pid=$!
wait $validation_pid
valid_guess=$?
[[ ${valid_guess} == 1 ]] && 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") [[ ${valid_guess} == 2 ]] && GUESS=$(retrive_guess "Not A Valid Guess")
@@ -163,6 +163,20 @@ function retrive_guess() {
echo -n "${GUESS^^}" echo -n "${GUESS^^}"
} }
function render_keyboard() {
declare pos=$(( BORDER*2+7 ))
echo -en "\e[$pos;0H"
for (( i=0; i<${#POOL}; i++ )); do
if [[ $i == 10 ]]; then
echo -en "${NEWLINE}${INDENT}"
elif [[ $i == 19 ]]; then
echo -en "${NEWLINE} "
fi
echo -n "${POOL:$i:1} "
done
echo -en "${NEWLINE}"
}
function validate_guess() { function validate_guess() {
declare GUESS=$1 declare GUESS=$1
@@ -239,7 +253,8 @@ function check_guess() {
chars="${chars/${_char}/}" chars="${chars/${_char}/}"
yellows[c]="${_char}" yellows[c]="${_char}"
BOARD[$_row,$c]="${BOLD}${LETTER}${YELLOW} ${_char} " BOARD[$_row,$c]="${BOLD}${LETTER}${YELLOW} ${_char} "
continue else
POOL="${POOL/${_char}/_}"
fi fi
[[ " ${yellows[*]} " =~ ${_char} ]] && continue [[ " ${yellows[*]} " =~ ${_char} ]] && continue
[[ " ${greens[*]} " =~ ${_char} ]] && continue [[ " ${greens[*]} " =~ ${_char} ]] && continue