Greenfoot seems well suited to teach anybody. It's a great program. However, there are a few things that I would like to see changed in the future:
Changes in the Code Editor:
Right now, holding control(ctrl) while moving your cursor through the code makes your cursor skip past words. That's pretty good (example, in: " myInstanceVariable.attack(); ", it skips past " attack ", and stops on " ( ". Right now, it stops every symbol(". , / * - etc.), and every new word(the first letter after a space or symbol). If they could make it also stop at every new uppercase letter(in "myInstanceVariable" the cursor would stop twice), I would be very happy. Also, when holding ctrl and moving the cursor back, it seems to stop one character too far(it normally stops past the semicolon in "doSomething();"). But these are just small changes that you only notice if you code a lot.
Changes in the program itself:
A speed dial based upon frames per second instead of (what is it based on now? Something logarithmic?). It isn't very intuitive now, and doesn't give you fine control over speed. I also have noticed that a lot of people ask how many act() cycles happen per second, and having speed be off of frames per second would clear that up.
An Actor that doesn't need an image. Sometimes you want a music handler, or an object spawner, that really should be invisible to the player of your game. Right now, you have to use an image, no ifs, ands, or buts about it.
Although this is a long response, which makes it seem like I want a lot changed, it just means that I am trying to be more precise so that as little changes as possible. Like I said before, Greenfoot is great. It's gotten better with time. If I taught a computer science class, I'd definitely teach it using Greenfoot.
-Oh. And a keyReleased(String key) function in Greenfoot. Right now there is just a last key pressed function. A Greenfoot.keyReleased(String key) would be great.
Morran - you can get rid of the actor image by calling "setImage((GreenfootImage) null);" in the actor's constructor.
Oh. I didn't know that you could do that. I just thought that you had to set the transparency to zero, and thought that maybe there was a better way.
By the way, is there any way to make an Actor that can't act? It would still have an image, and be able to be removed from the world, but wouldn't have an act() method, and so wouldn't eat up cpu time, like, for logs or other decorations for your game?
Yep, get rid of the act() method.
Honestly, you would need a *lot* of objects with an empty act method before it had any noticeable effect on cpu. If it was really a problem, you could draw stuff on to the world background, managing that separately from the actors. But, by the time you've got that far, and if you're that worried about performance, maybe it's time to move on from Greenfoot! It was designed for beginners and the API is deliberately kept simple.
(If you do want to discuss it further, maybe you should start a new topic, too).
Greenfoot is suited for kids and adults beginning programming.