bash/christmas: festive holiday celebration

This commit is contained in:
Nick Chambers 2021-07-25 20:59:56 -05:00
parent 86bf71ffc4
commit e056f1eaf5
1 changed files with 95 additions and 0 deletions

95
bash/christmas Executable file
View File

@ -0,0 +1,95 @@
#!/usr/bin/env bash
reset() {
tput reset
tput cnorm
exit
}
trap reset EXIT
read -ra date < <(date "+%Y %m %d")
if (( date[1] == 12 && date[2] > 25 )); then
new_year=$(( date[0] + 1 ))
else
new_year=${date[0]}
fi
clear
tput civis
tput setaf 2
tput bold
lines=2
cols=$(( $(tput cols) / 2 ))
cur_col=$(( cols - 1 ))
for (( needles = 1; needles < 20; needles += 2 )); do
tput cup "$lines" "$cols"
for (( needle = 0; needle < needles; ++needle )); do
printf '*'
done
(( lines++ ))
(( cols-- ))
done
tput sgr0
tput setaf 3
for _ in {1..2}; do
tput cup "$(( lines++ ))" "$cur_col"
printf 'MWM\n'
done
tput setaf 1
tput bold
tput cup "$lines" "$(( cur_col - 6 ))"
printf 'MERRY CHRISTMAS\n'
tput cup "$(( lines + 1 ))" "$(( cur_col - 10 ))"
printf 'And lots of CODE in %d\n' "$new_year"
(( ++cur_col ))
pos=1
color=0
line=( )
column=( )
while true; do
for needle in {1..35}; do
if (( pos > 1 )); then
needle_pos=$(( pos - 1 ))$needle
tput setaf 2
tput bold
tput cup "${line[$needle_pos]}" "${column[$needle_pos]}"
printf '*'
unset line["$needle_pos"]
unset column["$needle_pos"]
fi
new_line=$(( RANDOM % 9 + 3 ))
start=$(( cur_col - new_line + 2 ))
new_col=$(( RANDOM % (new_line - 2) * 2 + 1 + start ))
tput setaf "$color"
tput bold
tput cup "$new_line" "$new_col"
printf 'o'
line[$pos$needle]=$new_line
column[$pos$needle]=$new_col
color=$(( (color + 1) % 8 ))
sh=1
for l in C O D E; do
tput cup "$(( lines + 1 ))" "$(( cur_col + sh ))"
printf '%s' "$l"
(( sh++ ))
sleep 0.01
done
done
pos=$(( pos % 2 + 1 ))
done