A simple self explaining A* code tutorial