From d83a172950d90861d63b3891b14d5106e710502d Mon Sep 17 00:00:00 2001 From: xero Date: Sun, 1 Nov 2015 15:40:55 -0500 Subject: use ~/bin like a civilized nixer --- fun/bin/2spooky.lua | 79 +++++++++++++++++++++ fun/bin/colors | 13 ++++ fun/bin/colorscheme | 27 ++++++++ fun/bin/dna | 46 +++++++++++++ fun/bin/ghosts | 31 +++++++++ fun/bin/invaders | 54 +++++++++++++++ fun/bin/metroid | 27 ++++++++ fun/bin/pacman | 37 ++++++++++ fun/bin/pipes | 122 +++++++++++++++++++++++++++++++++ fun/bin/pipesx | 193 ++++++++++++++++++++++++++++++++++++++++++++++++++++ fun/bin/rain | 100 +++++++++++++++++++++++++++ fun/bin/ryu | 188 ++++++++++++++++++++++++++++++++++++++++++++++++++ fun/bin/slendy | 35 ++++++++++ 13 files changed, 952 insertions(+) create mode 100755 fun/bin/2spooky.lua create mode 100755 fun/bin/colors create mode 100755 fun/bin/colorscheme create mode 100755 fun/bin/dna create mode 100755 fun/bin/ghosts create mode 100755 fun/bin/invaders create mode 100755 fun/bin/metroid create mode 100755 fun/bin/pacman create mode 100755 fun/bin/pipes create mode 100755 fun/bin/pipesx create mode 100755 fun/bin/rain create mode 100755 fun/bin/ryu create mode 100755 fun/bin/slendy (limited to 'fun/bin') diff --git a/fun/bin/2spooky.lua b/fun/bin/2spooky.lua new file mode 100755 index 0000000..a0ebc5d --- /dev/null +++ b/fun/bin/2spooky.lua @@ -0,0 +1,79 @@ + --Definitely not my best work, first script I've done in Lua 5.2 + function draw() + nissue = { + "\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[1;33m", + ",~~~~~~~~~~~~~, \027[0;31m..:::::::::.. \027[1;33m ,~~~~~~~~~~~~~,\027[1;33m", + "\027[1;33m:\027[1;32m .-======-,\027[1;33m : \027[0;31m ..:::\027[1;37maad8888888baa\027[0;31m:::.. \027[1;33m:\027[1;34mExploit-the \027[1;33m :\027[1;32m", + "\027[1;33m:\027[1;32m ||\027[0;31mH4CK3R\027[1;32m|# \027[1;33m : \027[0;31m .::::\027[1;37md:?88888888888?::8b\027[0;31m::::. \027[1;33m :\027[0;31m.-------,./|\027[1;33m :\027[1;32m", + "\027[1;33m:\027[1;32m ||______|| \027[1;33m :\027[1;34m&&&& \027[0;31m.:::\027[1;37md8888:?88888888??a888888b\027[0;31m:::. \027[1;34m &&&&\027[1;33m:\027[0;31m{ \027[1;33m VIRUS \027[0;31m /\027[1;33m :\027[1;33m", + "\027[1;33m:\027[1;32m | ___ | \027[1;33m : \027[1;34m + \027[0;31m.:::\027[1;37md8888888a8888888aa8888888888b\027[0;31m:::. \027[1;34m + \027[1;33m :\027[0;31m \\\027[1;33m DROPPER\027[0;31m 7\027[1;33m :\027[1;33m", + "\027[1;33m:\027[1;32m | |\027[1;35m[]\027[1;32m | | \027[1;33m : \027[1;34m &\027[0;31m::::\027[1;37mdP\027[0;31m\023\022\021\020\019\018\017\016\027[1;37m88888888888\027[0;31m\023\022\021\020\019\018\017\016\027[1;37mYb\027[0;31m::::\027[1;34m&&\027[1;33m :\027[0;31m ~. ,--.( \027[1;33m :\027[1;33m", + "\027[1;33m:\027[1;32m `-------' \027[1;33m : \027[0;31m::::\027[1;37mdP\027[0;31m\024:::::::\015\027[1;37mY888888888P\027[0;31m\024:::::::\015\027[1;37mYb\027[0;31m::::\027[1;33m : \027[0;31m '~ `;\027[1;33m :\027[1;33m", + "\027[1;33m:\027[0;31mReverse- \027[1;33m : \027[0;31m::::\027[1;37md8\027[0;31m\001:::::::::\014\027[1;37mY8888888P\027[0;31m\001:::::::::\014\027[1;37m8b\027[0;31m::::\027[1;33m :\027[1;34mNation's-\027[0;31mData\027[1;33m:\027[1;33m", + "\027[1;33m:\027[0;31mEngineering \027[1;33m: \027[0;31m.::::\027[1;37m88\027[0;31m\002\003\004\005\006\007\008\009\010\011\012\013\027[1;37mY88888P\027[0;31m\002\003\004\005\006\007\008\009\010\011\012\013\027[1;37m88\027[0;31m::::.\027[1;33m `~~~~~~~~~~~~'\027[1;33m", + "\027[1;33m `~~~~~~~~~~~~' \027[0;31m:::::\027[1;37mY8baaaaaaaaaa88P\027[0;31m:\027[1;37mT\027[0;31m:\027[1;37mY88aaaaaaaaaad8P\027[0;31m::::: \027[0;31m", + "\027[0;31m :::::::\027[1;37mY88888888888P\027[0;31m::\027[1;37m|\027[0;31m::\027[1;37mY88888888888P\027[0;31m::::::: \027[0;31m", + "\027[1;33m,~~~~~~~~~~~~~, \027[0;31m::::::::::::::::\027[1;37m888\027[0;31m:::\027[1;37m|\027[0;31m:::\027[1;37m888\027[0;31m::::::::::::::::\027[1;33m ,~~~~~~~~~~~~~,\027[1;33m", + "\027[1;33m:\027[1;34m R00T-KITS \027[1;33m : \027[0;31m`:::::::::::::::\027[1;37m8888888888888b\027[0;31m::::::::::::::' \027[1;33m :\027[0;31mHoM3-$w33t\027[1;33m :\027[1;37m", + "\027[1;33m:\027[0;31m ____ \027[1;37m __ \027[1;33m : \027[0;31m:::::::::::::::\027[1;37m88888888888888\027[0;31m:::::::::::::: \027[1;33m :\027[1;34m (I\027[1;33m :\027[1;33m", + "\027[1;33m: \027[0;31m| |\027[1;37m |\027[0;31m-_\027[1;37m| \027[1;33m:\027[0;31m :::::::::::::\027[1;37md88888888888888\027[0;31m::::::::::::: \027[1;33m :\027[1;36m^^^\027[1;34m |\027[1;36m ^^^\027[1;33m:\027[1;33m", + "\027[1;33m:\027[0;31m |____|\027[1;33m_\027[1;37m|\027[0;31m=_\027[1;37m|\027[1;33m :\027[0;31m ::::::::::::\027[1;37m88\027[0;31m::\027[1;37m88\027[0;31m::\027[1;37m88\027[0;31m:::\027[1;37m88\027[0;31m::::::::::::\027[1;33m :\027[1;34m|u|_\027[1;36m^^^^^\027[1;34m_|u|\027[1;33m:\027[1;33m", + "\027[1;33m:\027[1;37m ____\027[1;33m)\027[1;37m_\027[1;37m.\027[1;37m___\027[1;33m : \027[0;31m`::::::::::\027[1;37m88\027[0;31m::\027[1;37m88\027[0;31m::\027[1;37m88\027[0;31m:::\027[1;37m88\027[0;31m::::::::::' \027[1;33m :\027[1;34m|_ u _ u _|\027[1;33m:\027[1;33m", + "\027[1;33m: \027[1;37m/\027[1;34m:::::;\027[1;37m|\027[1;34m _\027[1;37m)\027[1;33m:\027[1;34m &\027[0;31m`:::::::::\027[1;37m88\027[0;31m::\027[1;37m88\027[0;31m::\027[1;37mP\027[0;31m::::\027[1;37m88\027[0;31m:::::::::'\027[1;34m& \027[1;33m:\027[1;34m |__|\027[1;37m;\027[1;34m|__| \027[1;33m :\027[1;33m", + "\027[1;33m:\027[1;37m `======'\027[1;34m |_|\027[1;33m: \027[1;34m+ \027[0;31m `:::::::\027[1;37m88\027[0;31m::\027[1;37m88\027[0;31m:::::::\027[1;37m88\027[0;31m:::::::' \027[1;34m + \027[1;33m :\027[1;34m /_/ \027[1;33m :\027[1;33m", + "\027[1;33m:\027[1;34mUr-Computer-\027[1;33m :\027[1;34m&&&&&&& \027[0;31m ``:::::::::::::::::::::::''\027[1;34m &&&&&&&\027[1;33m:\027[0;31mH4x0r-HoM3- \027[1;33m :\027[1;33m", + "\027[1;33m:\027[1;34mis-MY-\027[0;31mSlave \027[1;33m : \027[0;31m ``::::::::::::::''\027[1;33m :\027[0;31m *\027[1;37m127\027[0;31m.\027[1;37m0\027[0;31m.\027[1;37m0\027[0;31m.\027[1;37m1\027[0;31m* \027[1;33m:\027[1;33m", + "\027[1;33m `~~~~~~~~~~~~' `~~~~~~~~~~~~'\027[1;33m", + "\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[0;31m=\027[1;37m-\027[1;37m", + "\027[0;31m -======- \027[1;37m +\027[0;31mWARNING\027[1;37m+\027[1;33m\"\027[0;31mIllegal\027[1;37m_\027[0;31mNetwork\027[1;37m_\027[0;31mConnections\027[1;37m_\027[0;31mBeyond\027[1;37m_\027[0;31mLogin\027[1;33m\" \027[0;31m -======-\027[0;31m", + "\027[0;31m |\027[1;32mH\027[1;34m4\027[1;33mC\027[1;35mK\027[1;36m3\027[1;37mR\027[0;31m| \027[1;34m -== \027[1;37m You are at the point of \027[0;31mNO RETURN \027[1;34m ==- \027[0;31m |\027[1;32mH\027[1;34m4\027[1;33mC\027[1;35mK\027[1;36m3\027[1;37mR\027[0;31m|\027[0;31m", + "\027[0;31m |______|\027[0;31mYour Activities\027[1;37m:\027[1;33mWill\027[1;37m_\027[1;33mbe\027[1;37m_\027[1;33mKeylogged\027[1;37m_\027[1;33mand\027[1;37m_\027[1;33mTimestamped \027[1;34m\"\027[0;31mUSER_BEWARE\027[1;34m\"\027[0;31m|______|\027[0;31m", + "\027[0;31mHacking Sites\027[1;37m:\027[0;31m https\027[1;37m:\027[1;33m//\027[0;31msites\027[1;37m.\027[0;31mgoogle\027[1;37m.\027[0;31mcom\027[1;33m/\027[0;31msite\027[1;33m/\027[0;31mlazyboxx \027[1;35m*\027[0;31m http\027[1;37m:\027[1;33m//\027[0;31mwww\027[1;37m.\027[0;31mfreebsd\027[1;37m.\027[0;31morg \027[1;33m" + } + io.write("\027[1;1H") --reset cursor + for a = 7,11 do + for b = 1,24 do + if b == position then + nissue[a] = string.gsub(nissue[a],string.char(b),"\027[1;31m@\027[0;31m") + else + nissue[a] = string.gsub(nissue[a],string.char(b),":") + end + end + end + for a = 5,21 do + if bool then + nissue[a] = string.gsub(nissue[a],"&","\027[31;1m=\027[37;1m") + nissue[a] = string.gsub(nissue[a],"+","\027[31;1m|\027[37;1m") + else + nissue[a] = string.gsub(nissue[a],"&","=") + nissue[a] = string.gsub(nissue[a],"+","|") + end + end + for i = 1,28 do + print(nissue[i]) + end + bool = not bool + end + function changepos(num) + if position == 24 and num == 1 then + position = 1 + elseif position == 1 and num == -1 then + position = 24 + else + position = position + num + end + end + position = 14 + bool = true + dirs = {1,-1} + draw() + while true do + move = math.random(1,6) + dir = dirs[math.random(1,2)] + draw() + for m = 1,move do + changepos(dir) + draw() + os.execute("sleep 0.1") --Replace it with some other way to wait one tenth of a second if you're using Windows or don't have "sleep" + end --On the subject of Windows compatibility, Ansicon is a perfect way to make the Ansi escape codes work. + end diff --git a/fun/bin/colors b/fun/bin/colors new file mode 100755 index 0000000..c8d527b --- /dev/null +++ b/fun/bin/colors @@ -0,0 +1,13 @@ +#!/bin/bash + +xdef="$HOME/.Xdefaults" + +colors=( $( sed -re '/^!/d; /^$/d; /^#/d; s/(\*color)([0-9]):/\10\2:/g;' $xdef | grep 'color[01][0-9]:' | sort | sed 's/^.*: *//g' ) ) + +echo -e "\e[1;37m + Black Red Green Yellow Blue Magenta Cyan White +──────────────────────────────────────────────────────────────────────\e[0m" +for i in {0..7}; do echo -en "\e[$((30+$i))m ${colors[i]} \e[0m"; done +echo +for i in {8..15}; do echo -en "\e[1;$((22+$i))m ${colors[i]} \e[0m"; done +echo -e "\n" diff --git a/fun/bin/colorscheme b/fun/bin/colorscheme new file mode 100755 index 0000000..f2aa179 --- /dev/null +++ b/fun/bin/colorscheme @@ -0,0 +1,27 @@ +#!/bin/bash +# +# This file echoes a bunch of color codes to the +# terminal to demonstrate what's available. Each +# line is the color code of one forground color, +# out of 17 (default + 16 escapes), followed by a +# test use of that color on all nine background +# colors (default + 8 escapes). +# + +T='niX' # The test text + +echo -e "\n 40m 41m 42m 43m\ + 44m 45m 46m 47m"; + +for FGs in ' m' ' 1m' ' 30m' '1;30m' ' 31m' '1;31m' ' 32m' \ + '1;32m' ' 33m' '1;33m' ' 34m' '1;34m' ' 35m' '1;35m' \ + ' 36m' '1;36m' ' 37m' '1;37m'; + do FG=${FGs// /} + echo -en " $FGs \033[$FG $T " + for BG in 40m 41m 42m 43m 44m 45m 46m 47m; + do echo -en "$EINS \033[$FG\033[$BG $T \033[0m"; + done + echo; +done +echo + diff --git a/fun/bin/dna b/fun/bin/dna new file mode 100755 index 0000000..a049e0b --- /dev/null +++ b/fun/bin/dna @@ -0,0 +1,46 @@ +#!/bin/bash +# +# ANSI color scheme script by pfh +# +# Initializing mod by lolilolicon from Archlinux +# + +f=3 b=4 +for j in f b; do + for i in {0..7}; do + printf -v $j$i %b "\e[${!j}${i}m" + done +done +bld=$'\e[1m' +rst=$'\e[0m' +inv=$'\e[7m' + +cat << EOF + + ${f1} █-----${bld}█ ${rst}${f2} █-----${bld}█${rst} ${f3} █-----${bld}█${rst} ${f4} █-----${bld}█${rst} ${f5} █-----${bld}█${rst} ${f6} █-----${bld}█${rst} + ${f1} █---${bld}█${rst} ${f2} █---${bld}█${rst} ${f3} █---${bld}█${rst} ${f4} █---${bld}█${rst} ${f5} █---${bld}█${rst} ${f6} █---${bld}█${rst} + ${f1} █-${bld}█${rst} ${f2} █-${bld}█${rst} ${f3} █-${bld}█${rst} ${f4} █-${bld}█${rst} ${f5} █-${bld}█${rst} ${f6} █-${bld}█${rst} + ${f1} █${rst} ${f2} █${rst} ${f3} █${rst} ${f4} █${rst} ${f5} █${rst} ${f6} █${rst} + ${f1}${bld} █-${rst}${f1}█${rst} ${f2}${bld} █_${rst}${f2}█${rst} ${f3}${bld} █-${rst}${f3}█${rst} ${f4}${bld} █-${rst}${f4}█${rst} ${f5}${bld} █-${rst}${f5}█${rst} ${f6}${bld} █-${rst}${f6}█${rst} + ${f1}${bld} █---${rst}${f1}█${rst} ${f2}${bld} █---${rst}${f2}█${rst} ${f3}${bld} █---${rst}${f3}█${rst} ${f4}${bld} █---${rst}${f4}█${rst} ${f5}${bld} █---${rst}${f5}█${rst} ${f6}${bld} █---${rst}${f6}█${rst} + ${f1}${bld} █-----${rst}${f1}█${rst} ${f2}${bld} █-----${rst}${f2}█${rst} ${f3}${bld} █-----${rst}${f3}█${rst} ${f4}${bld} █-----${rst}${f4}█${rst} ${f5}${bld} █-----${rst}${f5}█${rst} ${f6}${bld} █-----${rst}${f6}█${rst} + ${f1}${bld} █---${rst}${f1}█${rst} ${f2}${bld} █---${rst}${f2}█${rst} ${f3}${bld} █---${rst}${f3}█${rst} ${f4}${bld} █---${rst}${f4}█${rst} ${f5}${bld} █---${rst}${f5}█${rst} ${f6}${bld} █---${rst}${f6}█${rst} + ${f1}${bld} █-${rst}${f1}█${rst} ${f2}${bld} █-${rst}${f2}█${rst} ${f3}${bld} █-${rst}${f3}█${rst} ${f4}${bld} █-${rst}${f4}█${rst} ${f5}${bld} █-${rst}${f5}█${rst} ${f6}${bld} █-${rst}${f6}█${rst} + ${f1}${bld} █${rst} ${f2}${bld} █${rst} ${f3}${bld}█${rst} ${f4}${bld} █${rst} ${f5}${bld} █${rst} ${f6}${bld} █${rst} + ${f1} █-${bld}█${rst} ${f2} █-${bld}█${rst} ${f3} █-${bld}█${rst} ${f4} █-${bld}█${rst} ${f5} █-${bld}█${rst} ${f6} █-${bld}█${rst} + ${f1} █---${bld}█${rst} ${f2} █---${bld}█${rst} ${f3} █---${bld}█${rst} ${f4} █---${bld}█${rst} ${f5} █---${bld}█${rst} ${f6} █---${bld}█${rst} + ${f1} █-----${bld}█ ${rst}${f2} █-----${bld}█${rst} ${f3} █-----${bld}█${rst} ${f4} █-----${bld}█${rst} ${f5} █-----${bld}█${rst} ${f6} █-----${bld}█${rst} + ${f1} █---${bld}█${rst} ${f2} █---${bld}█${rst} ${f3} █---${bld}█${rst} ${f4} █---${bld}█${rst} ${f5} █---${bld}█${rst} ${f6} █---${bld}█${rst} + ${f1} █-${bld}█${rst} ${f2} █-${bld}█${rst} ${f3} █-${bld}█${rst} ${f4} █-${bld}█${rst} ${f5} █-${bld}█${rst} ${f6} █-${bld}█${rst} + ${f1} █${rst} ${f2}█${rst} ${f3} █${rst} ${f4} █${rst} ${f5} █${rst} ${f6} █${rst} + ${f1}${bld} █-${rst}${f1}█${rst} ${f2}${bld} █_${rst}${f2}█${rst} ${f3}${bld} █-${rst}${f3}█${rst} ${f4}${bld} █-${rst}${f4}█${rst} ${f5}${bld} █-${rst}${f5}█${rst} ${f6}${bld} █-${rst}${f6}█${rst} + ${f1}${bld} █---${rst}${f1}█${rst} ${f2}${bld} █---${rst}${f2}█${rst} ${f3}${bld} █---${rst}${f3}█${rst} ${f4}${bld} █---${rst}${f4}█${rst} ${f5}${bld} █---${rst}${f5}█${rst} ${f6}${bld} █---${rst}${f6}█${rst} + ${f1}${bld} █-----${rst}${f1}█${rst} ${f2}${bld} █-----${rst}${f2}█${rst} ${f3}${bld} █-----${rst}${f3}█${rst} ${f4}${bld} █-----${rst}${f4}█${rst} ${f5}${bld} █-----${rst}${f5}█${rst} ${f6}${bld} █-----${rst}${f6}█${rst} + ${f1}${bld} █---${rst}${f1}█${rst} ${f2}${bld} █---${rst}${f2}█${rst} ${f3}${bld} █---${rst}${f3}█${rst} ${f4}${bld} █---${rst}${f4}█${rst} ${f5}${bld} █---${rst}${f5}█${rst} ${f6}${bld} █---${rst}${f6}█${rst} + ${f1}${bld} █-${rst}${f1}█${rst} ${f2}${bld} █-${rst}${f2}█${rst} ${f3}${bld} █-${rst}${f3}█${rst} ${f4}${bld} █-${rst}${f4}█${rst} ${f5}${bld} █-${rst}${f5}█${rst} ${f6}${bld} █-${rst}${f6}█${rst} + ${f1}${bld} █${rst} ${f2}${bld} █${rst} ${f3}${bld} █${rst} ${f4}${bld} █${rst} ${f5}${bld} █${rst} ${f6}${bld} █${rst} + ${f1} █-${bld}█${rst} ${f2} █-${bld}█${rst} ${f3} █-${bld}█${rst} ${f4} █-${bld}█${rst} ${f5} █-${bld}█${rst} ${f6} █-${bld}█${rst} + ${f1} █---${bld}█${rst} ${f2} █---${bld}█${rst} ${f3} █---${bld}█${rst} ${f4} █---${bld}█${rst} ${f5} █---${bld}█${rst} ${f6} █---${bld}█${rst} + ${f1} █-----${bld}█ ${rst}${f2} █-----${bld}█${rst} ${f3} █-----${bld}█${rst} ${f4} █-----${bld}█${rst} ${f5} █-----${bld}█${rst} ${f6} █-----${bld}█${rst} + +EOF \ No newline at end of file diff --git a/fun/bin/ghosts b/fun/bin/ghosts new file mode 100755 index 0000000..2cf1727 --- /dev/null +++ b/fun/bin/ghosts @@ -0,0 +1,31 @@ +#!/bin/bash +# +# ANSI color scheme script by pfh +# +# Initializing mod by lolilolicon from Archlinux +# + +f=3 b=4 +for j in f b; do + for i in {0..7}; do + printf -v $j$i %b "\e[${!j}${i}m" + done +done +bld=$'\e[1m' +rst=$'\e[0m' +inv=$'\e[7m' +cat << EOF + +$f1 ▄▄▄ $f2 ▄▄▄ $f3 ▄▄▄ $f4 ▄▄▄ $f5 ▄▄▄ $f6 ▄▄▄ +$f1 ▀█▀██ ▄ $f2 ▀█▀██ ▄ $f3 ▀█▀██ ▄ $f4 ▀█▀██ ▄ $f5 ▀█▀██ ▄ $f6 ▀█▀██ ▄ +$f1 ▀▄██████▀ $f2 ▀▄██████▀ $f3 ▀▄██████▀ $f4 ▀▄██████▀ $f5 ▀▄██████▀ $f6 ▀▄██████▀ +$f1 ▀█████ $f2 ▀█████ $f3 ▀█████ $f4 ▀█████ $f5 ▀█████ $f6 ▀█████ +$f1 ▀▀▀▀▄ $f2 ▀▀▀▀▄ $f3 ▀▀▀▀▄ $f4 ▀▀▀▀▄ $f5 ▀▀▀▀▄ $f6 ▀▀▀▀▄ +$bld +$f1 ▄▄▄ $f2 ▄▄▄ $f3 ▄▄▄ $f4 ▄▄▄ $f5 ▄▄▄ $f6 ▄▄▄ +$f1 ▀█▀██ ▄ $f2 ▀█▀██ ▄ $f3 ▀█▀██ ▄ $f4 ▀█▀██ ▄ $f5 ▀█▀██ ▄ $f6 ▀█▀██ ▄ +$f1 ▀▄██████▀ $f2 ▀▄██████▀ $f3 ▀▄██████▀ $f4 ▀▄██████▀ $f5 ▀▄██████▀ $f6 ▀▄██████▀ +$f1 ▀█████ $f2 ▀█████ $f3 ▀█████ $f4 ▀█████ $f5 ▀█████ $f6 ▀█████ +$f1 ▀▀▀▀▄ $f2 ▀▀▀▀▄ $f3 ▀▀▀▀▄ $f4 ▀▀▀▀▄ $f5 ▀▀▀▀▄ $f6 ▀▀▀▀▄ +$rst +EOF \ No newline at end of file diff --git a/fun/bin/invaders b/fun/bin/invaders new file mode 100755 index 0000000..0ca2036 --- /dev/null +++ b/fun/bin/invaders @@ -0,0 +1,54 @@ +#!/bin/sh + +# ANSI Color -- use these variables to easily have different color +# and format output. Make sure to output the reset sequence after +# colors (f = foreground, b = background), and use the 'off' +# feature for anything you turn on. + +initializeANSI() +{ + esc="" + + blackf="${esc}[30m"; redf="${esc}[31m"; greenf="${esc}[32m" + yellowf="${esc}[33m" bluef="${esc}[34m"; purplef="${esc}[35m" + cyanf="${esc}[36m"; whitef="${esc}[37m" + + blackb="${esc}[40m"; redb="${esc}[41m"; greenb="${esc}[42m" + yellowb="${esc}[43m" blueb="${esc}[44m"; purpleb="${esc}[45m" + cyanb="${esc}[46m"; whiteb="${esc}[47m" + + boldon="${esc}[1m"; boldoff="${esc}[22m" + italicson="${esc}[3m"; italicsoff="${esc}[23m" + ulon="${esc}[4m"; uloff="${esc}[24m" + invon="${esc}[7m"; invoff="${esc}[27m" + + reset="${esc}[0m" +} + +# note in this first use that switching colors doesn't require a reset +# first - the new color overrides the old one. + +initializeANSI + +cat << EOF + + ${boldon}${redf}▀▄ ▄▀ ${reset} ${boldon}${greenf}▄▄▄████▄▄▄ ${reset} ${boldon}${yellowf} ▄██▄ ${reset} ${boldon}${bluef}▀▄ ▄▀ ${reset} ${boldon}${purplef}▄▄▄████▄▄▄ ${reset} ${boldon}${cyanf} ▄██▄ ${reset} + ${boldon}${redf}▄█▀███▀█▄ ${reset} ${boldon}${greenf}███▀▀██▀▀███${reset} ${boldon}${yellowf}▄█▀██▀█▄${reset} ${boldon}${bluef}▄█▀███▀█▄ ${reset} ${boldon}${purplef}███▀▀██▀▀███${reset} ${boldon}${cyanf}▄█▀██▀█▄${reset} + ${boldon}${redf}█▀███████▀█${reset} ${boldon}${greenf}▀▀▀██▀▀██▀▀▀${reset} ${boldon}${yellowf}▀▀█▀▀█▀▀${reset} ${boldon}${bluef}█▀███████▀█${reset} ${boldon}${purplef}▀▀▀██▀▀██▀▀▀${reset} ${boldon}${cyanf}▀▀█▀▀█▀▀${reset} + ${boldon}${redf}▀ ▀▄▄ ▄▄▀ ▀${reset} ${boldon}${greenf}▄▄▀▀ ▀▀ ▀▀▄▄${reset} ${boldon}${yellowf}▄▀▄▀▀▄▀▄${reset} ${boldon}${bluef}▀ ▀▄▄ ▄▄▀ ▀${reset} ${boldon}${purplef}▄▄▀▀ ▀▀ ▀▀▄▄${reset} ${boldon}${cyanf}▄▀▄▀▀▄▀▄${reset} + + ${redf}▀▄ ▄▀ ${reset} ${greenf}▄▄▄████▄▄▄ ${reset} ${yellowf} ▄██▄ ${reset} ${bluef}▀▄ ▄▀ ${reset} ${purplef}▄▄▄████▄▄▄ ${reset} ${cyanf} ▄██▄ ${reset} + ${redf}▄█▀███▀█▄ ${reset} ${greenf}███▀▀██▀▀███${reset} ${yellowf}▄█▀██▀█▄${reset} ${bluef}▄█▀███▀█▄ ${reset} ${purplef}███▀▀██▀▀███${reset} ${cyanf}▄█▀██▀█▄${reset} + ${redf}█▀███████▀█${reset} ${greenf}▀▀▀██▀▀██▀▀▀${reset} ${yellowf}▀▀█▀▀█▀▀${reset} ${bluef}█▀███████▀█${reset} ${purplef}▀▀▀██▀▀██▀▀▀${reset} ${cyanf}▀▀█▀▀█▀▀${reset} + ${redf}▀ ▀▄▄ ▄▄▀ ▀${reset} ${greenf}▄▄▀▀ ▀▀ ▀▀▄▄${reset} ${yellowf}▄▀▄▀▀▄▀▄${reset} ${bluef}▀ ▀▄▄ ▄▄▀ ▀${reset} ${purplef}▄▄▀▀ ▀▀ ▀▀▄▄${reset} ${cyanf}▄▀▄▀▀▄▀▄${reset} + + + ${whitef}▌${reset} + + ${whitef}▌${reset} + ${whitef}${reset} + ${whitef}▄█▄${reset} + ${whitef}▄█████████▄${reset} + ${whitef}▀▀▀▀▀▀▀▀▀▀▀${reset} + +EOF \ No newline at end of file diff --git a/fun/bin/metroid b/fun/bin/metroid new file mode 100755 index 0000000..5bb5c72 --- /dev/null +++ b/fun/bin/metroid @@ -0,0 +1,27 @@ +#!/bin/sh +cat << EOF + +   +     +     +       +         +           +           +           +           +         +             +                  +              +          +            +            +            +           +         +             +           +         +     +EOF diff --git a/fun/bin/pacman b/fun/bin/pacman new file mode 100755 index 0000000..51697cc --- /dev/null +++ b/fun/bin/pacman @@ -0,0 +1,37 @@ +#!/bin/bash +# +# ANSI color scheme script featuring PACMAN +# by pfh +# +# Initializing procedure by lolilolicon +# + +f=3 b=4 +for j in f b; do + for i in {0..7}; do + printf -v $j$i %b "\e[${!j}${i}m" + done +done +bld=$'\e[1m' +rst=$'\e[0m' +inv=$'\e[7m' + + +cat << EOF + +$rst + $f3 ▄███████▄ $f1 ▄██████▄ $f2 ▄██████▄ $f4 ▄██████▄ $f5 ▄██████▄ $f6 ▄██████▄ + $f3▄█████████▀▀ $f1▄$f7█▀█$f1██$f7█▀█$f1██▄ $f2▄█$f7███$f2██$f7███$f2█▄ $f4▄█$f7███$f4██$f7███$f4█▄ $f5▄█$f7███$f5██$f7███$f5█▄ $f6▄██$f7█▀█$f6██$f7█▀█$f6▄ + $f3███████▀ $f7▄▄ ▄▄ ▄▄ $f1█$f7▄▄█$f1██$f7▄▄█$f1███ $f2██$f7█ █$f2██$f7█ █$f2██ $f4██$f7█ █$f4██$f7█ █$f4██ $f5██$f7█ █$f5██$f7█ █$f5██ $f6███$f7█▄▄$f6██$f7█▄▄$f6█ + $f3███████▄ $f7▀▀ ▀▀ ▀▀ $f1████████████ $f2████████████ $f4████████████ $f5████████████ $f6████████████ + $f3▀█████████▄▄ $f1██▀██▀▀██▀██ $f2██▀██▀▀██▀██ $f4██▀██▀▀██▀██ $f5██▀██▀▀██▀██ $f6██▀██▀▀██▀██ + $f3 ▀███████▀ $f1▀ ▀ ▀ ▀ $f2▀ ▀ ▀ ▀ $f4▀ ▀ ▀ ▀ $f5▀ ▀ ▀ ▀ $f6▀ ▀ ▀ ▀ +$bld + $f3 ▄███████▄ $f1 ▄██████▄ $f2 ▄██████▄ $f4 ▄██████▄ $f5 ▄██████▄ $f6 ▄██████▄ + $f3▄█████████▀▀ $f1▄$f7█▀█$f1██$f7█▀█$f1██▄ $f2▄█$f7█ █$f2██$f7█ █$f2█▄ $f4▄█$f7█ █$f4██$f7█ █$f4█▄ $f5▄█$f7█ █$f5██$f7█ █$f5█▄ $f6▄██$f7█▀█$f6██$f7█▀█$f6▄ + $f3███████▀ $f7▄▄ ▄▄ ▄▄ $f1█$f7▄▄█$f1██$f7▄▄█$f1███ $f2██$f7███$f2██$f7███$f2██ $f4██$f7███$f4██$f7███$f4██ $f5██$f7███$f5██$f7███$f5██ $f6███$f7█▄▄$f6██$f7█▄▄$f6█ + $f3███████▄ $f7▀▀ ▀▀ ▀▀ $f1████████████ $f2████████████ $f4████████████ $f5████████████ $f6████████████ + $f3▀█████████▄▄ $f1██▀██▀▀██▀██ $f2██▀██▀▀██▀██ $f4██▀██▀▀██▀██ $f5██▀██▀▀██▀██ $f6██▀██▀▀██▀██ + $f3 ▀███████▀ $f1▀ ▀ ▀ ▀ $f2▀ ▀ ▀ ▀ $f4▀ ▀ ▀ ▀ $f5▀ ▀ ▀ ▀ $f6▀ ▀ ▀ ▀ +$rst +EOF diff --git a/fun/bin/pipes b/fun/bin/pipes new file mode 100755 index 0000000..43e7046 --- /dev/null +++ b/fun/bin/pipes @@ -0,0 +1,122 @@ +#!/usr/bin/env bash +# pipes.sh: Animated pipes terminal screensaver. +# +# This modified version is maintained at: +# +# https://github.com/livibetter/pipes.sh + +# options: +# s = straight [5-15] +# f = rate [20-100] +# t = style [0-5] +# r = ttl + +VERSION=0.1.0 + +M=32768 +p=1 +f=75 s=13 r=2000 t=0 +w=$(tput cols) h=$(tput lines) +# ab -> idx = a*4 + b +# 0: up, 1: right, 2: down, 3: left +# 00 means going up , then going up -> ┃ +# 12 means going right, then going down -> ┓ +sets=( + "┃┏ ┓┛━┓ ┗┃┛┗ ┏━" + "│╭ ╮╯─╮ ╰│╯╰ ╭─" + "│┌ ┐┘─┐ └│┘└ ┌─" + "║╔ ╗╝═╗ ╚║╝╚ ╔═" + "|+ ++-+ +|++ +-" + "|/ \/-\ \|/\ /-" +) +v=() +RNDSTART=0 +NOCOLOR=0 + +OPTIND=1 +while getopts "p:t:f:s:r:RChv" arg; do +case $arg in + p) ((p=(OPTARG>0)?OPTARG:p));; + t) ((OPTARG>=0 && OPTARG<${#sets[@]})) && V+=($OPTARG);; + f) ((f=(OPTARG>19 && OPTARG<101)?OPTARG:f));; + s) ((s=(OPTARG>4 && OPTARG<16 )?OPTARG:s));; + r) ((r=(OPTARG>=0)?OPTARG:r));; + R) RNDSTART=1;; + C) NOCOLOR=1;; + h) echo -e "Usage: $(basename $0) [OPTION]..." + echo -e "Animated pipes terminal screensaver.\n" + echo -e " -p [1-]\tnumber of pipes (D=1)." + echo -e " -t [0-$((${#sets[@]} - 1))]\ttype of pipes, can be used more than once (D=0)." + echo -e " -f [20-100]\tframerate (D=75)." + echo -e " -s [5-15]\tprobability of a straight fitting (D=13)." + echo -e " -r LIMIT\treset after x characters, 0 if no limit (D=2000)." + echo -e " -R \t\trandom starting point." + echo -e " -C \t\tno color." + echo -e " -h\t\thelp (this screen)." + echo -e " -v\t\tprint version number.\n" + exit 0;; + v) echo "$(basename -- "$0") $VERSION" + exit 0 + esac +done + +# set default values if not by options +((${#V[@]})) || V=(0) + +# Attempt to workaround for Bash versions < 4, such as 3.2 on Mac: +# https://gist.github.com/livibetter/4689307/#comment-892368 +# Untested--in conduction of using shebang `env bash`--should fall back to +# `sleep` +printf -v SLEEP "read -t0.0$((1000/f)) -n 1" +if $SLEEP &>/dev/null; (($? != 142)); then + printf -v SLEEP "sleep 0.0$((1000/f))" +fi + +cleanup() { + # clear up standard input + read -t 0 && cat /dev/null + + tput rmcup + tput cnorm + stty echo + exit 0 +} +trap cleanup SIGHUP SIGINT SIGTERM + +for (( i=1; i<=p; i++ )); do + c[i]=$((i%8)) n[i]=0 l[i]=0 + ((x[i]=RNDSTART==1?RANDOM*w/32768:w/2)) + ((y[i]=RNDSTART==1?RANDOM*h/32768:h/2)) + v[i]=${V[${#V[@]} * RANDOM / M]} +done + +stty -echo +tput smcup +tput reset +tput civis +# any key press exits the loop and this script +while $SLEEP; (($? > 128)) || [[ $SLEEP = sleep* ]] && (($? == 0)); do + for (( i=1; i<=p; i++ )); do + # New position: + ((${l[i]}%2)) && ((x[i]+=-${l[i]}+2,1)) || ((y[i]+=${l[i]}-1)) + + # Loop on edges (change color on loop): + ((${x[i]}>w||${x[i]}<0||${y[i]}>h||${y[i]}<0)) && ((c[i]=RANDOM%8, v[i]=V[${#V[@]}*RANDOM/M])) + ((x[i]=(x[i]+w)%w)) + ((y[i]=(y[i]+h)%h)) + + # New random direction: + ((n[i]=RANDOM%s-1)) + ((n[i]=(${n[i]}>1||${n[i]}==0)?${l[i]}:${l[i]}+${n[i]})) + ((n[i]=(${n[i]}<0)?3:${n[i]}%4)) + + # Print: + tput cup ${y[i]} ${x[i]} + [[ $NOCOLOR == 0 ]] && echo -ne "\033[1;3${c[i]}m" + echo -n "${sets[v[i]]:l[i]*4+n[i]:1}" + l[i]=${n[i]} + done + ((r>0 && t*p>=r)) && tput reset && tput civis && t=0 || ((t++)) +done + +cleanup \ No newline at end of file diff --git a/fun/bin/pipesx b/fun/bin/pipesx new file mode 100755 index 0000000..a937bf8 --- /dev/null +++ b/fun/bin/pipesx @@ -0,0 +1,193 @@ +#!/bin/bash +# Animated pipes.sh terminal screensaver at an angle. +# Copyright (C) 2013, 2014 by Yu-Jie Lin +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +# Website: https://github.com/livibetter/pipesX.sh + +VERSION=0.1.0 + +W=$(tput cols) H=$(tput lines) +# maximal random value + 1 +M=32768 + +SETS=('╱╲' '/\') +COLORS=(31 32 33 34 35 36 37) + +# default values +N=1 +T=() +I=0.05 +P=25 +R=$((W * H / 4)) + +HELP="Usage: $(basename $0) [OPTIONS] +Animated pipes.sh terminal screensaver at an angle. + +Options: + + -n [1-] number of pipes. (Default: $N) + -t [0-$((${#SETS[@]} - 1))] types of pipes, can be used more than once. (Default: $T) + -i [float] piping interval or maze generation interval. (Default: $I) + -P [0-100] probability of a turning pipe or of \\ in maze generation. (Default: $P) + -r [LIMIT] reset after x characters, 0 if no limit. (Default: $R) + -R random starting point. + -C no color. + -X maze generation. + -h this help message. + -v print version number. +" + +while getopts "n:t:i:P:r:RCXhv" arg; do + case $arg in + n) + ((N = OPTARG > 0 ? OPTARG : N)) + ;; + t) + T+=($(((OPTARG >= 0 && OPTARG < ${#SETS[@]}) ? OPTARG : T))) + ;; + i) + I=$OPTARG + ;; + P) + ((P = (OPTARG >= 0 && OPTARG <= 100) ? OPTARG : P)) + ;; + r) + ((R = OPTARG >= 0 ? OPTARG : R)) + ;; + R) + RNDSTART=1 + ;; + C) + NOCOLOR=1 + ;; + X) + MAZE=1 + ;; + h) + echo -e "$HELP" + exit 0 + ;; + v) + echo "$(basename -- "$0") $VERSION" + exit 0 + esac +done + +# set to default values if not by options +((${#T[@]})) || T=(0) + +do_exit() { + # Show cursor and echo stdin + echo -ne "\e[?25h" + stty echo + clear + exit 0 + } +trap do_exit INT TERM + +# No echo stdin and hide the cursor +stty -echo +echo -ne "\e[?25l" + +# maze geneartion +while [[ $MAZE ]] && clear; do + [[ $NOCOLOR ]] || echo -ne "\e[1;${COLORS[${#COLORS[@]} * RANDOM / M]}m" + for ((i = 0; i < W * H; i++ )); do + echo -ne ${SETS[T]:100 * RANDOM / M < P:1} + done + read -t $I -n 1 && [[ $REPLY =~ q|Q ]] && do_exit +done + +# initialze values +for ((n = 0; n < N; n++)); do + ((X[n] = RNDSTART ? (W + 2) * RANDOM / M : W / 2)) + ((Y[n] = RNDSTART ? (H + 2) * RANDOM / M : H / 2)) + D[n]=$((4 * RANDOM / M)) + C[n]=${COLORS[${#COLORS[@]} * RANDOM / M]} + t[n]=${T[${#T[@]} * RANDOM / M]} +done + +clear +while :; do + for ((n = 0; n < N; n++, CC = 0)); do + x=${X[n]} y=${Y[n]} + d=${D[n]} c=${C[n]} + + # calculate new direction `d` + # 1 0 + # \/ 4 directions 0 to 3 + # /\ + # 2 3 + # valid directions: d: dd', d' is the new direction + # d + # 0: / 00 \ 01 03 + # / / /\ + # 1: / 10 \ 11 12 + # \ \ /\ + # 2: \/ 21 / 22 / 23 + # / \ + # 3: \/ 30 \ 32 \ 33 + # / \ + ((d = (100 * RANDOM / M) < P ? ((d + 1) + 2 * (RANDOM % 2)) % 4 : d)) + ((e = (d + 1) % 4)) + + # calculate new position + # d' x' y' + # 0: x+1 y-1 + # 1: x-1 y-1 + # 2: x-1 y+1 + # 3: x+1 y+1 + ((xn = e < 2 ? x + 1 : x - 1)) + ((yn = d < 2 ? y - 1 : y + 1)) + + # adjust position and change color? + ((d < 2 && y == 0)) && ((yn--, CC=1)) + ((e > 1 && x == 0)) && ((xn--, CC=1)) + ((d > 1 && y == H)) && ((yn++, CC=1)) + ((e < 2 && x == W)) && ((xn++, CC=1)) + ((CC)) && c=${COLORS[${#COLORS[@]} * RANDOM / M]} + ((CC)) && t[n]=${T[${#T[@]} * RANDOM / M]} + + # warp pipe + ((xn = (xn + W + 1) % (W + 1))) + ((yn = (yn + H + 1) % (H + 1))) + + # calculate position in terminal + # d' xt yt + # 0: x' y'+1 + # 1: x'+1 y'+1 + # 2: x'+1 y' + # 3: x' y' + ((xt = e < 2 ? xn : xn + 1)) + ((yt = d < 2 ? yn + 1 : yn)) + + echo -ne "\e[${yt};${xt}H" + [[ $NOCOLOR ]] || echo -ne "\e[1;${c}m" + echo -n "${SETS[t[n]]:d%2:1}" + + X[n]=$xn Y[n]=$yn + D[n]=$d C[n]=$c + done + read -t $I -n 1 && [[ $REPLY =~ q|Q ]] && do_exit + ((R)) && ((r += N, r >= R)) && r=0 && clear +done + +do_exit \ No newline at end of file diff --git a/fun/bin/rain b/fun/bin/rain new file mode 100755 index 0000000..8a8d8f6 --- /dev/null +++ b/fun/bin/rain @@ -0,0 +1,100 @@ +#!/bin/bash +RAINS=("|" "│" "┃" "┆" "┇" "┊" "┋" "╽" "╿") +COLORS=("\e[37m" "\e[37;1m") +# More from 256 color mode +for i in {244..255}; do + COLORS=("${COLORS[@]}" "\e[38;5;${i}m") +done +NRAINS=${#RAINS[@]} +NCOLORS=${#COLORS[@]} +NUM_RAIN_METADATA=5 + + +sigwinch() { + TERM_WIDTH=$(tput cols) + TERM_HEIGHT=$(tput lines) + STEP_DURATION=0.025 + ((MAX_RAINS = TERM_WIDTH * TERM_HEIGHT / 4)) + ((MAX_RAIN_LENGTH = TERM_HEIGHT < 10 ? 1 : TERM_HEIGHT / 10)) + # In percentage + ((NEW_RAIN_ODD = TERM_HEIGHT > 50 ? 100 : TERM_HEIGHT * 2)) + ((NEW_RAIN_ODD = NEW_RAIN_ODD * 75 / 100)) + ((FALLING_ODD = TERM_HEIGHT > 25 ? 100 : TERM_HEIGHT * 4)) + ((FALLING_ODD = FALLING_ODD * 90 / 100)) + } + +do_exit() { + echo -ne "\e[${TERM_HEIGHT};1H\e[0K" + + # Show cursor and echo stdin + echo -ne "\e[?25h" + stty echo + exit 0 + } + +do_render() { + # Clean screen first + for ((idx = 0; idx < num_rains * NUM_RAIN_METADATA; idx += NUM_RAIN_METADATA)); do + X=${rains[idx]} + Y=${rains[idx + 1]} + LENGTH=${rains[idx + 4]} + for ((y = Y; y < Y + LENGTH; y++)); do + (( y < 1 || y > TERM_HEIGHT )) && continue + echo -ne "\e[${y};${X}H " + done + done + + for ((idx = 0; idx < num_rains * NUM_RAIN_METADATA; idx += NUM_RAIN_METADATA)); do + if ((100 * RANDOM / 32768 < FALLING_ODD)); then + # Falling + if ((++rains[idx + 1] > TERM_HEIGHT)); then + # Out of screen, bye sweet <3 + rains=("${rains[@]:0:idx}" + "${rains[@]:idx+NUM_RAIN_METADATA:num_rains*NUM_RAIN_METADATA}") + ((num_rains--)) + continue + fi + fi + X=${rains[idx]} + Y=${rains[idx + 1]} + RAIN=${rains[idx + 2]} + COLOR=${rains[idx + 3]} + LENGTH=${rains[idx + 4]} + for ((y = Y; y < Y + LENGTH; y++)); do + (( y < 1 || y > TERM_HEIGHT )) && continue + echo -ne "\e[${y};${X}H${COLOR}${RAIN}" + done + done + } + +trap do_exit TERM INT +trap sigwinch WINCH +# No echo stdin and hide the cursor +stty -echo +echo -ne "\e[?25l" + +echo -ne "\e[2J" +rains=() +sigwinch +while :; do + read -n 1 -t $STEP_DURATION ch + case "$ch" in + q|Q) + do_exit + ;; + esac + + if ((num_rains < MAX_RAINS)) && ((100 * RANDOM / 32768 < NEW_RAIN_ODD)); then + # Need new |, 1-based + RAIN="${RAINS[NRAINS * RANDOM / 32768]}" + COLOR="${COLORS[NCOLORS * RANDOM / 32768]}" + LENGTH=$((MAX_RAIN_LENGTH * RANDOM / 32768 + 1)) + X=$((TERM_WIDTH * RANDOM / 32768 + 1)) + Y=$((1 - LENGTH)) + rains=("${rains[@]}" "$X" "$Y" "$RAIN" "$COLOR" "$LENGTH") + ((num_rains++)) + fi + + # Let rain fall! + do_render +done \ No newline at end of file diff --git a/fun/bin/ryu b/fun/bin/ryu new file mode 100755 index 0000000..070f8bb --- /dev/null +++ b/fun/bin/ryu @@ -0,0 +1,188 @@ +#!/bin/bash +# s y n t a x . s a m u r a i +# p r e s e n t s +# +# ███████ ██ ██ ██ ██ +# ░██░░░░██ ░░██ ██ ░██ ░██ +# ░██ ░██ ░░████ ░██ ░██ +# ░███████ ░░██ ░██ ░██ +# ░██░░░██ ░██ ░██ ░██ +# ░██ ░░██ ░██ ░██ ░██ +# ░██ ░░██ ░██ ░░███████ +# ░░ ░░ ░░ ░░░░░░░ +# +# ansi art of ryu hayabusa from ninja gaiden +# +# ▓▓▓▓▓▓▓▓▓▓ +# ░▓ author ▓ xero +# ░▓ code ▓ http://code.xero.nu/ryu +# ░▓ mirror ▓ http://git.io/ryu +# ░▓▓▓▓▓▓▓▓▓▓ +# ░░░░░░░░░░ + +cols=`tput cols` +pad () { + count=$1 + until [[ $count -eq 1 ]]; do + let count-=1 + echo -ne "." + done; + if [[ $2 ]]; then + echo "." + fi +} +let half=($cols-100)/2 +half=${half/.*} + +if [[ -z $1 || $1 == "--grey" || $1 == "-g" || $1 == "grey" ]]; then + pad $half; echo -en "..░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░░░░░▒▒▒▒ ▒▒▒▒▒▒▒▒░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░░░▒▒▒▒ ▒▒▒▒▒░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░░▒▒▒ ▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░ ░░░░░░░░░░░░░ ░░░░░░░░░░░░ ▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░ ▒ ░░░▓▓▓▓▓▓▓▓▓▓▓▓░░ ░░░░░░░░░░░░░░░ ░ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░ ░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░ ░░░░░░░░░░░░░░░░░░░ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░ ▒ ░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░ ░░▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░ ░ ▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░ ░ ░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░ ░ ▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░ ░ ░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░ ░ ▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░▒ ░ ░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓░ ░ ."; pad $half true + pad $half; echo -en "░░░░░░░░░░ ░░░ ░ ▓▓▓▓▓▓▓▓░▓▓▓▓░░░▓░░░░░░▓▓▓▓▓ ░ ░ ▒ "; pad $half true + pad $half; echo -en "░░░░░░░░▒▒ ░░░░░ ░ ▓▓▓▓▓▓░▓▓▓▓░░▓▓▓░░░░░░▓▓ ░ ░ ░ ▒ "; pad $half true + pad $half; echo -en "░░░░░░░░▒ ░░░░░░░░░ ░ ░▓░░▓▓▓▓▓░▓▓▓░░░░░ ░ ░░ ░░ ░ ▒ "; pad $half true + pad $half; echo -en "░░░░░░░▒▒ ░░░░░░░ ░░ ▓▓▓▓▓▓▓▓▓░░ ░░ ░ ░░ ░ ▒ "; pad $half true + pad $half; echo -en "░░░░░░░▒▒ ░░░░░░░░░░ ░▓▓▓▓▓▓▓░░░ ░░░ ░ ░ ░ ▒ "; pad $half true + pad $half; echo -en "░░░░░░░ ▒ ░░░░░░ ░░░▓▓▓░▓░░░░ ░ ░ ░░ ░ ▒ "; pad $half true + pad $half; echo -en "░░░░░░░ ▒ ░░░░░░░ ▓▓ ▓ ░░ ░░░░░░░░░░░░░ ░ ░░ ▓ █▓ ░ ░ ░ ▒▒ "; pad $half true + pad $half; echo -en ".░░░░░▒ ▒ ░░░░░░░░ ▓▓██ ▓ ██ ██▓ ▓ ░░░▓░ ░ ░ ░░░░ ▓ ██ ▓█ ▓ ██▓▓ ░░░░ ░ ░ ▒ ."; pad $half true + pad $half; echo -en ".░░░░░▒ ▒▒ ░░░░░░░░░ ▓██ ▓▓ ▓ ██▓ ▓░░░░▓▓░ ░░░░░░░░ ▓ ▓██ ▓ ▓ ██▓▓ ░░░░░░░ ░ ▒ ."; pad $half true + pad $half; echo -en ".░░░░░ ▒░ ░░░░░░░▓░░ ▓███ ▓▓▓▓ ███░ ░░░░▓▓░░░░░░░░░░ ░▓██ ▓▓▓ ███▓ ░░▓▓░░ ░ ▒ ▒ ."; pad $half true + pad $half; echo -en "..░░░░ ▒░ ░░░░▓▓▓▓▓▓░ ███ ██ ░░░░░▓▓▓▓▓░░░░░░░ ███ ████ ░░▓▓▓▓░░ ░ ▒ ▒ ."; pad $half true + pad $half; echo -en "..░░░░ ▒ ░▒ ░░▓▓▓▓▓▓▓▓▓▓ ██████ ▓▓▓░░ ░░░░▓▓▓▓▓▓░░░░░░░░░▓▓▓ █████ ▓▓▓▓▓▓▓░░░░ ▒▒ ▒ ."; pad $half true + pad $half; echo -en "..░░░░ ░ ░░ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█░░░░░░░▓▓▓▓▓▓▓░░░░ ░░ ░░▓░▓▓░░░░░░░▓▓▓▓▓▓░░ ▒▒ ▒ ."; pad $half true + pad $half; echo -en "..░░░░ ░ ░░ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██ ░░░░░░░▓▓▓▓▓▓▓░░░░ ░░░░░ ░░░░░░░░░▓▓▓▓▓░░ ░ ▒▒ ▒ ."; pad $half true + pad $half; echo -en "..░░░░▒░░▒░░ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓▓░░░ ░░░░░░░░░░░░░░░░░░▓▓░░░░ ▒▒ ▒ .."; pad $half true + pad $half; echo -en "..░░░░▒░░ ░░ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓▓▓▓▓▓░░░░ ░░░░░░░░░░░░░░░░░░░░░ ▒▒ ▒ .."; pad $half true + pad $half; echo -en "..░░░░░░░ ▒░▒ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░▓▓▓░░ ░░░░░ ░░░░░░░░░░░░░░░░░░░░ ▒ ▒ .."; pad $half true + pad $half; echo -en "..░░░░░░░░░░░ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ░ ░░░░░░░░░░░░░░░ ▒ ▒ .."; pad $half true + pad $half; echo -en "...░░░░░░░░░░░▒ ▒▒ ▓▓▓▓▓▓▓▓▓▓▓▓▓ ░░░░░░░░░░▒▒ ▒▒▒▒▒ ▒ ▒ ..."; pad $half true + pad $half; echo -en "...░░░░░░░░░░ ░▒ ▒▒▒░░░ ▓▓▓▓▓▓ ░░░░░░░░░░░░░▒▒▒ ▒▒▒▒▒░░░░▒▒ ▒▒▒▒▒▒▒ ▒▒ ▒ ..."; pad $half true + pad $half; echo -en "...░░░░░░░░░░ ░░░ ▒▒▒░░░░░░ ░░░░░ ░░░░░░░░░░▒░▒ ▒▒▒▒▒▒░░░░░░▒▒▒▒▒░▒▒▒▒ ▒▒ ..."; pad $half true + pad $half; echo -en "....░░░░░░░░░░ ░░░░░ ▒▒░░░░░░░░░░░░░░ ░░░░░░░░░ ▒░▒▒ ▒▒▒▒▒░░░░▒▒▒▒▒▒░░▒▒▒ ▒▒▒ ...."; pad $half true + pad $half; echo -en "....░░░░░░░░░░░░░░░░░░ ▒░░░░░░░░░░░ ░░░░░░░░░░░░░░ ▒ ▒▒▒▒▒▒▒░▒▒▒▒▒▒░░░░▒▒▒ ▒▒ ...."; pad $half true + pad $half; echo -en "....░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒ ▒ ░░░▒▒▒▒ ▒▒▒ ...."; pad $half true + pad $half; echo -en ".....░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒░▒▒▒ ▒▒▒ ▒░░░░░░░░░░▒ ▒▒▒▒ ▒ ....."; pad $half true + pad $half; echo -en ".....░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒ ░░▒▒▒▒▒▒░░░░░░░░░░░░░▒ ░▒▒▒▒ ▒ ....."; pad $half true + pad $half; echo -en ".....░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒ ▒▒░▒▒▒▒▒▒▒░░░░░░░░░░ ░░▒▒▒▒▒ ▒ ....."; pad $half true + pad $half; echo -en ".....░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒ ░▒▒▒▒▒▒▒▒▒░░▒░░░░░░ ░░▒▒▒▒▒▒ ▒ ....."; pad $half true + pad $half; echo -en "......░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒░░▒░▒▒▒ ▒▒▒▒▒░░░░░░░░░▒▒▒▒▒ ▒ ....."; pad $half true + pad $half; echo -en "......░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒░▒▒▒▒▒ ░░░░░░░░▒▒▒▒▒▒ ▒ ....."; pad $half true + pad $half; echo -en "......░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒░░▒░▒▒▒▒▒▒ ▒░░░░░░░▒▒▒▒▒▒ ▒ ....."; pad $half true +else + if [[ $1 == "--color" || $1 == "-c" || $1 == "color" ]]; then + pad $half; echo -en "\e[0;37m..\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒\e[0;36m░░░░░░░░\e[0;34m▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒\e[0;36m░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒\e[0;36m░░░░░░░░\e[0;34m▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒ ▒▒▒▒▒▒▒▒\e[0;36m░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒\e[0;36m░░░░\e[0;34m▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░\e[0;34m▒▒▒▒ ▒▒▒▒▒\e[0;36m░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░\e[0;34m▒▒▒ ▒▒▒▒\e[0;36m░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░\e[0;34m▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░ \e[0;33m░░░░░░░░░░░░░ ░░░░░░░░░░░░ \e[0;34m▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░ \e[0;34m▒ \e[0;33m░░░▓▓▓▓▓▓▓▓▓▓▓▓░░ ░░░░░░░░░░░░░░░ ░ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░ \e[0;33m░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░ ░░░░░░░░░░░░░░░░░░░ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░ \e[0;34m▒ \e[0;33m░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░ ░░▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░ ░ \e[0;34m▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░ ░ \e[0;33m░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░ ░ \e[0;34m▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░ ░ \e[0;33m░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░ ░ \e[0;34m▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░\e[0;34m▒ \e[0;33m░ ░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓░ ░ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░░░░ \e[0;33m░░░ ░ ▓▓▓▓▓▓▓▓░▓▓▓▓░░░▓░░░░░░▓▓▓▓▓ ░ ░ \e[0;34m▒ \e[0;37m."; pad $half true + pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░░\e[0;34m▒▒ \e[0;33m░░░░░ ░ ▓▓▓▓▓▓░▓▓▓▓░░▓▓▓░░░░░░▓▓ ░ ░ ░ \e[0;34m▒ \e[0;37m."; pad $half true + pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░░\e[0;34m▒ \e[0;33m░░░░░░░░░ ░ ░▓░░▓▓▓▓▓░▓▓▓░░░░░ ░ ░░ ░░ ░ \e[0;34m▒ \e[0;37m."; pad $half true + pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░\e[0;34m▒▒ \e[0;33m░░░░░░░ ░░ ▓▓▓▓▓▓▓▓▓░░ ░░ ░ ░░ ░ \e[0;34m▒ \e[0;37m."; pad $half true + pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░\e[0;34m▒▒ \e[0;33m░░░░░░░░░░ ░▓▓▓▓▓▓▓░░░ ░░░ ░ ░ ░ \e[0;34m▒ \e[0;37m."; pad $half true + pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░ \e[0;34m▒ \e[0;33m░░░░░░ ░░░▓▓▓░▓░░░░ ░ ░ ░░ ░ \e[0;34m▒ \e[0;37m."; pad $half true + pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░ \e[0;34m▒ \e[0;33m░░░░░░░ \e[0;39m▓▓ ▓ \e[0;33m░░ ░░░░░░░░░░░░░ ░ ░░ \e[0;39m▓ █▓ \e[0;33m░ ░ ░ \e[0;34m▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░\e[0;34m▒ ▒ \e[0;33m░░░░░░░░ \e[0;39m▓▓██ \e[0;36m▓ ██ \e[0;39m██▓ \e[0;33m▓ ░░░▓░ ░ ░ ░░░░ ▓ \e[0;39m██ \e[0;36m▓█ ▓\e[0;39m ██▓▓ \e[0;33m░░░░ ░ ░ \e[0;34m▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░\e[0;34m▒ ▒▒ \e[0;33m░░░░░░░░░ \e[0;39m▓██ \e[0;36m▓▓ ▓ \e[0;39m██▓ \e[0;33m▓░░░░▓▓░ ░░░░░░░░ ▓ \e[0;39m▓██ \e[0;36m▓ ▓\e[0;39m ██▓▓ \e[0;33m░░░░░░░ ░ \e[0;34m▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░ \e[0;34m▒\e[0;36m░ \e[0;33m░░░░░░░▓░░ \e[0;39m▓███ \e[0;36m▓▓▓▓ \e[0;39m███░ \e[0;33m░░░░▓▓░░░░░░░░░░ \e[0;39m░▓██ \e[0;36m▓▓▓ \e[0;39m███▓ \e[0;33m░░▓▓░░ ░ \e[0;34m▒ ▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m..\e[0;36m░░░░ \e[0;34m▒\e[0;36m░ \e[0;33m░░░░▓▓▓▓▓▓░ \e[0;39m███ ██ \e[0;33m░░░░░▓▓▓▓▓░░░░░░░ \e[0;39m███ ████ \e[0;33m░░▓▓▓▓░░ ░ \e[0;34m▒ ▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m..\e[0;36m░░░░ \e[0;34m▒ \e[0;36m░\e[0;34m▒ \e[0;33m░░▓▓▓▓▓▓▓▓▓▓ \e[0;39m██████ \e[0;33m▓▓▓░░ ░░░░▓▓▓▓▓▓░░░░░░░░░▓▓▓ \e[0;39m█████ \e[0;33m▓▓▓▓▓▓▓░░░░ \e[0;34m▒▒ ▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m..\e[0;36m░░░░ ░ ░░ \e[0;33m░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█░░░░░░░▓▓▓▓▓▓▓░░░░ ░░ ░░▓░▓▓░░░░░░░▓▓▓▓▓▓░░ \e[0;34m▒▒ ▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m..\e[0;36m░░░░ ░ ░░ \e[0;33m░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██ ░░░░░░░▓▓▓▓▓▓▓░░░░ ░░░░░ ░░░░░░░░░▓▓▓▓▓░░ ░ \e[0;34m▒▒ ▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m..\e[0;36m░░░░\e[0;34m▒\e[0;36m░░\e[0;34m▒\e[0;36m░░ \e[0;33m░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓▓░░░ ░░░░░░░░░░░░░░░░░░▓▓░░░░ \e[0;34m▒▒ ▒ \e[0;37m..."; pad $half true + pad $half; echo -en "\e[0;37m..\e[0;36m░░░░\e[0;34m▒\e[0;36m░░ ░░ \e[0;33m░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓▓▓▓▓▓░░░░ ░░░░░░░░░░░░░░░░░░░░░ \e[0;34m▒▒ ▒ \e[0;37m..."; pad $half true + pad $half; echo -en "\e[0;37m..\e[0;36m░░░░░░░ \e[0;34m▒\e[0;36m░\e[0;34m▒ \e[0;33m░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░▓▓▓░░ ░░░░░ ░░░░░░░░░░░░░░░░░░░░ \e[0;34m▒ ▒ \e[0;37m..."; pad $half true + pad $half; echo -en "\e[0;37m..\e[0;36m░░░░░░░░░░░ \e[0;33m░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ░ ░░░░░░░░░░░░░░░ \e[0;34m▒ ▒ \e[0;37m..."; pad $half true + pad $half; echo -en "\e[0;37m...\e[0;36m░░░░░░░░░░░\e[0;34m▒ ▒▒ \e[0;33m▓▓▓▓▓▓▓▓▓▓▓▓▓ \e[0;36m░░░░░░░░░░\e[0;34m▒▒ ▒▒▒▒▒ \e[0;34m▒ ▒ \e[0;37m...."; pad $half true + pad $half; echo -en "\e[0;37m...\e[0;36m░░░░░░░░░░ ░\e[0;34m▒ ▒▒▒\e[0;36m░░░ \e[0;33m▓▓▓▓▓▓ \e[0;36m░░░░░░░░░░░░░\e[0;34m▒▒▒ ▒▒▒▒▒\e[0;36m░░░░\e[0;34m▒▒ ▒▒▒▒▒▒▒ ▒▒ ▒ \e[0;37m...."; pad $half true + pad $half; echo -en "\e[0;37m...\e[0;36m░░░░░░░░░░ ░░░ \e[0;34m▒▒▒\e[0;36m░░░░░░ ░░░░░ ░░░░░░░░░░\e[0;34m▒\e[0;36m░\e[0;34m▒ ▒▒▒▒▒▒\e[0;36m░░░░░░\e[0;34m▒▒▒▒▒\e[0;36m░\e[0;34m▒▒▒▒ ▒▒ \e[0;37m...."; pad $half true + pad $half; echo -en "\e[0;37m....\e[0;36m░░░░░░░░░░ ░░░░░ \e[0;34m▒▒\e[0;36m░░░░░░░░░░░░░░ ░░░░░░░░░ \e[0;34m▒\e[0;36m░\e[0;34m▒▒ ▒▒▒▒▒\e[0;36m░░░░\e[0;34m▒▒▒▒▒▒\e[0;36m░░\e[0;34m▒▒▒ ▒▒▒ \e[0;37m....."; pad $half true + pad $half; echo -en "\e[0;37m....\e[0;36m░░░░░░░░░░░░░░░░░░ \e[0;34m▒\e[0;36m░░░░░░░░░░░ ░░░░░░░░░░░░░░ \e[0;34m▒ ▒▒▒▒▒▒▒\e[0;36m░\e[0;34m▒▒▒▒▒▒\e[0;36m░░░░\e[0;34m▒▒▒ ▒▒ \e[0;37m....."; pad $half true + pad $half; echo -en "\e[0;37m....\e[0;36m░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ \e[0;34m▒▒▒▒▒▒▒ \e[0;34m▒ \e[0;36m░░░\e[0;34m▒▒▒▒ ▒▒▒ \e[0;37m....."; pad $half true + pad $half; echo -en "\e[0;37m.....\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ \e[0;34m▒\e[0;36m░\e[0;34m▒▒▒ ▒▒▒ ▒\e[0;36m░░░░░░░░░░\e[0;34m▒ ▒▒▒▒ ▒ \e[0;37m......"; pad $half true + pad $half; echo -en "\e[0;37m.....\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒ \e[0;36m░░\e[0;34m▒▒▒▒▒▒\e[0;36m░░░░░░░░░░░░░\e[0;34m▒ \e[0;36m░\e[0;34m▒▒▒▒ ▒ \e[0;37m......"; pad $half true + pad $half; echo -en "\e[0;37m.....\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒ ▒▒\e[0;36m░\e[0;34m▒▒▒▒▒▒▒\e[0;36m░░░░░░░░░░ ░░\e[0;34m▒▒▒▒▒ \e[0;34m▒ \e[0;37m......"; pad $half true + pad $half; echo -en "\e[0;37m.....\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒ \e[0;36m░\e[0;34m▒▒▒▒▒▒▒▒▒\e[0;36m░░\e[0;34m▒\e[0;36m░░░░░░ ░░\e[0;34m▒▒▒▒▒▒ ▒ \e[0;37m......"; pad $half true + pad $half; echo -en "\e[0;37m......\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒\e[0;36m░░\e[0;34m▒\e[0;36m░\e[0;34m▒▒▒ ▒▒▒▒▒\e[0;36m░░░░░░░░░\e[0;34m▒▒▒▒▒ ▒ \e[0;37m......"; pad $half true + pad $half; echo -en "\e[0;37m......\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒\e[0;36m░\e[0;34m▒▒▒▒▒ \e[0;36m░░░░░░░░\e[0;34m▒▒▒▒▒▒ ▒ \e[0;37m......"; pad $half true + pad $half; echo -en "\e[0;37m......\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒\e[0;36m░░\e[0;34m▒\e[0;36m░\e[0;34m▒▒▒▒▒▒ ▒\e[0;36m░░░░░░░\e[0;34m▒▒▒▒▒▒ ▒ \e[0;37m......"; pad $half true + elif [[ $1 = '--version' || $1 = '-v' || $1 == "version" ]]; then + echo "ryu version 1.0.0" + echo "xero / syntax-samurai " + echo " ▟▙" + echo "▟▒░░░░░░░▜▙▜████████████████████████████████▛" + echo "▜▒░░░░░░░▟▛▟▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▛" + echo " ▜▛" + echo "this program is free software, and distributed under the Creative Commons " + echo "Attribution-ShareAlike 3.0 Unported License (CC BY-SA 3.0)" + echo "http://creativecommons.org/licenses/by-sa/3.0/" + exit + elif [[ $1 = '--help' || $1 = '-h' || $1 == "help" ]]; then + echo "" + echo " s y n t a x . s a m u r a i" + echo " p r e s e n t s" + echo "" + echo " ███████ ██ ██ ██ ██" + echo " ░██░░░░██ ░░██ ██ ░██ ░██" + echo " ░██ ░██ ░░████ ░██ ░██" + echo " ░███████ ░░██ ░██ ░██" + echo " ░██░░░██ ░██ ░██ ░██" + echo " ░██ ░░██ ░██ ░██ ░██" + echo " ░██ ░░██ ░██ ░░███████" + echo " ░░ ░░ ░░ ░░░░░░░" + echo "" + echo " usage: ryu [option]" + echo "" + echo " ansi art of ryu hayabusa from ninja gaiden" + echo "" + echo " --help, -h : display this message" + echo " --version, -v : display version and license" + echo " --grey, -g : display the art [default]" + echo " --color, -c : display the art in color" + echo "" + echo " ▟▙" + echo "▟▒░░░░░░░▜▙▜████████████████████████████████▛" + echo "▜▒░░░░░░░▟▛▟▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▛" + echo " ▜▛" + echo "" + echo " author: xero harrison > http://xero.nu" + echo " homepage: http://git.io/ryu" + echo " crew: http://github.com/syntax-samurai" + echo "" + exit + else + echo "unknown option" + echo "call 'ryu --help' for more info" + exit + fi +fi +exit \ No newline at end of file diff --git a/fun/bin/slendy b/fun/bin/slendy new file mode 100755 index 0000000..766e06c --- /dev/null +++ b/fun/bin/slendy @@ -0,0 +1,35 @@ +#!/bin/sh + +initializeANSI() +{ + esc="" + + blackf="${esc}[30m"; redf="${esc}[31m"; greenf="${esc}[32m" + yellowf="${esc}[33m" bluef="${esc}[34m"; purplef="${esc}[35m" + cyanf="${esc}[36m"; whitef="${esc}[37m" + + blackb="${esc}[40m"; redb="${esc}[41m"; greenb="${esc}[42m" + yellowb="${esc}[43m" blueb="${esc}[44m"; purpleb="${esc}[45m" + cyanb="${esc}[46m"; whiteb="${esc}[47m" + + boldon="${esc}[1m"; boldoff="${esc}[22m" + italicson="${esc}[3m"; italicsoff="${esc}[23m" + ulon="${esc}[4m"; uloff="${esc}[24m" + invon="${esc}[7m"; invoff="${esc}[27m" + + reset="${esc}[0m" +} + +initializeANSI + +cat << EOF + + ${reset}${blackf}| | | | |${reset} + ${redf}█ █${reset} ${blackf}|${reset} ${greenf}█ █${reset} ${blackf}|${reset} ${yellowf}█ █${reset} ${blackf}|${reset} ${bluef}█ █${reset} ${blackf}|${reset} ${purplef}█ █${reset} ${blackf}|${reset} ${cyanf}█ █${reset} + ${redf}███████${reset} ${blackf}|${reset} ${greenf}███████${reset} ${blackf}|${reset} ${yellowf}███████${reset} ${blackf}|${reset} ${bluef}███████${reset} ${blackf}|${reset} ${purplef}███████${reset} ${blackf}|${reset} ${cyanf}███████${reset} + ${redf}███${boldon}${redb}██${reset}${redf}█${boldon}${redb}██${reset}${redf}███${reset} ${blackf}|${reset} ${greenf}███${boldon}${greenb}██${reset}${greenf}█${boldon}${greenb}██${reset}${greenf}███${reset} ${blackf}|${reset} ${yellowf}███${boldon}${yellowb}██${reset}${yellowf}█${boldon}${yellowb}██${reset}${yellowf}███${reset} ${blackf}|${reset} ${bluef}███${boldon}${blueb}██${reset}${bluef}█${boldon}${blueb}██${reset}${bluef}███${reset} ${blackf}|${reset} ${purplef}███${boldon}${purpleb}██${reset}${purplef}█${boldon}${purpleb}██${reset}${purplef}███${reset} ${blackf}|${reset} ${cyanf}███${boldon}${cyanb}██${reset}${cyanf}█${boldon}${cyanb}██${reset}${cyanf}███${reset} + ${redf}████${boldon}${redb}█${reset}${redf}████${reset} ${blackf}|${reset} ${greenf}████${boldon}${greenb}█${reset}${greenf}████${reset} ${blackf}|${reset} ${yellowf}████${boldon}${yellowb}█${reset}${yellowf}████${reset} ${blackf}|${reset} ${bluef}████${boldon}${blueb}█${reset}${bluef}████${reset} ${blackf}|${reset} ${purplef}████${boldon}${purpleb}█${reset}${purplef}████${reset} ${blackf}|${reset} ${cyanf}████${boldon}${cyanb}█${reset}${cyanf}████${reset} + ${redf}█ █ ${boldon}█${reset} ${redf}█ █${reset} ${blackf}|${reset} ${greenf}█ █ ${boldon}█${reset} ${greenf}█ █${reset} ${blackf}|${reset} ${yellowf}█ █ ${boldon}█${reset} ${yellowf}█ █${reset} ${blackf}|${reset} ${bluef}█ █ ${boldon}█${reset} ${bluef}█ █${reset} ${blackf}|${reset} ${purplef}█ █ ${boldon}█${reset} ${purplef}█ █${reset} ${blackf}|${reset} ${cyanf}█ █ ${boldon}█${reset} ${cyanf}█ █${reset} + ${redf}█ █${reset} ${blackf}|${reset} ${greenf}█ █${reset} ${blackf}|${reset} ${yellowf}█ █${reset} ${blackf}|${reset} ${bluef}█ █${reset} ${blackf}|${reset} ${purplef}█ █${reset} ${blackf}|${reset} ${cyanf}█ █${reset} + ${blackf}| | | | |${reset} +EOF \ No newline at end of file -- cgit v1.2.1