# 2D Spiel mir drehbaren Bildern (Sprites) programmieren



## PaulK (1. Apr 2007)

Hallo zusammen!

Ich habe vor, mit Java ein kleines 2D-Spiel zu programmieren. Es soll komplett in der Vogelperspektive (gerade von oben gesehen) gehalten werden.
Ich habe schon etwas Spieleprogrammiererfahrung von VisualBasic in Kombination mit DirectX8 (bisher nur 2D). Da war es sehr einfach, Sprites in einem beliebigen Winkel zu drehen. Diese Möglichkeit vermisse ich in Java sehr! 
Ich habe schon sehr viel gegoogelt und mir auch viele 2D-Engines angesehen (von denen keine Sprites drehen konnte). Ich will es auf jeden Fall vermeiden, das ganze in 3D (sprich OpenGL) oder mit "vorgedrehten" Bildern zu programmieren (damit mein ich, die Bilder mittels EBV zu drehen und dann die vers. Drehstufen in ein Bitmap einzufügen + im Spiel die jeweilige Stufe zu nutzen).

Kennt jemand eine Möglichkeit/Engine, mit der man in Java ein 2D-Spiel mit drehbaren Sprites programmieren kann?
Oder alternativ: Kann man DirectX8 in Java verwenden (spricht natürlich gegen die Plattformunabhängigkeit, die aber nicht notwendig ist)? Wenn ja: wie?

Grüße PaulK


----------



## Wildcard (1. Apr 2007)

Du kannst einfach das Graphics Objekt das du zum Zeichnen verwendest drehen.


----------



## PaulK (1. Apr 2007)

Aber kann man nicht immer nur ein Graphics-Objekt zeichnen? So dass praktisch der gesamte Screen gedreht würde?
Ich habe vor, eine Map (Straßenkarte -> Stadt von oben) als Hintergrund zu rendern um dann darauf vers. Autos fahren zu lassen (als Sprites).

PK


----------



## Wildcard (1. Apr 2007)

Du kannst Graphics Objekte auch klonen.
Ebenso kann man ein Graphics Objekt Stack-Artig verwenden oder einfach drehen und danach zurückdrehen.
Da ich vermute das die Autos alle einen anderen Winkel haben musst du doch eh öfter drehen.
Sind deine Autos von JComponent abgeleitet oder gibst du ihnen ein Graphics Objekt?
Falls ja:
dann hast du ja kein Problem, jedes Auto kann sein Graphics Objekt nach belieben drehen
Falls nein:
entweder du erzeugst jedem Auto ein eigenes Graphics, oder deine Autos müssen ihr Graphics Objekt nach Benutzung zurücksetzen.


----------



## PaulK (1. Apr 2007)

Das Programm befindet sich noch in der Planung.
Wenn ich jedem Auto ein eigenes Graphics-Objekt gebe (welches ich dann ja beliebig drehen kann), wie kann ich dann alle Autos gemeinsam rendern (auf EIN Bild)? Könnte ich das mit einem Array von Graphics machen (public void paint(Graphics g[]))?

Und nebenbei: Wie sieht es mit DirectX und Java aus?

PK


----------



## Wildcard (1. Apr 2007)

Deine Autos sollten Objekte sein die einen Parent haben.
Der Parent speichert sich die Autos in einer Liste oder einem Set.
Wenn sich der Parent zeichnet iteriert er über die Liste und fordert alle Autos zum Zeichnen auf.
Die konkrete Implementierung hängt dann davon ab ob du die Autos von JComponent erben lässt oder nicht.

Für was brauchst du DirectX?
Wenn du 2D machen willst ist's völlig unnötig, wenn du 3D machen willst nimm Java3D oder eine darauf aufgesetzte Lib.


----------



## PaulK (2. Apr 2007)

Ich sage ja nicht, dass ich DirectX unbedingt brauche, weil es nicht anders geht. Aber da ich damit bereits Erfahrungen gesammelt habe, wollte ich wissen, ob es möglich ist, DirectX8 in Java zu verweden.

PK


----------



## Wildcard (2. Apr 2007)

Ist eventuell über eine externe API möglich, aber solcher proprietärer Mist und Java passt meistens nicht so toll zusammen.


----------



## Evil-Devil (3. Apr 2007)

DirectX ist nur in Java 3D verfügbar und dann auch nur als Darstellungslayer. Direkten DX Zugriff hast du dann trotzdem keinen...eventuell bekommt LWJGL mal ein DX Binding...wenn jemand das in Angriff nimmt...


----------



## PaulK (3. Apr 2007)

Danke für die Infos!

Ich hab mein Problem jetz mit gedrehten Graphics-Objekten gelöst.

PK


----------



## Gast (16. Mai 2007)

Hallo,
ist es nicht ziemlich ressourcenaufwändig, wenn jedes objekt sein eigenes graphics objekt hat?


----------

