# Grundlagen für ein Jump&Run



## Nerethar (23. Feb 2011)

Hiho Leute, 

ich weiß nicht so ganz ob es hierher gehört, oder ob es eigentlich ein etwas fortgeschrittenes Problem ist, aber ich erkläre es am besten mal 

Ich möchte gerne mit Java ein simples Jump&Run programmieren, habe aber mit folgendem ein Problem:







Gut, nehmen wir an, orange ist der beim Start sichtbare Bereich, grün ist die Figur und der blaue ist der noch nicht sichtbare Bereich.

Ich möchte wenn die Figur sich nach Rechts bewegt sich automatisch der orange Bereich mitbewegt, habe allerdings keinerlei Ahnung wie ich das realisieren kann.

Ich hab schon überlegt ein gigantisches Bild das den Hintergrund repräsentatiert zu nehmen und anstatt den sichtbaren Bereich zu bewegen einfach die Position des Bildes zu bewegen.

Dies ist allerdings meiner Meinung nach eine sehr unhübsche Lösung, weswegen ich gerne hier nach Ideen/Lösungen fragen würde.

MfG
Nerethar


----------



## SlaterB (23. Feb 2011)

wenn du gar keine Ideen hast, dann schaue dir vorher vielleicht andere Spiele oder Tutorials an
http://www.java-forum.org/spiele-multimedia-programmierung/6529-tutorials.html

jedenfalls nicht gerade eine Frage für den Anfänger-Bereich, verschoben


----------



## Nerethar (23. Feb 2011)

Vielen Dank, das Tutorial ist schonmal eine gigantische Hilfe, das mir so schnell auch erstmal andere Probleme wie Kollision und ähnliches erklärt. Vielen vielen Dank, wenn ich von Arbeit wiederkomme werd ichs mir mal komplett durchlesen =)


----------



## Cola_Colin (23. Feb 2011)

Ich hab das in einem Projekt von mir mit Graphics2D.Translate() gelöst.

Der Vorgang ist dieser:
1. Wir haben eine Liste von Objekte, aus denen sich die Spielwelt aufbaut.
2. Jedes Objekt hat ein x und y, weiß also wo es ist.
3. Wir haben eine Kameraposition
4. Beim Zeichnen werden Objekte bei objekt.x + kamera.x und objekt.y + kamera.y gezeichnet, was über ein entsprechendes
translate des Graphics-Kontextes erreicht wird. 
Beim Zeichnen von GUI-Elementen muss dies natürlich wieder rückgängig gemacht werden, damit die
nicht verschoben werden.
btw kann man über die Funktion scale() auch einen Zoom realisieren.

Das so die Grundlage.
Will man nun eine Figur fokussieren, so muss man die Kamera immer so verschieben, dass die Figur z.B. in der Mitte des Bildschirmes bleibt.
Des Weiteren braucht es nun natürlich Methoden, um Bildschirmkoordinaten(die man von Mauseingaben erhält) in Spielfeldkoordinaten umzurechnen und umgekehrt.
Auch kann es sich lohnen, vor dem Zeichnen zu testen, ob das jeweilige Objekt überhaupt sichtbar ist


----------

