AWT die X koordinate eines Rectangles herrausfinden

cybren

Mitglied
Hallo,
ich habe mir bei google schon die Finger wund gegoogled und denke deshalb das es Zeit ist sich an das Java-Forum zu wenden.

Ich möchte ein kleines Tower Defens programieren und hänge an der Schuss-Animation.
ich habe ein Bild und das wird dirket auf dem Turm gezeichnet mittels
Code:
g.drawImage(Screen.Bullet[0],x,y,width,height,null);
Meine Frage ist nun wie kann ich das bild so verschieben dass es sich auf den Gegner zu bewegt?
Einer meiner Ansätze war die Distanz zwischen dem Turm und dem Gegner mit hilfe von
Code:
public  int EntvernungX= x - Screen.enemys[shotMod].x;
public  int EntfernungY= y - Screen.enemys[shotMod].y ;
zu berechnen und davon dann immer 2 abzu ziehen. allerdings bekomme ich, dadurch das ich nur "x"- schreibe, eine NullPointerException was sich mir auch erschließt aber wie kann ich das bild einerseits auf dem Turm malen es aber trotzdem verchieben?

P.S.: Es muss natürlich so sein das der Turm an jeder belibigen stelle stehen kann, es aber trotzdem klappt.

Danke schonmal im Vorraus!
MFG cybren
 

Harry Kane

Top Contributor
Ich möchte ein kleines Tower Defens programieren und hänge an der Schuss-Animation.
ich habe ein Bild und das wird dirket auf dem Turm gezeichnet mittels
Code:
g.drawImage(Screen.Bullet[0],x,y,width,height,null);
Meine Frage ist nun wie kann ich das bild so verschieben dass es sich auf den Gegner zu bewegt?
Einer meiner Ansätze war die Distanz zwischen dem Turm und dem Gegner mit hilfe von
Code:
public  int EntvernungX= x - Screen.enemys[shotMod].x;
public  int EntfernungY= y - Screen.enemys[shotMod].y ;
zu berechnen und davon dann immer 2 abzu ziehen. allerdings bekomme ich, dadurch das ich nur "x"- schreibe, eine NullPointerException was sich mir auch erschließt aber wie kann ich das bild einerseits auf dem Turm malen es aber trotzdem verchieben?
Also mir erschließt sich die NPE überhaupt nicht! Kannst du mal kompletten Code zeigen?
 
Zuletzt bearbeitet:

cybren

Mitglied
Java:
public int shootTime = 40,shootFrame=0;

public  int EntvernungX= x - Screen.enemys[shotMod].x;
public  int EntfernungY= y - Screen.enemys[shotMod].y ;
	
public void turmschuss(){
	if(shootFrame>=shootTime){
		EntvernungX -=2;
		EntfernungY -=2;

		
	shootFrame=0;
}else{
	shootFrame+=1;
}
public void fight (Graphics g){
	g.drawImage(Screen.Bullet[0],x,y,width,height,null);}
ich rufe diese Methoden natürlich auhc auf;)
so ich hoffe so ist es genug :)
 

Harry Kane

Top Contributor
Es ist immer noch nicht nachvollziehbar, was eiegentlich passiert.
Was ist Screen?
Was ist Screen.enemys?
Was ist Screen.bullet?
In welcher Klasse sind wir überhaupt? Wo kommen x,y,width,height her?
Dein Schnipsel ist keine komplette Klasse.
 

cybren

Mitglied
Ok ich möchte meine Frage anders formulieren.
Aber erstmal : Screen ist eine Klasse, Screen.Bullet ist ein Bild und mit Screen.enemys rufe ich die Klasse Enemys auf!
ich habe ein Bild das soll mittels
Java:
g.drawImage(Screen.Bullet[0],x,y,width,height,null);
( nein ich habe x,y,width und height nirgends deklariert aber das malen passt perfekt deswegen male ich es so!) direkt in die Mitte des
Java:
towerSquare= new Rectangle(x-(towerSquareSize/2),y-(towerSquareSize/2),width + (towerSquareSize),height+(towerSquareSize));
wobei towerSquareSize 104 ist gemalt werden.
In dieses Rectagle wir um den Turm herrum gemalt und muss befindet sich somit auhc immer an einer anderen Stelle.
dieses Bild soll sich dann irgendwie auf einen Gegner (oder halt das Bild von ihm) zu fliegen.

