
2048 in the terminal - hk__2
https://github.com/bfontaine/term2048
======
bane
You know, I wonder if we're about to see another tetris phenomenon. One of the
miracles of tetris is that the game mechanics scaled from a few dots on an 80s
era LCD keychain game to HDTV and surround sound.

Some kind of generalized 2048 game, with different or harder goals every
"level" and some tweaked mechanics and we could see another one.

~~~
lifthrasiir
Yeah, it is as simple as changing every single mention of 2048 in the source
code to 4096. My friend actually tried that and it was... a lot harder than
2048. (The 2048-AI fails to make 4096 for most games, for example.)

[https://github.com/youknowone/4096](https://github.com/youknowone/4096)

~~~
staz
You probably need a way to correlate the board size with the goal number

~~~
joering2
whats wrong with the current size?

[http://i.imgur.com/IyzOmjn.png](http://i.imgur.com/IyzOmjn.png)

------
jimhart3000
This is awesome and yet another way to kill my productivity!

I noticed something that I think is incorrect behavior based on my playing of
the original. If I have a row that has 2 - 2 - 4, when I press right, it goes
straight to 8, rather than the behavior that I think is supposed to happen -
press right once and get 4 - 4, press it again and get 8. A minor difference
but does actually change the gameplay a bit.

~~~
hk__2
Hi, author here, thank you for your feedback, but I can’t reproduce the bug.
See
[https://github.com/bfontaine/term2048/commit/5ab27e181431c26...](https://github.com/bfontaine/term2048/commit/5ab27e181431c26c1b04b4c46998c12ad64b485d)

Edit: I’m on this issue, currently trying to write a test to reproduce.

Edit 2: fixed!

~~~
ksmiley
What about the other direction? [4,2,2,0] while shifting left or up?

------
brilee
I wrote a similar game called Fibs, where the game mechanism is that adjacent
Fibonacci numbers are combined to make the next Fibonacci number. It's also
command-line based.

[https://github.com/brilee/games/blob/master/fibs.py](https://github.com/brilee/games/blob/master/fibs.py)

A short writeup is here:
[http://moderndescartes.com/essays/fibs](http://moderndescartes.com/essays/fibs)

------
antr
I'm genuinely addicted to this. I'd be very happy to pay $5 for a native 2048
iOS game – this will substitute my Flipboard use during my commute.

~~~
RBerenguel
There's Threes
([https://itunes.apple.com/us/app/threes!/id779157948?mt=8](https://itunes.apple.com/us/app/threes!/id779157948?mt=8))
which is similar but not the same (since it requires a 1 and a 2 to generate a
3, which makes it slightly more troublesome. I prefer powers of 2, too, they
appeal my inner nerd.

~~~
ColinDabritz
Some important differences: * the first step is explicitly 1 + 2 = 3 (which
you mentioned), 1+1 and 2+2 do NOT add * You move all tiles a single space at
once, rather than 'to the edge'. Note tiles only merge when they push
together, so an edge or other cards restricting their movement. This is a side
effect design decision of single space moving. I do not know if two pairs will
merge, e.g. will 3 + 3 + 6 + 6 leave 6 + 12? I suspect it will, but I haven't
seen it. * Numbers 1 and 2 both spawn, and there is a 'next number' indicator,
although placement still appears random. (A 3 spawned in the tutorial, but I
think that was a special case)

Overall this leads to a very different feel to the game.

Anything else I missed?

~~~
sp332
3 + 3 + 6 + 6 can't make 6 + 12 because the tiles can only move one step. The
ones near the edge will merge first (depending with way you push it).

------
ErikRogneby
I hadn't used pip before. I wonder how many different package managers I have
installed now? Figuring out how to install pip on OSX I discovered
"easy_install" which I hadn't used before.

sudo easy_install pip

pip install term2048

~~~
emidln
from twitter (@gardaud):

    
    
        “What’s pip?”
        “A python package manager”
        “How do I install it?”
        “easy_install pip”
        “What’s easy_install?”
        “A python package manager”

~~~
gcr
Haha, no kidding.

It's not so bad with the right tools. In particular, "virtualenv" lets you
make "environments" for python packages so you can install these things
without needing root access:

\- Use your distro package manager to install virtualenv

\- Make a new virtual environment with: virtualenv /tmp/vv

\- "Enter" the environment: source /tmp/vv/bin/activate

\- You now have "pip" so you can say pip install term2048

\- Play

\- rm -r /tmp/vv and log out; everything's all cleaned up now.

------
girvo
Doomed. I just got a new job, and I'm definitely going to get fired now... ;)

------
andyzweb
going to make a PR that has support for vi-like navigation, (hjkl)

~~~
koralatov
That would be amazing. Thank you.

------
BoppreH
I made a terminal clone too, but to play with bots:
[https://github.com/boppreh/2048bot](https://github.com/boppreh/2048bot)

I didn't get around to write a good AI, but you can uncomment two lines in the
main to play yourself. The interactive play is not colorful or as polished,
but works the same way.

If you want to write a bot yourself, just call "play_bot(logic)", where
"logic" is a function that takes a board state and returns a play. "play_bot"
returns the highest piece created.

------
moron4hire
Remember when we were 12 years old and this was how we wrote all of our games?
Hell, not just games, anything.

~~~
Jtsummers
Not at 12 for me, I didn't start programming my own games until high school.
But this would actually be fun to hack out on my old TI-85 or HP-48G (too bad
both got water damaged).

------
kostja_gee
An android app would be nice, too.

~~~
k3oni
See "Even" in the Play Store.

------
gren
Awesome, we have a multiplayer version, a bot version, a terminal version,
what's next? Who's gonna make the flappy bird version?

~~~
rbonvall
Pure-CSS-zero-lines-of-javascript version.

2048-as-a-monad version.

2048-as-a-jquery-plugin version.

~~~
hablahaha
I can't imagine how a pure CSS version would work...

------
DrinkWater
oh yeah, now i don't even have to leave my terminal! Thanks a lot!

------
sdfjkl
Now make a web version of the terminal version.

~~~
Sheepshow
Write it in C then compile it to JS with emscripten

------
egeozcan
This makes it extremely easy to get lost while playing the game. Think about
your estimations and consider yourself warned.

------
yaur
Am I the only one watching
[https://blockchain.info/address/1Ec6onfsQmoP9kkL3zkpB6c5sA4P...](https://blockchain.info/address/1Ec6onfsQmoP9kkL3zkpB6c5sA4PVcXU2i)?
Seems that the original author has made ~200USD off of this so far.

------
joshlegs
I read this as "What the terminal will look like in the year 2048."

I was clearly wrong in my interpretation

------
Pitarou

        $ tail ~/.bash_history
        open http://news.ycombinator.com
        pip install term2048
        term2048
        term2048
        term2048
        term2048
        term2048
        term2048
        term2048
        pip uninstall term2048
    

Do you see what you've done?

------
delinka
A little buggy: It'll collapse 8,4,4 into 16 in a single move when the
original does not. Not always, and I have no idea how to reproduce it. Maybe I
should just chalk it up to accidental double-bounce on the keyboard?

~~~
hk__2
This has been fixed in v0.1.6, thanks for reporting it!

------
tnishimura
My implementation I did for a programming challenge within my organization:

[https://github.com/tnishimura/challenge2048](https://github.com/tnishimura/challenge2048)

------
minikomi
Reminds me a lot of
[https://www.youtube.com/watch?v=GXq_BAb3JEI](https://www.youtube.com/watch?v=GXq_BAb3JEI)
Koro koro puzzle

------
hk__2
Thank you everyone for the feedback, I fixed the collapse bug that was
reported by a few users in v0.1.6, update with `pip install -U term2048`.

------
shawabawa3
This game has a 50/50 chance of spawning a 4 or a 2. I believe the original is
only 10% chance of spawning a 4, was this intentional?

~~~
hk__2
I didn’t know about the 10% rule, I should check the original source code and
use the same probability.

~~~
shawabawa3
I submitted a pull request

The original source is here:
[https://github.com/gabrielecirulli/2048/blob/master/js/game_...](https://github.com/gabrielecirulli/2048/blob/master/js/game_manager.js)

(line 62)

------
rabino
Damn you, you beat me to it.

I've been playing with GoLang lately and started to implement 2048 this week
as a learning exercise. Nicely done!

~~~
Jtsummers
Put it on a server, let people telnet to port 2048 (anything else using this
yet?) and play the game. Store high scores and display standings.

EDIT: Still in the window! 2048 is not used by many projects. So essentially
zero risk of a port conflict hosting this on a server with other services
running.

------
hackmiester
This seems to need a "pip install argparse" but that's not included as a
dependency. Pretty cool though!

------
codegeek
final nail in the coffin :). a highly addictive game _in the terminal_. Damn
you hackers!!

Love text based games and bonus for being in the terminal. Btw, I know a few
p.eople mentioned that it collapses 2-2-4 kind of combinations in one go and I
noticed that too. But, you know what, I personally like this variation.

~~~
mikecarlton
Stay away from Rogue then -- I spent way too much time in grad school on that
one!

------
andyhmltn
So now I can play this insanely addicting game while looking like I'm working.
This is not good!

------
mihok
Love it! Is there a way to change the colors? 4 is Incredibly hard to read in
my terminal

~~~
hk__2
There’s no way to have custom colors for now, but I can change the default
colors. I’m on the collapse bug that was reported by a few people right now,
will check back on your issue just after.

Edit: I’m on it.

Edit 2: I added a `--mode` option in the last version (0.1.7) to change the
default colors mode. Use 'dark' on a dark background and 'light' on a light
one. For now it only replaces dark blue with white on dark mode and yellow
with black on light mode.

TL;DR: update with `pip install -U term2048` and use `term2048 --mode dark`.

~~~
mzs
Thanks, it would be sweet if you could use the VI keys or WASD instead of
arrows (would work on Windows then)and if you could use A-K instead of the
decimal numbers. In that way the aspect ratio could be more square, which I
think would improve the ease of noticing chains.

~~~
JosephRedfern
I've just submitted an implementation of the a-k mode as a pull request:
[https://github.com/bfontaine/term2048/pull/14](https://github.com/bfontaine/term2048/pull/14)

------
edwardchiapet
Great! At least now I can play in the terminal covertly and no one will even
notice!

------
guidopallemans
We need a javascript implementation!

oh wait...

------
tlongren
Well that's it. Productivity today has been shit and I blame this.

------
rathboma
FYI - doesn't seem to install with python 3.3

~~~
hk__2
The last version (0.2.1) should support Python 3.2 and 3.3.

------
instakill
HN crack-cocaine.

------
michelutti
please, stop it :( how can I work this way?

------
2810
omg.. now i can't even work in office

------
patrickg
I hate you ;-)))

