Created
December 1, 2017 02:08
-
-
Save AtoraSuunva/603d8e8862f9a2d1b4d7706c55528112 to your computer and use it in GitHub Desktop.
Choo chooooo!
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// You can run with with node.js (v >= 8.0.0) | |
// node <Path to this script> [Time in ms between frames] | |
// node ./hype-train.js | |
// node ./hype-train.js 75 | |
// Feel free to try editing the frames | |
const train = [String.raw` | |
o o o o o oo oo oo oo} | |
o o oo ooo oo ooo ooo ooo ooo ooo oooooo} | |
oo oo oo oo ooo ooo ooo oooo ooooo} | |
o o o oo oo oo oooo oooooo} | |
o o o ooo oo ooooo} | |
o ooo} | |
_________ \|/ ++ | |
___________ |_______|______/-\___|-|_^_/-\___||_n | |
n_____/ GET \_ |[][] |-----------------------|----|\ | |
| (_) || |_______________________|_|| ||P | |
| HYPE | -----/====+______|| _---====--||- / | |
q|===================|_|=_/o====+|=====[__]o====+|==[__]-p\ | |
_______________(_)(_)______(_)(_)_____\__/_\__/_\__/__\__/_\__/_(_)____\ | |
`,String.raw` | |
o o o o o oo oo oo ooo} | |
o o oo ooo oo ooo ooo ooo ooo ooo ooo ooo} | |
oo oo oo oo ooo ooo ooo oooo oooo o} | |
o o o oo oo oo oooo ooooooo} | |
o o o ooo oo ooo oo} | |
o o oo} | |
_________ \|/ ++ | |
___________ |_______|______/-\___|-|_^_/-\___||_n | |
n_____/ GET \_ |[][] |-----------------------|----|\ | |
| (_) || |_______________________|_|| ||P | |
| HYPE | -----/====+______|| _---====--||- / | |
q|===================|_|=_/=o===+|=====[__]=o===+|==[__]-p\ | |
_______________(_)(_)______(_)(_)_____\__/_\__/_\__/__\__/_\__/_(_)____\ | |
`,String.raw` | |
o o o o o oo oo oo oooo} | |
o o oo ooo oo ooo ooo ooo ooo ooo ooo oooo} | |
oo oo oo oo ooo ooo ooo oooo oooo oo} | |
o o o oo oo oo oooo oooo ooo} | |
o o o ooo oo ooo ooo} | |
. o ooo} | |
_________ \|/ ++ | |
___________ |_______|______/-\___|-|_^_/-\___||_n | |
n_____/ GET \_ |[][] |-----------------------|----|\ | |
| (_) || |_______________________|_|| ||P | |
| HYPE | -----/====+______|| _---====--||- / | |
q|===================|_|=_/o====+|=====[__]o====+|==[__]-p\ | |
_______________(_)(_)______(_)(_)_____\__/_\__/_\__/__\__/_\__/_(_)____\ | |
`,String.raw` | |
o o o o o oo oo oo oo oo} | |
o o o o o oo ooo ooo ooo ooo ooo ooo ooooo} | |
o oo oo oo ooo ooo ooo oooo oooo ooo} | |
o o oo oo oo oooo oooo oooo} | |
o o ooo oo ooo oooo} | |
o o oo} | |
_________ \|/ ++ | |
___________ |_______|______/-\___|-|_^_/-\___||_n | |
n_____/ GET \_ |[][] |-----------------------|----|\ | |
| (_) || |_______________________|_|| ||P | |
| HYPE | -----/====+______|| _---====--||- / | |
q|===================|_|=_/=o===+|=====[__]=o===+|==[__]-p\ | |
_______________(_)(_)______(_)(_)_____\__/_\__/_\__/__\__/_\__/_(_)____\ | |
`,String.raw` | |
o o o o o oo oo oo oo ooo} | |
o o o oo ooo ooo ooo ooo ooo ooo oooooo} | |
o o oo oo ooo ooo ooo oooo oooo oooo} | |
o o o oo oo oooo oooo ooooo} | |
o o ooo oo ooo ooooo} | |
. o ooo} | |
_________ \|/ ++ | |
___________ |_______|______/-\___|-|_^_/-\___||_n | |
n_____/ GET \_ |[][] |-----------------------|----|\ | |
| (_) || |_______________________|_|| ||P | |
| HYPE | -----/====+______|| _---====--||- / | |
q|===================|_|=_/=o===+|=====[__]=o===+|==[__]-p\ | |
_______________(_)(_)______(_)(_)_____\__/_\__/_\__/__\__/_\__/_(_)____\ | |
`,String.raw` | |
o o o o o oo oo oo oo oooo} | |
o o o oo ooo ooo ooo ooo ooo ooo ooo ooo} | |
o o oo oo ooo ooo ooo oooo oooo ooooo} | |
o o o oo oo oooo oooo oooooo} | |
o ooo oo ooo oooooo} | |
o o oo} | |
_________ \|/ ++ | |
___________ |_______|______/-\___|-|_^_/-\___||_n | |
n_____/ GET \_ |[][] |-----------------------|----|\ | |
| (_) || |_______________________|_|| ||P | |
| HYPE | -----/====+______|| _---====--||- / | |
q|===================|_|=_/o====+|=====[__]o====+|==[__]-p\ | |
_______________(_)(_)______(_)(_)_____\__/_\__/_\__/__\__/_\__/_(_)____\ | |
`,String.raw` | |
o o o o o oo oo oo oo oo oo} | |
o o oo ooo ooo ooo ooo ooo ooo ooo oooo} | |
o oo oo oo ooo ooo oooo oooo oooooo} | |
o o oo oo oooo oooo ooo ooo} | |
o o o oo ooo ooooooo} | |
. o ooo} | |
_________ \|/ ++ | |
___________ |_______|______/-\___|-|_^_/-\___||_n | |
n_____/ GET \_ |[][] |-----------------------|----|\ | |
| (_) || |_______________________|_|| ||P | |
| HYPE | -----/====+______|| _---====--||- / | |
q|===================|_|=_/=o===+|=====[__]=o===+|==[__]-p\ | |
_______________(_)(_)______(_)(_)_____\__/_\__/_\__/__\__/_\__/_(_)____\ | |
`].map(v=>v.replace(/^\n|\n$/g, '').split('\n')) | |
const longestFrame = longestIn(train) | |
let col = process.stdout.columns, | |
x = -longestFrame, | |
t = process.argv[2] || 150 | |
// clear the screen | |
console.log('\033[2J') | |
;(async () => { | |
while (x < col) { | |
for (let f of train) { | |
for (let i = 0; i < f.length; i++) { | |
process.stdout.cursorTo((x < 0) ? 0 : x, i) | |
process.stdout.write(f[i].substring((x < 0) ? -x : 0, (x > col - longestFrame) ? col - x : undefined) + ' ') | |
} | |
x++ | |
await timeout(t) | |
} | |
} | |
})() | |
const hype = String.raw` | |
_ _ ____ _____ ____ _ _ _______ _ _ ______ | |
| | | |/ __ \| __ \ / __ \| \ | | |__ __| | | | ____| | |
| |__| | | | | |__) | | | | | \| | | | | |__| | |__ | |
| __ | | | | ___/ | | | | . | | | | __ | __| | |
| | | | |__| | | | |__| | |\ | | | | | | | |____ | |
|_| |_|\____/|_| \____/|_| \_| |_| |_| |_|______| | |
_ _ _ _ _____ ______ _______ _____ _____ _ _ | |
| | | \ \ / / __ \| ____| |__ __| __ \ /\ |_ _| \ | | | |
| |__| |\ \_/ /| |__) | |__ | | | |__) | / \ | | | \| | | |
| __ | \ / | ___/| __| | | | _ / / /\ \ | | | . | | |
| | | | | | | | | |____ | | | | \ \ / ____ \ _| |_| |\ | | |
|_| |_| |_| |_| |______| |_| |_| \_\/_/ \_\_____|_| \_|`.split('\n').map(v => ' '.repeat(Math.floor(col / 2) - v.length/2) + v).join('\n') | |
console.log(hype) | |
/////////// | |
// stuff // | |
/////////// | |
function longestIn(a) { | |
let b = 0 | |
for (c of a) { | |
for (d of c) { | |
if (d.length > b) b = d.length | |
} | |
} | |
return b | |
} | |
function timeout(ms) {return new Promise(a => setTimeout(a, ms))} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment