Java : Gemalte Figur ansprechen bzw. als Objekt hinzufügen?


09.12.2021, 18:26

Die Figur soll sich Beispielsweise nicht über den Weg, also über die Koordinaten vom Weg, bewegen können.

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Für die Entwicklung von 2D-Spielen eignen sich Bibliotheken wie slick2D, FXGL oder Processing Core. Die einzelnen Komponenten (Hintergrundbild, Figur) werden separat bspw. als Sprites eingefügt.

Den Ablauf kannst du mit einem Daumenkino vergleichen. Die Szene wird immer wieder neu gezeichnet. Wenn du die Zeichenposition der Figur an Variablen bindest, kann sie bei jedem draw call leicht verrückt werden.

Ansatz:

int x = 0;
int y = 0;

void gameLoop() {
  // draw background image ...
  drawPlayer(x, y);
  x += 10;
}

Die Figur würde bei jedem Zeichenvorgang um 10px nach rechts verschoben werden.

Mythxx103 
Fragesteller
 09.12.2021, 18:53

Danke, muss ich das alles von Java zeichnen lassen ? Ich habe das Bild für Java so zur Verfügung gestellt :

ImageIcon image = new ImageIcon("/home/marc/Bilder/ObstKaufeb1800.png");

Wie soll ich das denn alles von Java zeichnen lassen? Und wird die Figur jetzt echt gezeichnet oder nur Virtuell, damit Java sich vorstellen kann, wo die Sachen positioniert sind? Muss ich die ganze Umrandung der Figur als Koordinaten angeben, damit Java weiß, dass die Figur Beispielsweise nicht in den Obststand läuft?

0
regex9  09.12.2021, 19:15
@Mythxx103

Die oben genannten Bibliotheken verfügen allesamt über entsprechende Methoden, um Bilder zu rendern und im Falle von FXGL sowie slick2D gibt es auch bereits Implementationen für die Kollisionsprüfung.

Die Szene teilt sich in Layer auf, die von der Rendering Engine in entsprechender Reihenfolge gezeichnet werden (erst Hintergrund, dann Vordergrund). Es ist so, als würdest du eine (oder mehrere) Folie(n) über ein Bild kleben und darauf eigene Kritzeleien ergänzen.

Im Prinzip muss zu Objekt 1 ein Mesh bekannt sein. Im einfachsten Fall kann das ein Rechteck sein, in welches das Objekt hineinpasst. Komplizierter, doch genauer wäre ein an die Form der Figur angepasstes Mesh (bei einem Kreis wäre dies z.B. ein Kreis). Objekt 2 (das sich bewegende Objekt) müsste nun bei jedem Schritt mit Hilfe seiner Koordinaten / anhand seines Mesh prüfen, ob es mit Objekt 1 kollidiert.

1
Mythxx103 
Fragesteller
 09.12.2021, 19:21
@regex9

Und wie verwende ich diese Bibliotheken?

0
regex9  09.12.2021, 19:57
@Mythxx103

Das steht in deren jeweiligen Online-Dokumentationen, die leicht via Google auffindbar sind.

1
regex9  10.12.2021, 21:36
@Mythxx103

Über verschiedene Quellen. Größtenteils Bücher und Online-Dokumentationen (vor allem da, wo gute Literatur rar war). Und natürlich Praxiserfahrung.

1
Mythxx103 
Fragesteller
 10.12.2021, 21:44
@regex9

Was für Bücher denn so ? Auch „Java ist auch eine Insel“? Würdest du das Buch auch für jüngere Homo sapiens empfehlen ab 13 etwa?

0
regex9  11.12.2021, 12:09
@Mythxx103

Die Insel war auch dabei. Die anderen dürften dich weniger interessieren, da entweder nicht anfängerfreundlich, themenbezogen oder englisch.

Ich würde auf die Schrödinger programmiert ... Java-Reihe verweisen. Sie beinhaltet ungefähr dieselben Themen wie die Insel, ist aber lockerer und mehr jugendorientiert.

1