A suite of educational activities for 3 - 10 years old kids build with Python & Pygame.
The application started as some sort of a learning sandbox in my early days of stepping into python programming world - but later was improved and transformed into an open-source educational application. While it is not a programming piece of art (since when I started I was a complete python beginner), children under 10 might find it useful - and hopefully won't complain about badly written code :)
The application includes some basic activities in maths, ABC, reading, memory, time, colors, etc. More activities are being developed but graphic design is not really a skill I have which quite significantly limits the possibilities. Most of the nice graphics used in the game were created by talented people who contributed their works to openclipart.org, art4apps.org and other sites - thanks to all of them.
The application obviously runs from source but has also been "compiled" to a range of operating systems, such as Windows, MacOS and many Linux distributions.
Requirements (to run from source):
- python 2.7+
- espeak (optional but very useful)
The app supports multiple languages - currently available ones are: Catalan, English, Finnish, French, German, Greek, Hebrew, Italian, Lakota, Polish, Portuguese, Russian, Serbian, Spanish and Ukrainian (some of the newest changes may not be fully translated).
Thanks to all who submitted and maintain the translations. Please get in touch if you would like to help to translate this application to any other language or to improve (make more fun) any of the current translations. The English version would definitely benefit from some beautification by a native speaker, anyone interested?
The source and compiled packages for Windows and MacOS can be downloaded from either sourceforge.net or github.com:
The packages for various Linux distributions are available from:
- Home Page
Pygame.org account Comments
Jouni Järvinen 2012-04-04 15:58:56
What Py3-only does the program use ?
eric83pl 2012-04-04 16:27:47
print(), super(), UTF8, exception handling (not much of that), to be honest with you I have started learning python 4 maybe 5 months ago, and started from Py3, I'm not so sure what other differences are there between the 2 versions that I might have used in the app. The code itself is written in a little bit childish way, but that's the level my programming skills are at :P
Jouni Järvinen 2012-04-04 16:43:36
§print()§ is Py2-compatible cuz the syntax doesn't force the absence of brackets with the word. I'll see where I get with Py2.7.2.
eric83pl 2012-04-05 10:10:23
actually it was not that hard, I dropped the use of super(), replaced few characters, and dealt with integer division and the new version is now compatible with Py2.7.2
Miriam Ruiz 2012-04-15 00:28:26
I had to patch it a bit. In classes/board.py, I had to replace two .copy() stuff by copy.copy() or copy/deepcopy(). Lines 133 and 135 I think.
Miriam Ruiz 2012-04-15 00:30:20
BTW, I made packages for Debian and Ubuntu: http://ppa.launchpad.net/miry/...
eric83pl 2012-04-15 08:53:46
Thank you for that. I was trying to do it myself, but I messed it up totally. I think my attempt at creating the setup.py was useless. With so many files I got pretty confused with what and where should be installed.
eric83pl 2012-04-15 08:58:52
not sure what it does (or does not do - no difference on my end), but I have replaced the .copy() with copy().copy()
eric83pl 2012-04-04 17:28:58
you will get stopped by ½ in one of the games, if you would remove that, then in every one of the 42 board files by
TypeError: super() takes at least 1 argument (0 given)
not sure what super() takes in Py2, but it does not take anything in Py3.
bob 2012-04-13 19:11:31
Hi Eric83pl, I like what you make. I just started learning phyton.
are you still building other games. since I want to build simular educational games too. if you are ok helping out sometimes
eric83pl 2012-04-14 09:00:33
Hi Bob, thanks. I consider myself a beginner too, this game is just a few images put on a squares for kids to drag around. but if I can I'll try to help. Yes, I am planning to add more games, and improve the ones I have, but now I have rebuilt the whole thing slightly to enable translations (where possible) - still needs some time to make it work, and help from others - I know only 2 languages, and none of them well enough :P
Anyway good luck with your learning and coding.
eric83pl 2012-04-15 09:30:44
I am working on internationalization and have a little problem.
How do you deal with blitting special uppercase characters, such as French: 'ÀÂÉÈÊËÎÏÔÙÛÜŸ'?
For some reason the diacritics are being cropped to approx 1px.
Jouni Järvinen 2012-04-19 15:33:02
Finnish translation in my works. Can you link a pic for 'cherry' & 'pepper', as I'm not sure what you're after ?
eric83pl 2012-04-19 15:44:14
I guess you have downloaded the latest version of the game, copy one of the files from the translation/ folder name it fi.py. The pictures are in the game, check the images folder and look for fr_cherry.png and fr_pepper.png
sipiatti 2012-07-10 09:01:50
Awesome. Congratulations and respect. You have done a fantastic work.
Mich Nannings 2012-12-01 11:02:31
I watched the video and it looks very nice and complete. How much time did you spend on this project?
Ireneusz Imiolek 2012-12-01 15:10:56
Thanks, well its a bit more advanced now than what's on the video. It's quite hard to say how long it took me. I started the game with no knowledge of python whatsoever, read some books along the way. I started learning python in December last year, and by April (after 3 - 4 months) it looked like the version on the video. After that I added more games, changed some games, added support for translations, etc. but I worked on it on the "on and off" basis so pretty hard to measure, kept improving and adding stuff when I had any ideas for new games and time to implement them :) Still nowhere near where I'd see this project, but recently I had far less time to spend on it. Anyway, sometime this month it will be its 1st birthday :P
toby 2016-09-21 14:58:24
This is genius ! i will love to fork your project, add more games and stuffs
Ireneusz Imiolek 2016-09-21 16:48:27
Thanks, if you have spare time you are more than welcome to do so. It may take you a while to get how the thing is working though, this was my first project of this scale and I did not follow the best practices for both coding and commenting - comments are rather scarce. Please keep me updated if you get anything done, or even better - you could fork it on GitHub, so your changes could be merged together:
toby 2016-09-22 08:19:26
i've been reading the source code for a week now, and man there's a lot of classes, im just getting my feet on OOP, would really love if u cld provide some sort of short documentation of ur classes, and the project flow, firstname.lastname@example.org. Thanks.!
Ireneusz Imiolek 2016-09-22 10:36:57
I'll try to type a short info / project flow and will email it to you. It may take a while though, I'm a bit pushed for time.
toby 2016-09-22 10:53:27
okay, in the meantime i'll keep digging in and see what i can find. Thanks in advance !
Ireneusz Imiolek 2016-09-22 11:29:48
Definitely have a look at classes/board.py - this is the file that contains all visible activity objects including the board the games take place on - so you may either use one of them in your game or create you own objects there, if they don't meet your requirements. When you create new game you need to add it in menu.py. The individual logic for all games is kept in game_boards folder, but they all inherit from BoardGame in /classes/game_driver.py, so if you were to create a new game you would add game089.py, in __init__.py change the only line of code and increase the number by one. Have a look how strings are managed in other games - they need to be added to: /i18n/custom/default.py so they can later be included in translation files. The other files are not so important at the moment, they just set up the layout, connections to db, etc., unless you want to change the whole thing completely you do not really need to change them, but then if you wanted to change the whole thing you may as well start a new project and do it properly. Mainly have a look at other game???.py files and see how they are done and look for repeating lines that need to be included in every file for them to update the game, etc.
toby 2016-09-22 12:53:08
i plan to change the interface [colors (i av a thing for blue and purple :D), and stuff], add some games and some grading system of some sort, it's like creating a new project from an already existing great project. i guess i'll be inheriting a lot of classes in the classes dir, and, hopefully this will deepen my knowledge in OOP, thanks so much, really appreciate, tho i look forward to the short docs. Thanks once again.