Meine Fragen:
1. wie bekomme ich die Koordinaten der beiden Bilder? ( damit ich weiß wo das eine Bild hinfliegen soll)
2. wie male ich das Bild das es zum einen immer in der Mitte das oben angesprochenen Rectagles gemalt wird, es aber trotzdem verschieben kann ohne das irgendwas anderes dabei mit verschoben wird?

Wenn du weiteren Code brauchst sag es einfach;)
 
Zuletzt bearbeitet:

Harry Kane

Top Contributor
Aber erstmal : Screen ist eine Klasse, Screen.Bullet ist ein Bild und mit Screen.enemys rufe ich die Klasse Enemys auf!
Sicher nicht. Screen.Bullet ist offensichtlich ein Array von Images, und Screen.enemys ein Array von irgendwas anderem, wobei dieses irgendwas offenbar die öffentlichen Felder x und y hat.

... ( nein ich habe x,y,width und height nirgends deklariert aber das malen passt perfekt deswegen male ich es so!)
Das mit dem "nirgends deklariert" kann auch nicht stimmen, ansonsten würde der Code gar nicht kompilieren.

In dieses Rectagle wir um den Turm herrum gemalt und muss befindet sich somit auhc immer an einer anderen Stelle.
Der Satz ist ebenfalls wenig hilfreich beim Versuch, das Problem zu verstehen.
Je besser man eine Frage formuliert, desto eher bekommt man im Allgemeinen auch sinnvolle/hilfreiche Antworten.

Meine Fragen:
1. wie bekomme ich die Koordinaten der beiden Bilder? ( damit ich weiß wo das eine Bild hinfliegen soll)
2. wie male ich das Bild das es zum einen immer in der Mitte das oben angesprochenen Rectagles gemalt wird, es aber trotzdem verschieben kann ohne das irgendwas anderes dabei mit verschoben wird?
Zu 1:Wenn du ein Bild Image1 mit der Breite width1 und der Höhe height1 hast und dieses so platzieren möchtest, dass sein Mittelpunkt an den Koordinaten target1X und target1Y liegt, liegt seine linke obere Ecke bei den Koordinaten min1X und min1Y, die so berechnet werden können:
Java:
min1X = target1X - width1 / 2;
min1Y = target1Y - height1 / 2;
Ist es daß, wonach du dir die Finger wund gegooglet hast?
Zu 2: Was spricht dagegen, ein Image mehrfach auf denselben Graphics2D zu zeichnen?
 

cybren

Mitglied
erst mal entschuldige für die Fehler ich bin noch ziemlich neu in Java, außerdem musste ich mich beim schreiben meiner Frage etwas beeilen.

ähm ... irgendwie schaffe ich es nicht mit irgendwelchen Korrdinaten das Bild des Projektils immer genau auf den Turm zu malen???:L

und zu deiner 2. Antwort: ich habe bisher das immer mit
Java:
if(shootTime<=shootFrame){
		entfernungX +=2;
		entfernungY +=2;
		}
