What Professional Games Use Pygame?

This came up as a question on Stack Overflow a while ago. While Python is noted for its use in many games, here’s a list of professional-quality games that use Pygame:

Dangerous High School Girls in Trouble is a 2D RPG by Keith Nemitz that was nominated for a Writers Guild Award, won “Most Innovative Game” by the Casual Games Association, and was also selected as a finalist for the 2008 IndieCade Festival of Independent Games. It is available for purchase off of Steam. Gameplay video
Analogue: A Hate Story is a visual novel-style game that was a 2012 IndieCade Finalist. As of December 2012, Analogue has sold at 40,000 copies. Steam store link (with videos).
Unity of Command is a turn-based, operational-level wargame that covers the entire 1942/43 Stalingrad Campaign on the Eastern Front. Trailer video. Available on Steam.

(more…)

Read More

Why I Recommend Against Hackety Hack

Disclosure: I sell a couple books that teach programming to kids (and are free to download). I don’t personally view them as being in competition with Hackety Hack, but someone else might.

Hackety Hack was a project originally started by _why the lucky stiff to teach kids programming in Ruby. It often comes up in “I want to teach my kid programming” forum threads. So I downloaded Hackety Hack and decided to give it a try.

I found Hackety Hack to be frustrating and was very unimpressed with it, and do not recommend it as a way to teach programming to a beginner.

It’s kind of crap.

Its main flaws are:

(more…)

Read More

8-bit NES Legend of Zelda Map Data

I’ve created Python & Pygame script that lets you walk around the overworld map of the original Legend of Zelda game on the 8-bit Nintendo. There are no monsters or levels or items; it is simply a walking tour. The Link walking sprite animation is implemented by my Pyganim module.

More importantly, this program does provide the raw map data the entire world map (something I haven’t been able to find on the web.) Getting this from the Zelda ROM is actually a pain due to the tricks used to store the map info. The game doesn’t store individual tiles and their XY location, but rather have one of three color schemes for the border and a color scheme for the center tiles. Even then, the game only stores columns of tiles, and then each room references which columns it uses. (You can notice the same columns being used in different rooms, even though their color scheme may change.)

These tricks aren’t really needed with today’s computers for a game as simple as Zelda, so I’ve compiled the tile map data for each individual location on the map. Here’s the world map data file (it is also included in the main download below.)

Download the Zelda Walking Tour program.

View raw tile map data.

(Just unzip all the files and run the nesZeldaWalkingTour.py file with Python. Runs with both Python 2 and Python 3. Requires the Pygame module to be installed.)

You can also download the code from the GitHub project.

(more…)

Read More

Programming AI Bots for Zombie Dice

UPDATE: I’ve set up a wiki for posting your own Zombie Dice bots: http://zombiedice.inventwithpython.com/

Download the Zombie Dice Python code from GitHub or as a zip file.

This tutorial outlines how to create a tournament simulation program for the Zombie Dice game in Python. With this tournament program, you can also code your own AI bots to play Zombie Dice against each other. You can quickly test out how the different strategies the bots use compare against each other over thousands of simulated games. This tutorial assumes you know basic Python programming. (You can learn to program from the free book on this site, “Invent Your Own Computer Games with Python”.

Computer game simulations make for great science fair experiments, and since the rules to Zombie Dice are so simple it’s fairly easy to program a simulation for it.

The Rules of Zombie Dice

Zombie Dice is a dice rolling game that is fun for groups, quick to play, and can be learned in a couple minutes. It has a “push your luck” game mechanic.

Each of the players is a zombie. Each of the dice represents a human victim. You want to eat brains and avoid shotgun blasts. If the footsteps come up, the human has eluded you. The rules are summarized below: (Or view the official rules PDF or view the Flash tutorial.)

(more…)

Read More

Designing a Button UI Module for Pygame

Pygame is a 2D graphics and gaming library for Python. It’s pretty nifty because it essentially gives you a blank window that you can draw any shapes or lines or images you want on it. But it doesn’t come with any UI elements like buttons, scrollbars, or check boxes. This post will go through not only creating a button class for Pygame, but also the reasoning behind why I’ve set up the code as it is. This is more of a “how to create a module other people can use” tutorial than a UI or Pygame tutorial.

This tutorial assumes you know the basics of Pygame and Python programming. If you don’t, it’s probably easy enough to follow anyway.

A button is a common user interface (UI) control that is used in many software applications. It seems simple enough: there’s a button on the window and you click on it and something happens. But there’s a lot of details we should plan out ahead of time. Remember, we want to make a generic button class so that other programmers can use this in their games and programs. Once you’ve read through the process here, you’ll be familiar with how to make your own modules for UI elements.

Designing a UI button class is good a good programming practice exercise.

Download the PygButton module from PyPI by running “pip install pygbutton”. You can also look at just the pygbutton.py file itself.

Or download it from the git repository on GitHub.

The Feature List (and the Non-Feature List)

First, let’s create a list of design details for the buttons:
(more…)

Read More

Am I Too Old to Learn Programming?

No.

Wow, this was an easy blog post to write.

 

 

 

 

 

I suppose a longer answer would be more satisfying.

I have no idea how old you, the reader, are but that’s irrelevant. No, you are not too old to learn programming. If you wonder if you are too old to become a professional software developer and are under the age of 50, the answer is still no. (And even above that age, the answer is merely “probably”.)

But you might feel too old, or at least feel forever crippled because you didn’t start coding the instant you developed fine motor skills. But I still assure you: You are not too old to learn programming.

(more…)

Read More