Skip to content

Instantly share code, notes, and snippets.

@AtoraSuunva
Created December 1, 2017 02:08
Show Gist options
  • Save AtoraSuunva/603d8e8862f9a2d1b4d7706c55528112 to your computer and use it in GitHub Desktop.
Save AtoraSuunva/603d8e8862f9a2d1b4d7706c55528112 to your computer and use it in GitHub Desktop.
Choo chooooo!
// 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