# Java Game Waypoint System



## BraunBerry (29. Jul 2016)

Hallo Community,
Ich arbeite seit längerem an einem Java Spiel. Das System vereinfacht: Ein Raumschiff (zentriert in der Mitte des Frames) fliegt durch den Weltraum. Es gibt Planeten, etc. Es gibt eine Minimap auf der man Planeten markieren kann und Waypoints setzen kann. War der Fall, dass sich das ausgewählte Objekt außerhalb des Bildrandes befand, so wurde der Waypoint einfach am Rand gezeichnet, so dass man auf das ziel zufliegen konnte.


```
if (Waypoint_X < 0){
WaypointDraw_X = 0;
}else if (Waypoint_X > Application.WIDTH){
WaypointDraw_X = (Application.WIDTH - (int) (16 * Application.DIMENSION));
}
if (Waypoint_Y < 0){
WaypointDraw_Y = 0;
}else if (Waypoint_Y > Application.HEIGHT){
WaypointDraw_Y = (Application.HEIGHT - (int) (16 * Application.DIMENSION));
}
```

Dies hat alles einwandfrei funktioniert bis ich die variable DIMENSION eingeführt habe. Da ich eine Fenstergröße von 1920x1200 px festgelegt habe und andere Leute möglicherweise einen kleineren Monitor haben musste ich die Größe veränderbar machen. Das ganze funktioniert so: Die DIMENSION (float (einstellbar von 0.6F - 1.4F)) Wird mit der Standardfenstergröße und mit der von allen Images multipliziert um alle Objekte einheitlich zu verkleinern/vergrößern. Das Problem: Bei veränderter Größe (also nicht bei DIMENSION = 1.0F) hat der Waypoint bereits sein Maximum erreicht, auch wenn er noch garnicht am Bildrand ist.
Als Alternative könnte ich mir auch Vorstellen, ein Dreieck zu zeichnen das sich im Kreis um mein Raumschiff bewegen kann und immer auf dem Waypoint zeigt.

Wenn ihr für diese Dinge Lösungen oder Tutorials kennt wäre ich extrem dankbar.

Ich benutze:
- Eclipse
- Java 8

lg BraunBerry


----------



## thecain (29. Jul 2016)

Du musst in der else if Condition auch mit der Dimension multiplizieren


----------



## BraunBerry (29. Jul 2016)

Ich hab das mal probiert. Hat aber leider nichts genützt. In der Application Klasse wird bei der Definition von WIDTH & HEIGHT schon die Standardgröße mit der Dimension verrrechnet.

public static float DIMENSION = 0.8F;
public static int WIDTH = (int) (1910 * DIMENSION), HEIGHT = (int) (1100 * DIMENSION);


----------



## BraunBerry (29. Jul 2016)

Okay um der Nachwelt noch einen Lösungsvorschlag anzubieten:

Ich habe das Problem jetzt "umgangen", in dem ich einfach ein Lineshape (g.drawLine) von den Ursprungskoordinaten des Waypoints bis zu meinem Raumschiff gezeichnet habe. Ich muss sagen, es sieht garnicht mal so übel aus.


----------

