ascii-invaders
ascii-invaders copied to clipboard
If you want, here's unicode braille invaders.
They're not exact copies of original, but they could fit. Depending on the font, the gap can be pretty big between lines.
⢀⡴⣾⢿⡿⣷⢦⡀⢀⡴⣿⢦⡀⢀⡵⣤⡴⣅⠀⣴⡶⢿⡿⢶⣦⠀⢀⣀⣾⣷⣀⡀⠀
⠉⠻⠋⠙⠋⠙⠟⠉⢈⢝⠭⡫⡁⠏⢟⡛⣛⠏⠇⠩⣟⠫⠝⣻⠍⠀⣿⣿⣿⣿⣿⣿⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⢀⡴⣾⢿⡿⣷⢦⡀⢀⡴⣿⢦⡀⣆⡵⣤⡴⣅⡆⣴⡶⢿⡿⢶⣦⠀⢀⣀⣾⣷⣀⡀⠀
⠉⠻⠋⠙⠋⠙⠟⠉⠨⡋⠛⢙⠅⢘⠟⠛⠛⢟⠀⣉⠽⠫⠝⠯⣉⠀⣿⣿⣿⣿⣿⣿⠀
The ugly bit is utf8 in c.
You could also do sub-character (1-pixel) horizontal shifts:
⢀⡴⣾⢿⡿⣷⢦⡀⢀⡴⣿⢦⡀⢀⡵⣤⣤⢮⡀⢠⣶⠾⣿⠷⣶⡄⠀⣀⣰⣿⣆⣀⠀
⠉⠻⠋⠙⠋⠙⠟⠉⢈⢝⠭⡫⡁⠏⢟⡛⢛⡻⠹⠈⢽⡛⠭⢛⡯⠁⢸⣿⣿⣿⣿⣿⡇
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⣠⢶⡿⣿⢿⡶⣄⠀⣠⢾⡷⣄⠀⣨⢦⣤⡴⣅⠀⣴⡶⢿⡿⢶⣦⠀⢀⣀⣾⣷⣀⡀
⠈⠙⠟⠉⠛⠉⠻⠋⠁⡩⡫⢝⢍⠸⠹⣛⠛⣛⠏⠇⠩⣟⠫⠝⣻⠍⠀⣿⣿⣿⣿⣿⣿
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⢀⡴⣾⢿⡿⣷⢦⡀⢀⡴⣿⢦⡀⣆⡵⣤⣤⢮⣰⢠⣶⠾⣿⠷⣶⡄⠀⣀⣰⣿⣆⣀⠀
⠉⠻⠋⠙⠋⠙⠟⠉⠨⡋⠛⢙⠅⢘⠟⠛⠛⠻⡃⢈⡩⠟⠭⠻⢍⡁⢸⣿⣿⣿⣿⣿⡇
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⣠⢶⡿⣿⢿⡶⣄⠀⣠⢾⡷⣄⢰⣨⢦⣤⡴⣅⡆⣴⡶⢿⡿⢶⣦⠀⢀⣀⣾⣷⣀⡀
⠈⠙⠟⠉⠛⠉⠻⠋⠁⢝⠙⠋⡫⠀⡻⠛⠛⠛⢟⠀⣉⠽⠫⠝⠯⣉⠀⣿⣿⣿⣿⣿⣿
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
Thanks! They look great. I pushed an experimental change to use them, run with new non-advertised "--unicode" option. Seems like some more work is needed to space them out better, and maybe also do explosions and shelters with Braille.
That's awesome. utf-8 in C can be a bit difficult. the unicode ones aren't displaying for me (tried mlterm, terminology, uxterm) The braille invaders display as a lot of "M-bM- for me
title screen :
__ _ ___ ___(_|_) (_)_ ____ ____ _ __| | ___ _ __ ___
/ _` / __|/ __| | | | | '_ \ \ / / _` |/ _` |/ _ \ '__/ __|
| (_| \__ \ (__| | | | | | | \ V / (_| | (_| | __/ | \__ \
\__,_|___/\___|_|_| |_|_| |_|\_/ \__,_|\__,_|\___|_| |___/
M-bM-"~@= ? pointsbM-#M->M-bM-"M-?M-bM-!M-?M-bM-#M-7M-bM-"M-&M-b
M-!~@ M-bM- ~IM-bM- M-;M-bM- ~KM-bM- ~YM-bM- ~KM-bM- ~YM-bM- ~_M-bM- ~I
M-bM-"~@= 30 pointsbM-#M-?M-bM-"M-&M-bM-!~@
M-bM-"~HM-bM-"~]M-bM- M--M-bM-!M-+M-bM-!~A
M-bM-"~@= 20 pointsbM-#M-$M-bM-!M-4M-bM-#~E
M-bM- ~OM-bM-"~_M-bM-!~[M-bM-#~[M-bM- ~OM-bM- ~G
M-bM-#M-= 10 points-bM-"M-?M-bM-!M-?M-bM-"M-6M-bM-#M-&
M-bM- M-)M-bM-#~_M-bM- M-+M-bM- ~]M-bM-#M-;M-bM- ~M
Sometimes this is caused by not setting LC envvars correctly: I had LC_MESSAGES=en_US.UTF-8 And tried adding: LC=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
I'm not familiar with ncurses and mvprintw. Maybe it's a problem with 'char' on my system. (devuan linux, aarch64). I'm sorry i can't be more helpful.
On my FreeBSD system it looks like this:
`
_ _ _ _
__ _ ___ ___(_|_) (_)_ ____ ____ _ __| | ___ _ __ ___
/ _` / __|/ __| | | | | '_ \ \ / / _` |/ _` |/ _ \ '__/ __|
| (_| \__ \ (__| | | | | | | \ V / (_| | (_| | __/ | \__ \
\__,_|___/\___|_|_| |_|_| |_|\_/ \__,_|\__,_|\___|_| |___/
⢀⡴⣾⢿⡿⣷⢦⡀= ? points
⠉⠻⠋⠙⠋⠙⠟⠉
⢀⡴⣿⢦⡀ = 30 points
⢈⢝⠭⡫⡁
⢀⡵⣤⡴⣅ = 20 points
⠏⢟⡛⣛⠏⠇
⣴⡶⢿⡿⢶⣦ = 10 points
⠩⣟⠫⠝⣻⠍
https://github.com/macdice/ascii-invaders
`
Some time soon I'll test on Linux and macOS and see if I can figure out what's wrong there...
Oh yeah I see the same corruption on Gnome Terminal on a Debian system. Funnily enough if I log into FreeBSD remotely through the Gnome Terminal on the same Debian system, it shows correctly. In both environments my LANG and LC_CTYPE are set to en_NZ.UTF-8. Hrmph.
program should link against the ncursesw library (-lncursesw) to use UTF-8, rather than just ncurses (-lncurses
Oh yeah, that fixes it! Now, I think we need to sort out the bombs (they kind of zigzag on the real game), the shields, the explosions, and the spacing...
✓Agree: For unicode mode, seperate invader columns horizontally by an additional character
- Feature: add a centered display mode where invader quantity equals original (11x5 invaders) regardless of term size
I think the spinning diagonal ascii bombs you have look pretty good, but there are some options with unicode Problem is most terminal fonts don't cover the exotic glyphs.
Player/enemy shot:
┃ block drawing character (pretty common)
Enemy shots:
╋ block drawing character (pretty common)
✝ U271D latin cross
⭍ U+2B4D Downwards Triangle-Headed Zigzag Arrow (rare)
⦚ U+299A Vertical Zigzag Line (rare)
Looking at the original in MAME, it looks like shots cycle between these shapes:
⢹⠁⢺⠂⢼⠄⣸⡀⢐⠅⠨⡂⠀
Alien explosions are not animated in original - odd number of columns:
⠐⢄⠑⠐⢁⠔
⢉⠔⢀⢀⠐⢌⠁
Even number of columns (matching current alien schema)
⠢⡑⠀⢊⠔⠀
⠈⡡⢂⠀⡐⢌⠁
If later alien explosion can get another frame, this could be the 'kernel' of it
⢄⣀⡠
⠝⠛⠫
Original game shields are almost as wide as 1.5 columns of aliens. Four of them, with a full shield's space between them:
⣠⣾⣿⣿⣿⣿⣿⣿⣷⣄⠀⣠⣾⣿⣿⣿⣿⣿⣷⣄⠀⣠⣾⣿⣿⣿⣿⣷⣄⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⣿⠀
⣿⣿⠟⠉⠉⠉⠉⠻⣿⣿⠀⣿⡿⠋⠉⠉⠉⠙⢿⣿⠀⣿⡿⠋⠉⠉⠙⢿⣿
Shield damage in the original is interesting. Would take some programming to emulate the pixel-based damage.
Turns out there's only three alien bomb shapes. This is a dive into the original: https://computerarcheology.com/Arcade/SpaceInvaders/