Bewegung falsch

kaetzacoatl

Bekanntes Mitglied
Hallo,

Ich hab einen Player, der sich auf
einem 2Dimensionalen array bewegt.

Die Bewegung steuere ich so:
Java:
        public void update(GameContainer container, World w) throws SlickException {
		move(getDirection(container, w),w);
	}

	protected void move(int[] is, World w) {
		try {
			if(w.getWorld()[getWorldX(w)+is[0]][getWorldY(w)+is[1]] == null){
				w.getWorld()[getWorldX(w)][getWorldY(w)] = null;
				w.getWorld()[getWorldX(w)+is[0]][getWorldY(w)+is[1]] = this;
			}
		} catch (ArrayIndexOutOfBoundsException e) {}
	}

	protected int[] getDirection(GameContainer c, World w) {
		int dx = 0;
		if(c.getInput().isKeyDown(Input.KEY_LEFT))dx--;
		else if(c.getInput().isKeyDown(Input.KEY_RIGHT))dx++;
		int dy = 0;
		try {
			if(w.getWorld()[getWorldX(w)][getWorldY(w)+1] == null)dy++;
			else if(c.getInput().isKeyDown(Input.KEY_SPACE))dy--;
		} catch (ArrayIndexOutOfBoundsException e) {
			w.getWorld()[getWorldX(w)][getWorldY(w)] = null;
		}	
		return new int[]{dx,dy};
	}

Doch der Player bewegt sich nur, wenn ich
KEY_RIGHT drücke, und dann nach rechts oben.
Alle anderen Tasten bleiben wirkungslos.

Schonmal Danke
 

Marco13

Top Contributor
Java:
catch (ArrayIndexOutOfBoundsException e) 
{
System.out.println("Wenn du das hier lesen kannst, weißt du, warum das, was du da geschrieben hast, gröbster Unfug ist");
}
 

Marco13

Top Contributor
Ich (und vermutlich andere) kann dazu kaum was sagen. Irgendwie würde ich vermuten, dass bei sowas irgendwo Zeilen wie
Java:
if(c.getInput().isKeyDown(Input.KEY_LEFT)) player.move(-1,0);
if(c.getInput().isKeyDown(Input.KEY_DOWN)) player.move(0,1);
...
oder so vorkommen sollten, aber ich wüßte nicht, wie man die Ursache dafür erkennen sollte, dass das, was du geschrieben hast, nicht funktioniert ... vielleicht mal debug-Ausgaben reinmachen...?!
Java:
System.out.println("Links? "+c.getInput().isKeyDown(Input.KEY_LEFT));
System.out.println("Rechts? "+c.getInput().isKeyDown(Input.KEY_RIGHT));
...
...
System.out.println("Bewegung "+Arrays.toString(is));
 

kaetzacoatl

Bekanntes Mitglied
Code:
w.getWorld()[getWorldX(w)+is[0]][getWorldY(w)+is[1]] = this;
is[0] = 1
is[1] = 0
Geht aber trotzdem nach oben
 

Qler

Mitglied
Java:
        int dy = 0;
        try {
            if(w.getWorld()[getWorldX(w)][getWorldY(w)+1] == null)dy++;
            else if(c.getInput().isKeyDown(Input.KEY_SPACE))dy--;
        } catch (ArrayIndexOutOfBoundsException e) {
            w.getWorld()[getWorldX(w)][getWorldY(w)] = null;
        }

wenn ich zeile 3 richtig interpretiere, dann erhöhst du
Code:
dy
um 1, falls
Code:
w.getWorld(x, y+1) == null
ist...
Code:
 == null
vermut ich mal heist, er kann darauf laufen, dh sollte das feld ?darüber? frei sein, so wird dy auf jeden fall auf 1 gesetzt.
daran könnte es evtl liegen, dass der player nach oben läuft...

warum er nur nach rechts läuft, puh

probiers mit debug ausgaben!

vielleicht ist dein input fehlerhaft!

[EDIT]
oh, dein beitrag zu spät gesehen... das macht dann wohl meine theorie zunichte...
[/EDIT]
 

kaetzacoatl

Bekanntes Mitglied
Oh, hab ich da was falsch verstanden?
y+1 ist doch eins weiter unten oder nicht?

(0;0)(1;0)(2;0)
(0;1)(1;1)(2;1)
(0;2)(1;2)(2;2)

oder ist das falsch?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
YangLee Ausgabe von einer Bewegung bei mehrzeiligen Strings Spiele- und Multimedia-Programmierung 1
D Arrays auf Bewegung prüfen (2048) Spiele- und Multimedia-Programmierung 1
Furtano Vektoren für Bewegung für eine 2D-Simulation Spiele- und Multimedia-Programmierung 3
J Spielprogrammierung mit bewegung und kollision Spiele- und Multimedia-Programmierung 24
B Webcam Bewegung markieren Spiele- und Multimedia-Programmierung 3
R Asteroid unschöne Bewegung Spiele- und Multimedia-Programmierung 13
G Bewegung eines Grafikobjektes Spiele- und Multimedia-Programmierung 7
F Probleme bei Bewegung Spiele- und Multimedia-Programmierung 7
T Flüssige Bewegung Spiele- und Multimedia-Programmierung 7
U Freie Bewegung Realisierung Spiele- und Multimedia-Programmierung 13
M Bomberman: Bewegung der Spielfigur in windows viel schneller Spiele- und Multimedia-Programmierung 12
F Brauche Hilfe bei Bewegung eines Rechtecks [Applet] Spiele- und Multimedia-Programmierung 5
F Bewegung/Kollision von Objekten auf Tastendruck Spiele- und Multimedia-Programmierung 6
O Libgdx - Wiedergabe von Bildschirmgröße ist falsch Spiele- und Multimedia-Programmierung 0
A Spielball bewegt sich nicht richtig, prallt falsch ab Spiele- und Multimedia-Programmierung 7
B Game of Life: Was mache ich falsch? Spiele- und Multimedia-Programmierung 3
O OpenGL - Texture falsch herum Spiele- und Multimedia-Programmierung 3
Creylon [LWJGL] Textur wird falsch angezeigt Spiele- und Multimedia-Programmierung 12
M Karte wird falsch gezeichnet Spiele- und Multimedia-Programmierung 9
H image.setRGB() zeichnet falsch Spiele- und Multimedia-Programmierung 3
R Tutorial falsch?! Spiele- und Multimedia-Programmierung 22

Ähnliche Java Themen


Oben