Du berechnest in einer Schleife für jeden Spieler die Entfernung zum Ziel.
Dabei hilft der gute alte Satz des Pythagoras.
Delphi-Quellcode:
x := spieler.x - ziel.x;
y := spieler.y - ziel.y;
entfernung := sqrt(sqr(x)+sqr(y));
Dann dividierst du die Entfernung durch die Geschwindigkeit und erhältst die Zeit vom Spieler bis zum Ziel.
In der Schleife merkst du dir die bisher kleinste Zeit und den Spielerindex dazu.
Nach der Schleife kennst du den Spieler der das Ziel am Schnellsten erreichen kann.
Das funktioniert nur, wenn der Ball sich nicht bewegt.
Alternativer Vorschlag (Ein Weg zur Lösung zu kommen):
Beschreibe die Funktion ball(t), die bestimmt, wo sich der Ball nach Zeit t befindet.
Beschreibe die Funktion spieler(x, p), die bestimmt, wie lange Spieler x von seiner Position zu Position p braucht.
Setze t = spieler(x, ball(t)), löse auf nach t (Mitternachtsformel). Damit hast du eine Funktion die bestimmt, wie lang der Spieler braucht, um zum Ball zu kommen (Wenn er es denn schafft - die Gleichung dürfte quadratisch werden, entsprechend kann der Lösungsraum leer sein).
Diese kannst du dann implementieren, iterierst über alle Spieler, und merkst dir den, der am schnellsten drankommt. Vergiss nicht den Fall zu berücksichtigen, dass kein Spieler mehr drankommt ^^