# Jump 'n' Run Game - Blöcke?



## Maik H. (20. Jan 2014)

Hallo liebe Java-Profis, Fortgeschrittene und nette Leute hier im Forum. 
Ich bin seit heute neu hier und erhoffe mir dadurch den Umstieg von Visual Basic auf Java etwas zu erleichtern.

Ich habe mithilfe einer Tutorial-Reihe ein Jump 'n' Run Game in der Art von Super Mario programmieren wollen. Jedoch haben die seit 2 Monaten kein Video mehr hochgeladen, letzer Stand: Ich kann in einer endlosen Welt mit laufendem Hintergrund nach rechts laufen und hüpfen. (+Menü)

Jedoch möchte ich jetzt Hindernisse, auf die ich z.B. draufspringen kann in mein Spiel einbauen.
Vielleicht rede ich jetzt totalen Mist, aber als totaler Java-Anfänger habe ich mir vorstellen können immer wieder Bilder einzufügen (die einen Block darstellen) und wenn der Spieler auf so einem Bild ist, fliegt er nicht weiter nach unten auf den Boden zrück, sondern bleibt auf der Höhe bis er nicht mehr auf diesem Bild ist. Natürlich kam mir auch die Frage, ob es dafür nicht schon eine vorhandene Funktion in Java gibt. *Deswegen habe ich zusammengefasst diese Frage:*
> Gibt es für z.B. Blöcke eine Funktion als "Objekt" oder Ähnliches, wenn nein, wie muss ich dann handeln?

Ich hoffe ich habe nicht zu viel geschrieben und es ist auch im richtigem Bereich.


Mit freundlichen Grüßen,
Maik.


----------



## eMmiE (20. Jan 2014)

Ich könnte mir Blöcke gut als z.B. 10 * 10 px große Bilder vorstellen, die immer wieder an den richtigen Ort gemalt werden

Klassen, über die du dich informieren solltest:
ImageIO - Bilder einlesen
BufferedImage - Bilder als Objekte

Ich persönlich würde die Spielwelt als einen 2D-Array abspeichern, nach dem du immer wieder renderst und neu malst.

Hast du schon eine scroll Variable drin?

Auf jeden Fall aktive Kollisionsberechnung mit den Blöcken/Bildern und passiv rendern.

Gruß eMmiE


----------



## Gucky (20. Jan 2014)

Ich habe sowas immer mit Polygonen und dann der .contains() Methode gemacht.


----------



## Maik H. (20. Jan 2014)

Gucky hat gesagt.:


> Ich habe sowas immer mit Polygonen und dann der .contains() Methode gemacht.



Erstmal danke, dass du geantwortet hast! 

Da ich fast total neu bin, könntest du mir vielleicht ein kleines Beispiel geben oder vielleicht die beiden Begriffe erklären? Falls du darauf keine Lust hast, ich werde es mir trotzdem mal im Internet anschauen.


----------



## Maik H. (20. Jan 2014)

eMmiE hat gesagt.:


> Ich könnte mir Blöcke gut als z.B. 10 * 10 px große Bilder vorstellen, die immer wieder an den richtigen Ort gemalt werden
> 
> Klassen, über die du dich informieren solltest:
> ImageIO - Bilder einlesen
> ...



Vielen vielen dank! Werde ich mir anschauen!


----------



## Gucky (20. Jan 2014)

Ein Polygon ist ein zweidimesionaler Bereich, dessen Ecken durch Punkte bestimmt werden, die man mit addPoint(x,y) hinzufügt. Die Punkte werden auch in der Reihenfolge verbunden. Da muss man drauf achten. Mit .contains(x,y) wird ein boolean zurückgegeben, der angibt, ob der Punkt sich im Polygon befindet oder nicht.


----------



## Maik H. (20. Jan 2014)

Ok also kann ich jedes Bild painten und küss dann immer bei jedem Bild/block bzw bei jeder blockreihe ein Polygon machen? Und kann ich dann auch abfragen ob er auf dem Polygon ist?


----------



## Gucky (20. Jan 2014)

Entweder das oder der Boden ist ein großes Polygon. Bei kleineren Welten macht das mehr Sinn vom Speicher, verbraucht aber mehr Rechenleistung. Bei größeren Welten machst du einfach eine Klasse Block und diese Klasse lässt du dann die Blöcke zeichnen und die Polygone verwalten. Dann machst du noch eine Klasse Kollision, die eine Instanz von allen Objekten bekommt, die kollidieren können. Diese Klasse verwaltet dann die Kollisionen und gibt die Richtung zurück.
Ich bin mir sicher, dass es bessere Methoden gibt aber das ist die Beste, die ICH mir vorstellen kann.


----------

