# Spiel ruckelt



## MOEP_BIBER (29. Mai 2011)

Hey leute,

ich schreib seit ca einer Woche an meinem ersten Java-Jump 'n' Run-Game und hab noch nicht sehr viel Erfahrung mit Java.
Ich hab ohne Tutorial einfach angefangen und zu Beginn einfach Variablen wie x-Velocity, Y-Velocity, X, Y, right, left usw. einfach als public static deklariert und diese dann dadurch aus anderen Klassen ändern können.
Da ich aber heute mich ein bisschen weiter eingelesen hab und gesehen hab, dass man eine Entity-Klasse braucht, um mehr als nur den Spieler ins Game zu implementieren.
Also hab ich alle static Variablen raus und ne Entity-Klasse mit lauter setter und getter Methoden geschrieben und auch alles andere angepasst (hat verdammt lange gedauert da ich mit BlueJ programmier^^).

Seit diesen Änderungen ruckelt das Spiel komischerweise.

Vielleicht kann jemand über den Code drüberschaun und mir sagen wo das Problem liegt.
Ich hab grad wenig Zeit, aber ich werd den Code später noch mit mehreren Kommentaren versehen, um das Verständnis zu erleichten.

Ihr könnt mich gerne auf weitere grobe Fehler hinweisen.
Ist wie gesagt mein erstes Game und bin alles andere als erfahren also flamed mich zu :toll:

MfG Biber

ps: mit Enter kann man die position des Bibers resetten


----------



## Volvagia (29. Mai 2011)

MOEP_BIBER hat gesagt.:


> (hat verdammt lange gedauert da ich mit BlueJ programmier^^).


Eclipse, Netbean, da gibts IDEs mit so schicken Namen. :noe:
Aber bei mir ruckelt da garnichts, der Biber bewegt sich nur seeeeeehr unrealisitisch und läuft, als wäre der Boden vereist.


----------



## MOEP_BIBER (29. Mai 2011)

Ich kenn Eclipse usw., aber ich möchte in der Anfangszeit mit BlueJ programmiern damit ich "sauberes" programmieren lern =)

Das Problem ist eben, dass dieser seeeehr unrealistisch läuft.
Vorher ist er normal gelaufen und nicht so abgehackt.

Ich probier grad nochmal was aus und geb dann Feedback.


----------



## Marco13 (29. Mai 2011)

"damit ich "sauberes" programmieren lern"... ?
Das hat mit der IDE nur bedingt zu tun  Aber zumindest einige Dinge scheinen bei BlueJ erzwungen zu werden: Kein Zugriff auf Fields anderer Klassen und so... aber eigentlich sollte man Fields private machen, und vor sowas wie
if(player.isGround()==true)
beschützt einen keine IDE, solange sie nicht ein PDE oder FindBugs-Plugin hat 

Ansonsten: Ich merke auch, dass er sehr... "inhomogen-abgehackt" läuft. Schwer, da "DIE" Ursache durch draufschauen zu benennen, aber... es sind relativ viele Threads mit dem relativ kurzen (und willkürlichen) sleep(15)... hm - müßte man mal genauer schauen.


----------



## Kr0e (30. Mai 2011)

MOEP_BIBER hat gesagt.:


> Ich kenn Eclipse usw., aber ich möchte in der Anfangszeit mit BlueJ programmiern damit ich "sauberes" programmieren lern =)



Wenn du wüsstest, wie dein Code aussieht, nachdem die JVM ihn optimiert hat  Den würdeste vermutlcih kaum wiedererkennen 

nimm Eclipse oder Netbeans.. Die zu beherrschen ist Voraussetzung für jeden Java-Job würde ich jetzt einfach mal behaupten. Man wird durch IDEs höchstens effizienter aber nicht schludriger... Ganz im Gegenteil! Netbeans hat z.B. die Format-Funktion wonach dein Code nach einem gewissen Schema automatisch formatiert wird... Ist schwer damit unsauber zu programmieren  Und zu schlechten Algorithmen verführen dich Eclipse/netbeans auch nicht


----------



## Marco13 (30. Mai 2011)

Naja, manchmal wird auf Sachen wie BlueJ geschimpft - ich kann mir aber schon vorstellen, dass das zur Vermittlung bestimmter Begriffe und Ansätze seine Existenzberechtigung hat. (Ich hab' es selbst nie verwendet, aber das Tutorial sieht ganze vernünftig aus - man muss damit rechnen, dass nicht jeder, der Java lernen will, ein Hardcore-Geek ist...)


----------



## MOEP_BIBER (1. Jun 2011)

Hab den Fehler gefunden:

Im oben angefügten Code wird 2 mal gerundet.
Einmal in Entity.setX() und einmal in getRoundX();
einmal runden rausnehmen und es funzt wieder normal.

offtopic: was ist an if(player.isGround() == true)
so falsch?
der Methodenname? die Methode heißt jetzt player.getGround();
Oder allgemein, dass man ne boolean hat ob der Spieler am Boden steht?
Oder was ist daran falsch?


----------



## s4ke (1. Jun 2011)

Marco13 hat gesagt.:


> Naja, manchmal wird auf Sachen wie BlueJ geschimpft - ich kann mir aber schon vorstellen, dass das zur Vermittlung bestimmter Begriffe und Ansätze seine Existenzberechtigung hat. (Ich hab' es selbst nie verwendet, aber das Tutorial sieht ganze vernünftig aus - man muss damit rechnen, dass nicht jeder, der Java lernen will, ein Hardcore-Geek ist...)



Wurde bei uns in der Schule verwendet und hilft sehr beim Lernen, weil man da erst mal von der main Methode losgelöst ist. Und man so selber aufrufen kann, wann immer man will.


----------



## the GINI the M (1. Jun 2011)

MOEP_BIBER hat gesagt.:


> offtopic: was ist an if(player.isGround() == true)
> so falsch?




Es ist immerhin besser als

```
if ( ( player.isGround() == true ) == true )
```

Nein, es ist einfach doppelt gemoppelt. "Richtig" wäre

```
if ( player.isGround() )
```


----------

