Hallo, ich weis nicht ob meine Frage schon beantwortet wurde, allerdings haben mir die Posts die ich in anderen Themen durchgelesen habe nicht geholfen. Ich bin im Moment dabei, ein erstes größeres Programm/Spiel zu programmieren, es soll ein Klick-Adventure werden, sprich man kann durch verschiedene Karten/Hintergründe gehen und mit NPC's und Gegenständen interagieren.
Ich bin im Moment soweit, das ich für jeden dieser Hintergründe die Items und die NPCs als Array bekommen kann, wobei die Objekte "Item" und "NPC" jeweils ein Bild und eine Position (x und y koordinate) haben. Diese sollen nun auf den Hintergrund draufgesetzt werden und einen MouseListener erhalten, der überprüft ob auf das Bild (bzw. auf den nichttransparenten Teil des Bildes wenn möglich) geklickt wurde.
In anderen Themen habe ich gelesen das Images in JLabels gepackt werden können um MouseListener zu erhalten, ich erstelle mein JFrame allerdings in einer anderen Klasse als jene, wo ich die Objekte zufügen will, zumal sich diese ja auch ändern sollen.
Das Bild entsteht momentan über eine Paint-Methode, die den passenden Hintergrund sucht und setzt sowie die Charaktäre und Items:
Meine bisherige addItems() (Characters analog), die nur die Bilder anzeigt:
Items.getItemsInWagons()[Train.getCurrentWagon()] liefert alle Items die auf der Karte sind in einem Array,
Item.getImageIcon gibt das zugehörige Bild als imageIcon zurück.
Item.position gibt [x-Koord, y-Koord].
Ich bin wie gesagt neu beim Programmieren, so dass ich nicht weis, was für Informationen ihr braucht aus meinem Quellcode oder so, und hoffe das ich mich verständlich ausgedrückt habe
Sollte sowas irgendwo beantwortet sein tut es mir Leid, würd mich aber freuen wenn ihr mir dann einen Suchbegriff geben könntet, unter dem ich was finde.
MfG retepred
Ich bin im Moment soweit, das ich für jeden dieser Hintergründe die Items und die NPCs als Array bekommen kann, wobei die Objekte "Item" und "NPC" jeweils ein Bild und eine Position (x und y koordinate) haben. Diese sollen nun auf den Hintergrund draufgesetzt werden und einen MouseListener erhalten, der überprüft ob auf das Bild (bzw. auf den nichttransparenten Teil des Bildes wenn möglich) geklickt wurde.
In anderen Themen habe ich gelesen das Images in JLabels gepackt werden können um MouseListener zu erhalten, ich erstelle mein JFrame allerdings in einer anderen Klasse als jene, wo ich die Objekte zufügen will, zumal sich diese ja auch ändern sollen.
Das Bild entsteht momentan über eine Paint-Methode, die den passenden Hintergrund sucht und setzt sowie die Charaktäre und Items:
Java:
public void paint(Graphics g){
super.paint(g);
Graphics2D f2 = (Graphics2D)g;
ImageIcon background = getBG();
f2.drawImage(background.getImage(),0,0,null);
addCharacters();
addItems();
}
Meine bisherige addItems() (Characters analog), die nur die Bilder anzeigt:
Items.getItemsInWagons()[Train.getCurrentWagon()] liefert alle Items die auf der Karte sind in einem Array,
Item.getImageIcon gibt das zugehörige Bild als imageIcon zurück.
Item.position gibt [x-Koord, y-Koord].
Java:
public void addItems(Graphics2D f2){
for(Item j: Items.getItemsInWagons()[Train.getCurrentWagon()]){
Image image = j.getItemIcon().getImage();
f2.drawImage(image, j.position()[0], j.position()[1],null);
}
}
Ich bin wie gesagt neu beim Programmieren, so dass ich nicht weis, was für Informationen ihr braucht aus meinem Quellcode oder so, und hoffe das ich mich verständlich ausgedrückt habe
Sollte sowas irgendwo beantwortet sein tut es mir Leid, würd mich aber freuen wenn ihr mir dann einen Suchbegriff geben könntet, unter dem ich was finde.
MfG retepred
Zuletzt bearbeitet: