It seems that this is a habit - once every six months, I post some of my own craftwork on the opensource.
This time I present a clone of Tetris to the public and the pleasure of the public. Hexagonal
I think everyone knows the idea of the game. I tried to give it a delicious implementation. It:
- Predictable behavior of figures. Something like physics. For example, if you want to rotate the shape, and the wall is in its way, the shape will move. In reasonable, of course, limits.
- Adjustable field size.
- Just tried to give this case a nice look.
This case is written on Qt, without any dependencies on anything else. Should be collected everywhere. I tested on Windows, Linux and FreeBSD; Qt from 4.4.1 (older was not at hand) to the new 4.7.0.
I’ve got it all done, traditionally, on googlecode. There is also a static build under Windows
, which does not require anything to work (except Windows, -)).
The build and installation procedure on any UNIX-like systems is standard.
You need Qt with the developer part. And then you take the source from the project site and collect:
On some systems, qmake may be called qmake-qt4, and instead of make, you will need to write gmake, nmake, mingw32-make, or something else like this.
The last step (install) is not required, the application can be run and not installing. You can delete (make uninstall).
Actually, those who just want to try this thing can begin :-) Further information for those who want to improve something.
What do I expect from the community
(i) Preparing packages for different distributions.
All my opensource experience shows that I am not able to support packages for different distributions alone. Also, I know for sure that very initiative people from ArchLinux and AltLinux are hanging out at Habré, for sure there are representatives of other distributions. I posted a bag on the AUR
, but if someone takes up his support, I will pass it on with gratitude.
If someone is engaged in the assembly of packages - three requests.
- Email me if you want me to keep you updated. In addition, it would be useful to put links to packages on the project website.
- Unsubscribe here. Because now people will start asking for deb, rpm ...
- Report all difficulties.
Well, thank you so much! :-)
(ii) Suggestions for design, skins, features, misprints ...
Accepted and welcome! Simple things will be done quickly, complex - taken into account for the future. Write in the comments and / or mail.
If someone owns a certain language and wants to make localization - I am always in favor. Write! If you do not understand anything in Qt and its localization tools - it does not matter; write; localization is easy. None of the project participants will not be forgotten!
What I do not advise doing
I do not promise that I will gladly accept your code. If you find and fix minor bugs - please. But if you want to edit everything in general, then I may not agree to accept your edits to the project. The desire to redesign may arise for several reasons:
- crushing into classes may seem too small to someone,
- some nodes may not seem optimal enough (for example, drawing a glass),
- Some elements may not seem to be sufficiently academic (for example, the class of management of everything and everyone).
I have such counter-arguments.Minor fragmentation
arose because I was engaged in this project in fragments for 15 minutes. Maintain in this mode large chunks of code is simply impossible. In the near future, I hardly change the style of work. Therefore, the fine design is comfortable and cute for me.Not optimal.
Sometimes (IMHO) it is more useful to keep it simple, even at the cost of a little non-optimality.Not academic.
I understand that the state machine asks the State pattern and centralizes the emission of signals somewhere, Mementor asks for something, not constant iterators and direct access to the properties can cause a protest (there are only two for the whole program, but they are still there, I confess) ... I agree that the code does not look everywhere like textbooks require. But I would not want to hurry with the implementation of strict schemes. First, let ordinary users express their Wishlist; Let it be clear in which direction all this should be developed, and then you can take up orthodox coding.
Are you still reading?
I have nothing more to say, but perhaps you will be able to satisfy your thirst for reading and Tetris through the following links:
Successes to all! Thanks for feedback and take care of your brain :-)upd: cypok
found a bug that creeps out under Mac OS X. If you are a user of this OS, then you need to follow its recommendations
The problem can be corrected in another way: replacing ": /icon.xmp" with ": /about_icon.xmp".upd2: Mezomish made PPA for Ubunt
. Thanks to him!upd3:
12:20:23 MSD - 1000 downloads from the Windows build only and from the project site only! Habr - power! :-)