Sunday, January 27, 2013

Yet Another Look at Graphics and Sound on Python


The more I look at it, the more I think the turtle module may be my answer for the graphics I need in the classroom. To recap, the basic ability I need from graphic in a classroom programming language is basic drawing and sprites. Cell or tile based graphics would be a big plus. In the non-python arena, Greenfoot pretty well has this covered for Java. It includes nice features like collision detection and distance determination as well.

Python's turtles can pretty well be treated as sprites. It's possible to have multiple simultaneous turtles in the current python versions. They can also be given unique appearances. It seems that the ability to use an image is there, but the documentation I've seen makes it look like a reserved feature. I'll have to look more into that.

Repurposing things like this always introduces an extra layer of complexity in the classroom. Students start to feel jerked around if you go and teach them that something is one thing, then start using it to do something else that doesn't follow from the first. In this case, perceiving the turtle as an indicator of where the drawing focus is when using turtle graphics, to forcing it into use as a free-moving entity that has various game behaviors we've associated with it.

It's not insurmountable, in this case, but it is more of a shift in thinking than a dedicated sprite class that aren't turtles by nature (perhaps a parent class of the turtle?)

In this case it's not a big deal, but in the classroom when little shifts like this start piling up one on another it gets harder to for the students to keep things straight and commit them to long term memory.

Another disadvantage of turtle graphics is that I pretty well have to develop my own material for class. I don't have a nice, pre-written book like Invent Your Own Computer Games with Python to draw on. That book is pretty much what let me bring python into my classroom. Using turtle graphics means that I have to write my own lessons using that module.


I still don't have a good answer for sound. The platform-independent library for sound in python has been taken out of the standard library. Sound is an important part of interacting with the computer for my students. When we've had teams developing video games using Greenfoot and Java in the past, it's not been unusual for the teams to have one of four students spend most of their time creating sounds and music for the games.

Python doesn't even have the ability to go "beep" without a platform-dependent library being added to the core package, as far as I can tell. That's pretty pathetic, what with it being so far to this side of 1983 and all. There are days when I wish the classroom was still filled with 8-bit computers. This is one of the reasons why.

So now, the ability to make sounds is the main thing missing from python so far as my use in class is concerned. I can still use Pygame for that, or have the students call platform-dependent system commands to produce sound.

No comments:

Post a Comment