let walk_step () =
  A.init !selected ;
  selected := 1 - !selected ;
  let move = Array.make (3*(Array.length Walk.skel)) None in
    move.(0+3* !selected) <- Some 0. ;
    move.(1+3* !selected) <- Some 0. ;
    move.(2+3* !selected) <- Some 1. ;
    Solver.begin_move_precise ~steps:(-1) move ;
    Glut.idleFunc
      (Some (fun () ->
               if Solver.move () then
                 begin
                   let (x,y,z) = Solver.pos.(!selected) in
                   let xgoal = if !selected = 1 then 1. else -1. in
                     (* A correction doesn't hurt ... *)
                     move.(0+3* !selected) <- Some (xgoal-.x) ;
                     move.(1+3* !selected) <- Some (0.-.y) ;
                     move.(2+3* !selected) <- Some (0.) ;
                     move.(2+3*3) <- Some 0.5 ;
                     Solver.begin_move_precise ~steps:(-1) move ;           
                     Glut.idleFunc
                       (Some (fun () ->
                                if Solver.move () then
                                  Glut.idleFunc None
                                else
                                  Glut.postRedisplay ()))
                 end
               else
                 Glut.postRedisplay ()))