Is somewhat amazing that this short piece of code produces a pretty good goalie!
package Riddler.Flash; import sockey.SoccerClient; import java.awt.*; public class Goalie extends SoccerClient { Point ogl= new Point(0,0); Point ogr= new Point(0,0); Point ball= new Point(0,0); public void step() { ping(ID_OUR_GOAL_LEFT, ogl, true); ping(ID_OUR_GOAL_RIGHT, ogr, true); ping(ID_BALL, ball, true); // if the ball is far away (compared to the goal) // then scootch forward int backup= ((ogl.x+ogr.x)*2 > ball.x)?-10:10; // the goalie tries to keep two angles equal: // ball...goalie...left goalpost, // ball...goalie...right goalpost // If the left angle is smaller, move left (180 degrees) // to make it bigger. int bgl= anglesub(ball.y, ogl.y); int bgr= anglesub(ogr.y, ball.y); if (bgl < bgr) { // move left accelerate(180-backup, 100); } else { accelerate(0+backup, 100); } } }