

Tetris Written in Go - jjinux
http://www.jjinux.com/2015/05/tetris-written-in-go.html

======
drivers99
The first thing I did when I learned python was to write a tetris game in it
(using PyGame). So the first thing I did was look at the random piece
generator in the go version. It just picks one at random:

    
    
        g.piece = 1 + rand.Int()%numTypes
    

However, the official tetris guidelines say that the 7 types of pieces should
all be selected in a random order, as if taken from a bag. After all 7 pieces
are picked, you can put all of the pieces back in the bag and select again in
a random order. [1]

Of course, you don't HAVE to follow the official guidelines. I just thought it
would be fun to compare.

[1]
[http://tetris.wikia.com/wiki/Random_Generator](http://tetris.wikia.com/wiki/Random_Generator)

~~~
airplane
Never knew this, but now that I think about it, I don't think I ever ran into
a situation where I got 3 of the same pieces in a row in any Tetris game.
Makes sense.

------
laumars
What were your thoughts on termbox?

I've used it for a couple of projects now but I can't really get on with it.
It feels so easy and straightforward at first but I often keep hitting silly
annoyances that slow down debugging time or even causes fatal exceptions of
its own (eg resizing a window).

So I'd be interested to hear another developers experiences with termbox

~~~
beefsack
I've built a few things on top of it now: a "rich" text editor, a layout
system, and a client to my plain-text board gaming service. The two main
things that have caused me trouble are:

* Inability to customise colours on systems that support it. * Weak support for wide characters as termbox works directly on "cells", but can work around it with application logic. * It's quite easy to cause fatals, especially when working directly on the underlying buffer. Need to be quite careful.

The fact that it's native and cross platform is fantastic though, I'm a little
worried that early design decisions will make it hard to rectify some of the
warts though without large backwards-incompatible changes.

~~~
laumars
The fatals were my main gripe as well. And to make matters worse, the crash
report would be unreadable because it would dump in ncurses mode (which would
also break my command prompt too)

------
cespare
This was also one of my very first projects when I started writing Go a few
years ago.

[https://github.com/cespare/go-tetris](https://github.com/cespare/go-tetris)

~~~
jjinux
Seriously? That's funny.

------
supercoder
Be careful calling it Tetris, the company that holds the rights I think pretty
consistently goes after people who violate it's trademark and copyright.

~~~
doodpants
There's a Tetris clone for Macintosh called Quinn, and at one point its
website read:

"Quinn is an implementation of a popular falling-blocks game which, according
to the Tetris Company, must not be named here."

------
rockshassa
I've never tried to write a game before, but that seemed to me to be a
surprisingly small amount of code.

~~~
jjinux
Thanks. There are a bunch of other easy games to port:
[http://www.javascripter.net/games/index.htm](http://www.javascripter.net/games/index.htm)

------
srameshc
jjinux had been a strong proponent of Python, but happy to see some Go love
lately.

~~~
jjinux
I'm a polyglot ;)

