crunk
5 years ago
commit
db5df67d9e
3 changed files with 128 additions and 0 deletions
@ -0,0 +1,4 @@ |
|||||
|
//#!/bin/zsh |
||||
|
iconv -f cp437 -t utf-8 < input.ans > output.txt ; |
||||
|
sed -e "s/.\{80\}/&\n\r/" < input.txt > output.txt |
||||
|
|
@ -0,0 +1,123 @@ |
|||||
|
#!/bin/zsh |
||||
|
|
||||
|
|
||||
|
_STTY=$(stty -g) # Save current terminal setup |
||||
|
#printf "\e[2J" # clear screen, set cursos at beginning |
||||
|
stty -echo -icanon # Turn off line buffering |
||||
|
|
||||
|
# VARIABLES |
||||
|
typeset -A IMAGE |
||||
|
X=0 |
||||
|
Y=24 |
||||
|
snake='═' |
||||
|
|
||||
|
vertical=false |
||||
|
forward=true |
||||
|
upward=true |
||||
|
|
||||
|
function start_the_snake() { |
||||
|
rm thesnake |
||||
|
for i in {0..29} |
||||
|
do |
||||
|
for j in {0..79} |
||||
|
do |
||||
|
IMAGE["${i};${j}"]=' ' ; printf ${IMAGE["${i};${j}"]} |
||||
|
done |
||||
|
done |
||||
|
} |
||||
|
|
||||
|
function save_the_snake() { |
||||
|
for i in {0..29} |
||||
|
do |
||||
|
for j in {0..79} |
||||
|
do |
||||
|
printf ${IMAGE["${i};${j}"]} |
||||
|
done |
||||
|
done >> thesnake |
||||
|
} |
||||
|
|
||||
|
function show_the_snake() { |
||||
|
clear |
||||
|
for i in {0..29} |
||||
|
do |
||||
|
for j in {0..79} |
||||
|
do |
||||
|
printf ${IMAGE["${i};${j}"]} |
||||
|
done |
||||
|
done |
||||
|
} |
||||
|
function at_exit() { |
||||
|
printf "\e[?9l" # Turn off mouse reading |
||||
|
printf "\e[?12l\e[?25h" # Turn on cursor |
||||
|
stty "$_STTY" # reinitialize terminal settings |
||||
|
clear |
||||
|
exit |
||||
|
} |
||||
|
|
||||
|
#═ ║╒ ╓ ╔ ╕ ╖ ╗ ╘ ╙ ╚ ╛ ╜ ╝ ╞ ╟ |
||||
|
#╠ ╡ ╢ ╣ ╤ ╥ ╦ ╧ ╨ ╩ ╪ ╫ ╬ |
||||
|
|
||||
|
function move_snake_up() { |
||||
|
if [ "$vertical" = false ] ; then |
||||
|
if [ "$forward" = true ] ; then |
||||
|
snake='╝' |
||||
|
else |
||||
|
snake='╚' |
||||
|
fi |
||||
|
IMAGE["${Y};${X}"]=$snake ; Y=$((Y-1)) ; vertical=true ; upward=true |
||||
|
else |
||||
|
snake='║' ; IMAGE["${Y};${X}"]=$snake ; Y=$((Y-1)) |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
function move_snake_down() { |
||||
|
if [ "$vertical" = false ] ; then |
||||
|
if [ "$forward" = true ] ; then |
||||
|
snake='╗' |
||||
|
else |
||||
|
snake='╔' |
||||
|
fi |
||||
|
IMAGE["${Y};${X}"]=$snake ; Y=$((Y+1)) ; vertical=true ; upward=false |
||||
|
else |
||||
|
snake='║' ; IMAGE["${Y};${X}"]=$snake ; Y=$((Y+1)) |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
function move_snake_forward() { |
||||
|
if [ "$vertical" = true ] ; then |
||||
|
if [ "$upward" = true ] ; then |
||||
|
snake='╔' |
||||
|
else |
||||
|
snake='╚' |
||||
|
fi |
||||
|
IMAGE["${Y};${X}"]=$snake ; X=$((X+1)) ; vertical=false ; forward=true |
||||
|
else |
||||
|
snake='═' ; IMAGE["${Y};${X}"]=$snake ; X=$((X+1)) |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
function move_snake_backward() { |
||||
|
if [ "$vertical" = true ] ; then |
||||
|
if [ "$upward" = true ] ; then |
||||
|
snake='╗' |
||||
|
else |
||||
|
snake='╝' |
||||
|
fi |
||||
|
IMAGE["${Y};${X}"]=$snake ; X=$((X-1)) ; vertical=false ; forward=false |
||||
|
else |
||||
|
snake='═' ; IMAGE["${Y};${X}"]=$snake ; X=$((X-1)) |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
# Main # |
||||
|
start_the_snake |
||||
|
while read -s -k 1 cr; |
||||
|
do |
||||
|
case "$cr" in |
||||
|
w) move_snake_up ; show_the_snake ;; |
||||
|
s) move_snake_down ; show_the_snake ;; |
||||
|
a) move_snake_backward ; show_the_snake ;; |
||||
|
d) move_snake_forward ; show_the_snake ;; |
||||
|
q) save_the_snake && at_exit ;; |
||||
|
esac |
||||
|
done |
@ -0,0 +1 @@ |
|||||
|
════ |
Loading…
Reference in new issue