Gibt es in BlueJ eine Methode, mit welcher man prüfen kann, ob sich zwei Bilder übereinander befinden?

...komplette Frage anzeigen

4 Antworten

Üblicherweise nimmt man 2 Rechtecke, die "Hitframes" (oft, aber nicht immer, identisch mit den Rechtecken, in denen die Bilder sich befinden)

Dann kann man in Java mit der Rectangle.intersects()-Methode bzw. in C# mit der Rectangle.IntersectsWith()-Methode testen, ob die Rechtecke sich überschneiden.

Wenn ihr es wirklich pixelgenau haben wollt, nehmt ihr am besten die Rechtecke, in denen sich die Grafiken befinden, und ermittelt mit Rectangle.intersection() (Java), Rectangle.Intersect() (C#) bzw. der Entsprechung in eurer Programiersprache das Rechteck, in dem die Bilderrahmen sich überschneiden.

Zu jedem der Bilder ermittelt ihr das Offset des Schnittrechtecks zum betreffenden Rahmen.

Für jeden Punkt des Schnittrechtecks prüft ihr (mit Hilfe der Offsets), ob sich dort in beiden Bildern (UND-Operation) ein Pixel befindet, das nicht die transparente Farbe hat, bzw. wo die Transparenzmaske "undurchsichtig" markiert. Wenn ein solcher Punkt gefunden wird, gibt eure HitTest()-Methode true zurück, sonst false.

Antwort bewerten Vielen Dank für Deine Bewertung

BlueJ ist ein Editor, keine Programmiersprache! Arbeitet ihr mit OOP? Dann wäre es sinnvoll eine Klasse "Obstacle" zu erstellen und für jede Säule zu instanziieren und dann halt mit dem Vogel-Objekt einen Kollisionscheck zu schreiben...

Antwort bewerten Vielen Dank für Deine Bewertung

Also BlueJ ist keine Programmiersprache, sondern ein Editor.

Mit welcher Sprache arbeitet ihr?

Ich würde das nicht mit Bildabgleich machen, sondern mit Pixeln. Einfach vergleichen, ob Säule und Vogel gleiche Pixel haben. Wenn das der Fall ist, dann hast du verloren.

Antwort bewerten Vielen Dank für Deine Bewertung

Ein spiel in BlueJ wird etwas... naja. Du kannst überprüfen ob sich die Koordinaten der Bildpos überschneiden.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?