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.
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.
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.
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
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.
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.
[+] [-] drivers99|10 years ago|reply
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
[+] [-] simonlc|10 years ago|reply
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
[+] [-] jjinux|10 years ago|reply
[+] [-] _lce0|10 years ago|reply
[+] [-] laumars|10 years ago|reply
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
* 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
[+] [-] cespare|10 years ago|reply
https://github.com/cespare/go-tetris
[+] [-] jjinux|10 years ago|reply
[+] [-] supercoder|10 years ago|reply
[+] [-] doodpants|10 years ago|reply
"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
[+] [-] rockshassa|10 years ago|reply
[+] [-] jjinux|10 years ago|reply
[+] [-] srameshc|10 years ago|reply
[+] [-] jjinux|10 years ago|reply