Vielen Dank für die Hilfe! Ich komme leider erst heute wieder dazu, das auszuprobieren, deshalb meine "späte" Antwort. :oops:
Ich melde mich dann mit Ergebnissen wieder.
ph4nt0m
Edit:
Ich konnte bisher leider nur die Kollision mit einer Bande korrigieren. Dabei bin ich etwas anders vorgegangen, um mir in der move-Funktion eine Abfrage zu sparen, ob die Kollisionsfunktion die Kugel schon bewegt hat oder nicht. Sonst würde es nachher doppelte Bewegungen pro Durchlauf geben... Dabei gehe ich wie folgt vor:
Zuerst wird berechnet, ob die Kugel kollidieren würde, wenn sie jetzt um die entprechende Anzahl Pixel bewegt werden würde. Falls ja, werden die Richtungsvektoren entsprechend geändert und die korrekte Position der Kugel nach der Kollision berechnet. Dann wird die Kugel allerdings nicht auf diese Position gesetzt (denn sonst würde der anschließende move() Aufruf ja nocheinmal bewegen), sondern auf genau die Position, damit sie sich erst nach dem dann folgenden Aufruf der move-Funktion auf der richtigen Position befindet.
Etwas kompliziert, aber damit kann ich wenigstens in jeder Schleife collision() und dann move() aufrufen, ohne, dass diese beiden irgendwie untereinander kommunizieren müssten.
Weil das ziemlich gut funktioniert und auch aussieht, wollte ich das jetzt also auf die Kollision zwischen zwei Kugeln übertragen. Dabei mangelt es zur Zeit aber noch an der Berechnung des exakten Berührpunktes: Auch hier habe ich ja wieder nur den Weg und die Richtung, in die sich beide Kugeln bewegen wollen. Die Abfrage, ob sie kollidieren WÜRDEN, ist natürlich kein Problem. Da sie sich nach der vollständigen Bewegung dann aber wie gesagt eventuell überschneiden, brauche ich die Position, an der sie sich berühen (oder den Weg, den beide bis dahin zurückgelegt haben).
Das ganz gestaltet sich jedenfalls doch komplizierter, als ich dachte. Vielleicht könnt ihr mir ja nochmal weiterhelfen
ph4nt0m