Compare commits

..
Author SHA1 Message Date
adam efa709e34e add online mode flag to help message
Deploy game to server / deploy (push) Successful in 8s
2025-11-23 21:22:10 +00:00
adam a7cdb712fd fix typo in function name
Deploy game to server / deploy (push) Successful in 7s
2025-09-27 21:14:39 +00:00
adam 75074d8e84 add stats url to online mode
Deploy game to server / deploy (push) Successful in 7s
2025-08-28 09:59:26 +00:00
adam 3487adf34c exit save_result if not in online mode
Deploy game to server / deploy (push) Successful in 30s
2025-04-23 21:22:03 +00:00
adam 2194d495e6 extra file for current board
Deploy game to server / deploy (push) Successful in 42s
2025-03-03 12:07:43 +00:00
adam 005a129919 change help message format
Deploy game to server / deploy (push) Successful in 6s
2025-02-22 20:00:30 +00:00
adam bdb3d4e4d1 Move signal trap initialization after game mode questions - Prevent progress files after incorrect username 2025-02-22 19:41:46 +00:00
adam 6bbcc5229b save progress at start of a game 2025-02-22 19:38:06 +00:00
adam 4029c00edc remove $ where not needed 2025-02-22 19:22:45 +00:00
adam 8327678209 only show board on daily win
Deploy game to server / deploy (push) Successful in 6s
2025-02-21 13:21:04 +00:00
adam d496319361 Add guess count out of 6 on win
Deploy game to server / deploy (push) Successful in 7s
2025-02-21 13:12:19 +00:00
adam 107fd30b00 print spoiler free board after a game 2025-02-21 13:07:03 +00:00
+36 -16
View File
@@ -50,12 +50,14 @@ function main() {
init_board init_board
fi fi
[[ "${ONLINE}" == 1 ]] && save_game "NO_EXIT"
render_board render_board
for (( ROW; ROW<HEIGHT; ROW++ )); do for (( ROW; ROW<HEIGHT; ROW++ )); do
declare GUESS declare GUESS
[[ "${KEYBOARD}" == 1 ]] && render_keyboard [[ "${KEYBOARD}" == 1 ]] && render_keyboard
GUESS=$(retrive_guess) GUESS=$(retrieve_guess)
check_guess "${GUESS}" "${ROW}" ; WIN=$? check_guess "${GUESS}" "${ROW}" ; WIN=$?
reveal_row "${ROW}" reveal_row "${ROW}"
@@ -63,7 +65,12 @@ function main() {
if [[ $WIN == 5 ]]; then if [[ $WIN == 5 ]]; then
save_result save_result
echo -e "${CLEAR_DOWN}YOU WIN" echo -e "${CLEAR_DOWN}YOU WIN"
[[ "${ONLINE}" == 1 && "${DAILY_DONE}" != 1 ]] && echo "Share/view your game with -> curl \"${URL_BASE}/${RESULT_FILE}\"" if [[ "${ONLINE}" == 1 && "${DAILY_DONE}" != 1 ]]; then
echo "Share/view your game with -> curl \"${URL_BASE}/${RESULT_FILE}\""
echo "Share/view your stats with -> curl \"${URL_BASE}/stats/${USER}\""
while read -r board_line; do echo "${board_line//[A-Z]/ }"; done < "${RESULT_FILE}"
fi
echo "Guess - $(( ROW+1 ))/6"
exit 0 exit 0
fi fi
done done
@@ -76,7 +83,11 @@ function main() {
echo -en "${NEWLINE}${RESET}" echo -en "${NEWLINE}${RESET}"
save_result save_result
[[ "${ONLINE}" == 1 && "${DAILY_DONE}" != 1 ]] && echo "Share/view your game with -> curl \"${URL_BASE}/${RESULT_FILE}\"" if [[ "${ONLINE}" == 1 && "${DAILY_DONE}" != 1 ]]; then
echo "Share/view your game with -> curl \"${URL_BASE}/${RESULT_FILE}\""
echo "Share/view your stats with -> curl \"${URL_BASE}/stats/${USER}\""
while read -r board_line; do echo "${board_line//[A-Z]/ }"; done < "${RESULT_FILE}"
fi
exit 0 exit 0
} }
@@ -130,18 +141,18 @@ function set_options() {
USER="${USER,,}" USER="${USER,,}"
declare -g DAY declare -g DAY
DAY=$(( $EPOCHSECONDS / 86400 )) DAY=$(( EPOCHSECONDS / 86400 ))
declare -gr PROGRESS_FILE=".${USER}-${DAY}.progress" declare -gr PROGRESS_FILE=".${USER}-${DAY}.progress"
declare -gr RESULT_FILE="${USER}-${DAY}.board" declare -gr RESULT_FILE="${USER}-${DAY}.board"
declare -gr CUR_RESULT_FILE="${USER}.board"
declare -gr STATS_SOURCE=".${USER}.stats" declare -gr STATS_SOURCE=".${USER}.stats"
declare -gr STATS_FILE="${USER}.stats" declare -gr STATS_FILE="${USER}.stats"
trap save_game SIGINT
if [[ -f "${PROGRESS_FILE}" ]] && [[ -s "${PROGRESS_FILE}" ]]; then if [[ -f "${PROGRESS_FILE}" ]] && [[ -s "${PROGRESS_FILE}" ]]; then
load_game load_game
RESUME=1 RESUME=1
@@ -161,19 +172,24 @@ function set_options() {
[[ "${HM}" =~ ^[Yy]$ ]] && STRICT_HARD_MODE=1 [[ "${HM}" =~ ^[Yy]$ ]] && STRICT_HARD_MODE=1
fi fi
fi fi
trap save_game SIGINT
;; ;;
d) d)
DELAY=0 DELAY=0
;; ;;
h) h)
echo -e "Usage: <program_name> [OPTIONS] echo -e \
"Usage: <program_name> [OPTIONS]
Play a game for Wordle Play a game for Wordle
Options: Options:
-b Toggle borderless mode -b Toggle borderless mode
-w Set target word -w Set target word
-H Enable hard mode -H Enable hard mode
-S Enable strict hard mode (Cannot reuse grey letters) -S Enable strict hard mode (Cannot reuse grey letters)
-k disable on screen keyboard -k disable on screen keyboard
-o Enable online mode
-d Enable debug mode (no delay during letter reveal) -d Enable debug mode (no delay during letter reveal)
-h Show this help message and exit" -h Show this help message and exit"
@@ -212,7 +228,7 @@ function render_board() {
[[ "${BORDER}" == 1 ]] && echo -e "└─────────────────┘" [[ "${BORDER}" == 1 ]] && echo -e "└─────────────────┘"
} }
function retrive_guess() { function retrieve_guess() {
if [[ -n $1 ]]; then if [[ -n $1 ]]; then
read -r -p "${CLEAR_UP1}$1: " GUESS read -r -p "${CLEAR_UP1}$1: " GUESS
else else
@@ -225,12 +241,12 @@ function retrive_guess() {
declare valid_guess declare valid_guess
validate_guess "${GUESS}" ; valid_guess=$? validate_guess "${GUESS}" ; valid_guess=$?
[[ ${valid_guess} == 1 ]] && GUESS=$(retrive_guess "Not A Valid Word") [[ ${valid_guess} == 1 ]] && GUESS=$(retrieve_guess "Not A Valid Word")
[[ ${valid_guess} == 2 ]] && GUESS=$(retrive_guess "Not A Valid Guess") [[ ${valid_guess} == 2 ]] && GUESS=$(retrieve_guess "Not A Valid Guess")
[[ ${valid_guess} == 3 ]] && GUESS=$(retrive_guess "GREEN Issue") [[ ${valid_guess} == 3 ]] && GUESS=$(retrieve_guess "GREEN Issue")
[[ ${valid_guess} == 4 ]] && GUESS=$(retrive_guess "YELLOW Issue") [[ ${valid_guess} == 4 ]] && GUESS=$(retrieve_guess "YELLOW Issue")
[[ ${valid_guess} == 5 ]] && GUESS=$(retrive_guess "POOL Issue") [[ ${valid_guess} == 5 ]] && GUESS=$(retrieve_guess "POOL Issue")
[[ ${valid_guess} == 6 ]] && GUESS=$(retrive_guess "NEW Issue") [[ ${valid_guess} == 6 ]] && GUESS=$(retrieve_guess "NEW Issue")
echo -n "${GUESS^^}" echo -n "${GUESS^^}"
} }
@@ -378,20 +394,24 @@ function save_game() {
} >> "${PROGRESS_FILE}" } >> "${PROGRESS_FILE}"
echo -en "${RESET}" echo -en "${RESET}"
exit 0 [[ -z $1 ]] && exit 0
} }
function save_result() { function save_result() {
[[ "${ONLINE}" == 0 ]] && return 0
[[ "${ONLINE}" == 1 ]] && update_stats [[ "${ONLINE}" == 1 ]] && update_stats
if [[ "${ONLINE}" == 1 ]] && [[ "${DAILY_DONE}" != 1 ]]; then if [[ "${ONLINE}" == 1 ]] && [[ "${DAILY_DONE}" != 1 ]]; then
render_board > "${RESULT_FILE}" render_board > "${RESULT_FILE}"
render_board > "${CUR_RESULT_FILE}"
if [[ $WIN != 5 ]]; then if [[ $WIN != 5 ]]; then
[[ "${BORDER}" == 1 ]] && echo -en "${CLEAR_DOWN}${INDENT}${INDENT}" >> "${RESULT_FILE}" [[ "${BORDER}" == 1 ]] && echo -en "${CLEAR_DOWN}${INDENT}${INDENT}" >> "${RESULT_FILE}"
echo -en "${CLEAR_LINE}${BOLD}" >> "${RESULT_FILE}" echo -en "${CLEAR_LINE}${BOLD}" >> "${RESULT_FILE}"
for (( i=0; i<WIDTH; i++ )); do for (( i=0; i<WIDTH; i++ )); do
echo -en " ${ANSWER:$i:1} " >> "${RESULT_FILE}" echo -en " ${ANSWER:$i:1} " >> "${RESULT_FILE}"
echo -en " ${ANSWER:$i:1} " >> "${CUR_RESULT_FILE}"
done done
echo -en "${NEWLINE}${RESET}" >> "${RESULT_FILE}" echo -en "${NEWLINE}${RESET}" >> "${RESULT_FILE}"
echo -en "${NEWLINE}${RESET}" >> "${CUR_RESULT_FILE}"
fi fi
fi fi
echo 'PLAYED=1' > "${PROGRESS_FILE}" echo 'PLAYED=1' > "${PROGRESS_FILE}"
@@ -413,7 +433,7 @@ function update_stats() {
[[ $WIN == 5 ]] && SCORE="${GAME_HIST[$ROW]}" [[ $WIN == 5 ]] && SCORE="${GAME_HIST[$ROW]}"
[[ $WIN == 5 ]] && SCORE=$(( SCORE+1 )) [[ $WIN == 5 ]] && SCORE=$(( SCORE+1 ))
[[ $WIN == 5 ]] && GAME_HIST[$ROW]="${SCORE}" [[ $WIN == 5 ]] && GAME_HIST[ROW]="${SCORE}"
[[ $WIN == 5 ]] && STREAK=$(( STREAK+1 )) [[ $WIN == 5 ]] && STREAK=$(( STREAK+1 ))
[[ $WIN != 5 ]] && STREAK=0 [[ $WIN != 5 ]] && STREAK=0