Tuesday, 13 September 2016

Geek Dad: Teaching the boy to code...

I might have finally gotten my sons attention.  I've been trying to teach him to code in Java for a couple years, but I am competing with the instant gratification of Scratch.

First attempt went something like this: "Hey dude, look how you can use state machines and state transition diagrams to write a text adventure like Zork!" He was kind of interested in building the map, but I lost him in implementing an actual game complete with inventory and actions.

Next attempt was: "Hey son, remember Wizard's Quest the board game I showed you? We can write that as multiplayer network game (kind of like Dark Forest when I was a kid)." He learned something about polygons and translation from the game board into the computer, but I lost him in implementing the event loop and game rules.

Finally we have: "Dude, when I was 8, I played this game called Chase on a Data General Nova III, and it was cool because like in Tron, you could maneuver the robots chasing you into the walls and escape the grid!" I think I got him this time, because I was able to spin up a framework in a few hours, and the building blocks are all there for adding animation, time/event based movement, and other elements.  Almost instant gratification in a couple pages of code.

The Grid

The rules.  You are in an arena with electric fences and robots. The robots can only move horizontally or vertically, but you can move diagonally. The objective is to run away from the robots and attempt to maneuver them into the walls.  You win when all the robots are dead. You loose when you run into a wall, a robot gets you, or you exceed 100 moves.

Robots use the difference between their position and your position when deciding to move vertically or horizontally (50-50). If another robot is in the way, they pick a random direction (that can cause them to bump into another robot or wall). Whatever a robot runs into is destroyed, but when one robot hits another, one survives.

The Tron Maneuver