Wednesday, March 24, 2010

Moving!

From now on, JAKE updates are going to be placed on www.frasermckay.co.uk. All older posts have been archived there too.

Thursday, March 18, 2010

Two simple programs (video)

These videos show the creation of two simple Java robot programs in JAKE, based on an earlier blog entry about creating control events.

The robot/wall graphics are a little choppy, but that seems to be something to do with mixing Java and the screen-capture software.

Adding events

A big part of JAKE (Java Karel with Events) is that it adds an understandable event model to the Karel mini-paradigm. We know that there are problems with Java's event model [1], and that's part of what JAKE is meant to address. The idea is that the programmer, once they've set up their world, creates event buttons, methods of the control panel.

Adding an event is done with the "Add..." button. This adds a new button to the control panel.


Monday, March 15, 2010

Minor updates this week

As well as the new world editor, there have been some other small updates to JAKE this week.

Firstly, the graphics have been improved slightly in the JAKE Java library, so that there's no longer the same stretching and pixelating as before. The wall and beeper icons are now crisper. You can see this in one of the screenshots for the world editor, when compared to a scenario from a few weeks ago:

Setting up "situations"

Karel programs are built on "situations". Similarly, Greenfoot programs use pre-built scenarios. So JAKE programs, also, use Pattis's situation model.



Tuesday, March 9, 2010

Dynamic class diagrams in JAKE

It’s been noted [e.g. 1] that showing the static class structure is important in teaching materials and tools. BlueJ, for instance, places a lot of emphasis on this.
The JAKE IDE dynamically compiles a class diagram as classes are added to the JAKE program. Every program starts with a default class diagram that shows all the classes in the main JAKE package: World, Mover, Robot, and so on.



Tuesday, March 2, 2010

Debugging: Class, interface, or enum expected.

Java's error messages aren't always very meaningful - to novices at least. Take this, what we might imagine to be a fairly common error:

Class, interface, or enum expected.

Now, I know what it means, but would a new programmer? To understand this message, you surely need to know what an interface or an enum is - neither of which are likely to be taught in the first few lessons.


Monday, February 8, 2010

New robot graphics

Up until now Jake's had to make do with a clipart-based outfit. His new ensemble has now arrived, and it comes in several stylish colours...

The new drawings are courtesy of Miriam Lowrie.

Sunday, February 7, 2010

Ghosts!

JAKE is an objects-first tool, built using the object-oriented Java language.
One of the advantages of using robots is that there's a clear model for inheritance. In the current build, the JAKE architecture has a number of classes. The World owns several WorldObjects. There are different kinds of world object: Walls, Beepers and Movers. Walls are solid structures that block off paths in the World. Beepers are just that - little devices that "beep" so that they can be detected by the robots. For now, Movers are the most interesting class.
Just like there are different kinds of WorldObject - one of which is the Mover - there are different kinds of Mover. All Movers can, well, move. Different kinds of Movers behave in different ways, but all have a move() method. The first type of Mover to be created was the Robot. The Robot class represents a basic robot that can move forwards, turn, and do some other (similarly exciting) things. Jake - our main character - is one of these Robots.



Saturday, February 6, 2010

It's alive!

The robot has a name: Jake. Jake stands for "Java Karel with Events". Jake is based on Karel the robot, with an objects-first approach and some new button-based event interfaces.
Today the first prototype is complete: Jake can move, turn and bump into walls. He's programmable in Java using the "jaketherobot" package. There are world, robot, beeper and wall classes.
So far Jake only exists as a collection of classes. The JAKE IDE is planned for development within the next couple of months.