gemacht.das obere nur damit es nicht zu schnell fliegt. das einzige problem von mir sind halt die Kooordinaten der Bilder ;(.
weil ich ja nicht
Java:
		entfernungX = x; 
		entfernungY = y ;
oder
Java:
entfernungX= towerSquare.x
 entfernungY = towerSquare.y
etc. benutzen kann da es dann ja am Rand das Spielfeldes gezeichnet wird wenn ich es mit
Java:
g.drawImage(Screen.Bullet[1],entfernungX,entfernungY,width,height,null);
male und beim anderen kommt einfach eine NullPointerException raus also geht das auch nicht. und ich kann ja auch nicht
Java:
entfernungX = Screen.Grass[4].x; 
		entfernungY = Screen[4].Grass.y ;
nehmen da man das garnicht erst ausführen kann.

wie du sieht geht es nur um die Koordinaten des Turms, des Projektils und des Gegners.
den Rest habe ich ja schon. Bin aber trotzdem für bessere Vorschläge offen.
 
Zuletzt bearbeitet:

Harry Kane

Top Contributor
Ich gebs auf.
Nach wie vor gibt es nur Codebruchstücke, die aus mir nicht nachvollziehbaren Gründen nicht gehen oder Exceptions werfen oder was auch immer.
Ok, letzter Versuch: Kannst du ein Programm mit weniger als 250 Zeilen schreiben, das kompilierbar und lauffähig ist und dein Problem veranschaulicht?
 

Harry Kane

Top Contributor
Ne, doch noch nicht. Nach 3-8 mal drüber nachdenken:
Wenn du ein Bild image1 mit der Breite width1 und der Höhe height1 hast und dieses so verschieben möchtest, daß sein Mittelpunkt von den Koordinaten target1X und target1Y zu den Koordinaten target2X und target2Y wandert, muss du seinen Ursprung (also seine linke obere Ecke) verschieben. Die Entfernung entlang der x und y Achse ist gegeben durch
Code:
distanceX = target2X - target1X
und
Code:
distanceY = target2Y - target1Y

Wenn du das verschieben des Bildes in n Schritten durchführen möchtest, geht das so
Java:
for(int i = 0; i <= stepCount; i++){
    currentX = target1X + i * distanceX/stepCount;
    currentY = target1Y + i * distanceY/stepCount;
    repaint();
}
In deiner paintComponent (ich gehe einfach mal davon aus, daß deine Animation in einer eigens geschriebenen JComponent abläuft, obwohl du dazu nix gesagt hast) musst du dein animiertes Objekt dann so zeichnen
Code:
g.drawImage(image1, currentX, currentY, null);
Es bleibt dir nix anderes übrig, als für jeden Schritt der Animation die Szene neu zu zeichnen. Alles was sich während der Animation nicht verändert, kannst du vor Beginn der Animation auf ein Image als Buffer zeichnen und dann während der Animation bei jedem Schritt nur noch den Buffer zeichnen.
 

cybren

Mitglied
Hey,
Ich wollte mich nochmal bedanken und entschuldigen dafür das ich so ungenau war und so viele Fehler hatte:( aber auf jeden Fall danke für deine Hilfe!

Eine letzte Frage noch:) wie kann ich es machen das sich das Bild eins von Target1 ein auf Target2 zubewegt?

Vielen Dank und mit freundichen Grüßen cybren
 

cybren

Mitglied
Ja ich hab den Code auch benutzt und der klappt hervorragend aber er malt das Bild halt die ganze Zeit auf den Gegner...
Ich brauche nur etwas damit er die Koordinaten des Gegners nicht sofort komplett auf die turmkoordinaten drauf rechnet sonder halt in Schritten. Und da s funktioniert ja nicht mit einem for Loop. Und was anderes kenne ich nicht
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Punkt von MouseListener hat falsche Koordinate AWT, Swing, JavaFX & SWT 2
S Button (ActionListener) funktioniert nicht, wenn y-Koordinate verändert wird AWT, Swing, JavaFX & SWT 5
R MouseEvent.getX() liefert in Applet Screen-Koordinate AWT, Swing, JavaFX & SWT 2
L Koordinate im sichtbaren Bereich AWT, Swing, JavaFX & SWT 5
jojoge wie kann ich in eine Benennung eines JButtons eine Variable einbauen? AWT, Swing, JavaFX & SWT 6
L paintComponent in Panel eines Borderlayouts hinzufügen AWT, Swing, JavaFX & SWT 3
I Einbindung eines jpg/png/icons in eine GUI AWT, Swing, JavaFX & SWT 1
Splayfer Umrandung eines AttributedStrings AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Einfachste Möglichkeit zum Abspielen eines Videos in Swing AWT, Swing, JavaFX & SWT 4
Jose05 NullPointerException bei Beschreiben eines Labels aus einem Array AWT, Swing, JavaFX & SWT 12
Jose05 zugreifen auf ein Objekt eines GridPanes AWT, Swing, JavaFX & SWT 0
melaniemueller Verschiebung eines Fensters über Button AWT, Swing, JavaFX & SWT 27
news2swen automatisches erstellen eines Languagefiles AWT, Swing, JavaFX & SWT 1
B Stylen eines JTextPane funktioniert nicht AWT, Swing, JavaFX & SWT 1
MiMa Schliessen eines FXML Fensters? AWT, Swing, JavaFX & SWT 10
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
L AWT Ändern der Farbe eines BufferedImage mit Farbähnlichkeit AWT, Swing, JavaFX & SWT 5
B veränderte Größe eines Panels im Vorhinein wissen? AWT, Swing, JavaFX & SWT 1
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
L JavaFX Validierung eines Spinner AWT, Swing, JavaFX & SWT 1
M Builden eines lauffähigen JAR Files AWT, Swing, JavaFX & SWT 3
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
M JavaFX rotieren eines Kreises mit konstanter Geschwindigkeit AWT, Swing, JavaFX & SWT 1
K JavaFX Allgemeine Fragen zu dem Aufbau eines Programms hinsichtlich der Klassen AWT, Swing, JavaFX & SWT 1
M JavaFX Auf ein UI Elemement eines anderen Controllers zugreifen AWT, Swing, JavaFX & SWT 0
P Bewegung eines Balkens in eineum JPanel welches als Spielfeld fungiert AWT, Swing, JavaFX & SWT 2
Tronert JavaFX Linienstärke eines Separators ändern? AWT, Swing, JavaFX & SWT 3
N JavaFX Group: Gezieltes entfernen eines Objects (Rectangle) AWT, Swing, JavaFX & SWT 0
J Ziehen eines Buttons im JPanel AWT, Swing, JavaFX & SWT 2
J Drag and Drop eines Buttons AWT, Swing, JavaFX & SWT 0
M NullPointerException bei Übergabe eines RadioButtons AWT, Swing, JavaFX & SWT 11
DaCrazyJavaExpert Swing Extern den Text eines nicht fetsgelegten Buttons bekommen. AWT, Swing, JavaFX & SWT 12
J JavaFX Rectangle innerhalb eines Rectangle oder Panes positionieren? AWT, Swing, JavaFX & SWT 1
C JavaFX Inhalt eines SplitPane's durch Menü-Auswahl ändern? AWT, Swing, JavaFX & SWT 13
J linken Bildausschnitt eines BufferedImage abschneiden AWT, Swing, JavaFX & SWT 4
J bestimmten Bereich eines JPanels drucken AWT, Swing, JavaFX & SWT 2
D LookAndFeel Überschreiben eines UIDelegate AWT, Swing, JavaFX & SWT 0
T Java FX Probleme beim befüllen eines Tableviews AWT, Swing, JavaFX & SWT 5
C Zeichen eines 6 -Eckes AWT, Swing, JavaFX & SWT 1
U JavaFX Wechsel der Scene nach betätigen eines Button AWT, Swing, JavaFX & SWT 2
F Screenshot eines JPanel AWT, Swing, JavaFX & SWT 3
S JavaFX TreeItem: Icon am Ende eines Eintrags anhängen AWT, Swing, JavaFX & SWT 2
D TAB Taste innerhalb eines JSpinner AWT, Swing, JavaFX & SWT 2
R Update eines Labels bei Methodenaufruf einer anderen Klasse AWT, Swing, JavaFX & SWT 9
F Swing Spaltenbreite einer Column eines JTable auslesen AWT, Swing, JavaFX & SWT 5
D Swing Komponenten Anordnung eines Panels in Verbindung eines weiteren Panels AWT, Swing, JavaFX & SWT 9
F Swing Rotation eines Bildes mit beliebigen Koordinaten um den Mittelpunkt AWT, Swing, JavaFX & SWT 3
Cromewell JavaFX Nur bestimmten Teil eines Canvas rendern und anzeigen AWT, Swing, JavaFX & SWT 2
Z Swing Variable eines Objekt aus Hashmap in JList anzeigen AWT, Swing, JavaFX & SWT 1
D Frame beim starten eines anderen Frames schließen AWT, Swing, JavaFX & SWT 2
R Hilfe beim ändern des Hintergrundes eines JFrames AWT, Swing, JavaFX & SWT 9
T Durch klicken eines Buttons Klasse wechseln AWT, Swing, JavaFX & SWT 2
E Swing Copy und Paste eines einzelnen Knoten aus einem JTree AWT, Swing, JavaFX & SWT 1
J Swing Vertikales Zeichnen eines Strings mit Java2D AWT, Swing, JavaFX & SWT 1
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
V JavaFX Teile eines Images Transparent machen AWT, Swing, JavaFX & SWT 4
I JavaFX Langes drücken eines Buttons AWT, Swing, JavaFX & SWT 4
B Swing Wie Witdh und Height eines GuiElements bekommen AWT, Swing, JavaFX & SWT 5
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
M Swing JPanel innerhalb eines Frames verschieben AWT, Swing, JavaFX & SWT 3
J JavaFX Zugriff auf FXML-Variablen eines anderen Controllers AWT, Swing, JavaFX & SWT 2
K Swing Inhalt eines JPanels lesen AWT, Swing, JavaFX & SWT 3
T Nur bestimmte Bereiche eines Fotos bearbeiten AWT, Swing, JavaFX & SWT 0
J Swing Erstellung eines User Interface AWT, Swing, JavaFX & SWT 2
S JavaFX Teil eines Bildes ausschneiden / als neues Bild nutzen AWT, Swing, JavaFX & SWT 8
R Swing Bewegung eines Graphics Objektes innerhalb eines JPanels funktioniert nicht richtig AWT, Swing, JavaFX & SWT 2
O Swing Aufbau eines JFrames AWT, Swing, JavaFX & SWT 2
A JavaFX Hilfe beim Design eines Quiz AWT, Swing, JavaFX & SWT 2
F Instanzierung einer inneren Klasse in Klasse eines anderen Packets AWT, Swing, JavaFX & SWT 3
A befüllen eines JTables mittels Methode AWT, Swing, JavaFX & SWT 10
javampir Swing Wanderung eines JFrames AWT, Swing, JavaFX & SWT 7
J Anfänger GUI Problem bei der Ausführung eines sehr einfachen Programms AWT, Swing, JavaFX & SWT 2
G Swing ComboBox: Auswahl eines Items der Liste durch Eingabe eines Buchstabens AWT, Swing, JavaFX & SWT 3
S Swing Nur den sichtbaren Bereich eines TextPane mit Inhalt darstellem AWT, Swing, JavaFX & SWT 0
I Erstellung eines kleinen Programmes AWT, Swing, JavaFX & SWT 8
H Position eines JLabel in einem JPanel AWT, Swing, JavaFX & SWT 2
J 2D-Grafik Windows Blue-Screen nach anzeigen eines Bildes in Java AWT, Swing, JavaFX & SWT 10
T Swing Einzelne Teile eines Textes färben? AWT, Swing, JavaFX & SWT 10
H Swing Probleme beim erstellen eines neuen Objektes durch einen Button AWT, Swing, JavaFX & SWT 10
HaukeG JavaFX JavaFX Resize und DragAndDrop eines Pane AWT, Swing, JavaFX & SWT 4
D 2D-Grafik Inhalt eines Graphics in anderes Graphics zeichnen.... AWT, Swing, JavaFX & SWT 3
J Denkfehler bei Aktualisierung eines GUI AWT, Swing, JavaFX & SWT 4
J Logikfehler im erstellen eines GUI AWT, Swing, JavaFX & SWT 3
F JTabbedPane mit Button zum Hinzufügen eines neuen Tabs AWT, Swing, JavaFX & SWT 6
B Event Handling Mausbewegung auch außerhalb eines JFrames registrieren AWT, Swing, JavaFX & SWT 2
U Swing Beim Bedienen eines Buttons JFrame schließen AWT, Swing, JavaFX & SWT 2
A Fehler bei erstellen eines JTextFields AWT, Swing, JavaFX & SWT 2
S Bestimmten Bereich eines Bildes im JFrame mit Scrollpane anzeigen AWT, Swing, JavaFX & SWT 0
G 2D-Grafik Umrandung eines Winkels (drawArc(..)) AWT, Swing, JavaFX & SWT 4
V Ende eines Frames abwarten AWT, Swing, JavaFX & SWT 7
T hallo, habe ein Problem mit dem pro. eines Threads AWT, Swing, JavaFX & SWT 4
S Swing Auf Änderungen eines Models in der View einer JTable reagieren AWT, Swing, JavaFX & SWT 1
U Größe eines Button im Menü ändern AWT, Swing, JavaFX & SWT 1
B Größer-/Kleinerziehen eines JFrames/JPanels erkennen AWT, Swing, JavaFX & SWT 2
B 2D-Grafik Shade eines Images AWT, Swing, JavaFX & SWT 1
A Swing bei Auswahl und klick eines JComboBox buttons die Klasse eines anderen Projekts aufrufen AWT, Swing, JavaFX & SWT 3
F Submit eines HTML-Formulars in Vaadin AWT, Swing, JavaFX & SWT 3
C Swing Durch Inhaltsänderung eines JTextfields eine Funktion aufrufen AWT, Swing, JavaFX & SWT 5
G LookAndFeel Tutorial für Erstellung eines eigenen Look And Feel AWT, Swing, JavaFX & SWT 3
M Probleme mit Verkleinern eines GUI AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben