top | item 9607651

Tetris Written in Go

51 points| jjinux | 10 years ago |jjinux.com | reply

19 comments

order
[+] drivers99|10 years ago|reply
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

[+] airplane|10 years ago|reply
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.
[+] simonlc|10 years ago|reply
I did the same thing, implementing all the guideline rules into my JS version of tetris here: http://simon.lc/tetr.js/

However over the years, even after the guideline was instituted, there have been many different types of randomizers used. Of course, the original having none, and many a long the way having bugs.

[+] jjinux|10 years ago|reply
Thanks for the tip ;)
[+] jjinux|10 years ago|reply
Oh, and pull requests are welcome ;)
[+] _lce0|10 years ago|reply
well, that actually is a great piece of information to be aware of, the whole in-game strategy changes!
[+] laumars|10 years ago|reply
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|10 years ago|reply
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.

[+] jjinux|10 years ago|reply
My uses were pretty simple, but I enjoyed it.
[+] supercoder|10 years ago|reply
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|10 years ago|reply
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."

[+] simonlc|10 years ago|reply
They typically wont bother with small projects like this afaik. I've had a semi popular one going for a while with no contact from The Tetris Company.
[+] srameshc|10 years ago|reply
jjinux had been a strong proponent of Python, but happy to see some Go love lately.