[HILFE] Mehrere Probleme bei 2D Game Grundgerüst [JAVA]

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • [HILFE] Mehrere Probleme bei 2D Game Grundgerüst [JAVA]

    Anzeige
    Hey,

    ich weiß nicht ganz genau wo mein Fehler liegt. Ich habe angefangen das Grundgerüst für ein 2D-Game zu entwerfen. Nun bin ich an einem Punkt angelangt wo ich nicht mehr weiter weiß. Eigentlich sollte mir mein Programm in der Konsole von Eclipse nun die Ticks und die FPS anzeigen und im JFrame sollte ein Sprite zu sehen sein. Wäre cool wenn sich jemand von euch den Code mal anschauen könnte, wäre ich echt dankbar drum ;)

    Source-Code

    MfG Yoshi
  • Also irgendwas läuft da noch unrund. Ich bekomme ums Verrecken diese Exception nicht weg:

    Quellcode

    1. Exception in thread "Thread-0" java.lang.IllegalArgumentException: input == null!
    2. at javax.imageio.ImageIO.read(ImageIO.java:1348)
    3. at de.yoshi.game.gfx.SpriteSheet.<init>(SpriteSheet.java:20)
    4. at de.yoshi.game.Game.init(Game.java:55)
    5. at de.yoshi.game.Game.run(Game.java:78)
    6. at java.lang.Thread.run(Thread.java:744)


    Da sollte eigentlich die PNG-Datei geladen werden.

    Allerdings hab ich auch ehrlich gesagt nicht besonders viel Ahnung von Java und grob gesagt keine Ahnung, was

    Quellcode

    1. SpriteSheet.class.getResourceAsStream(path)

    jetzt konkret macht. Eine statische Methode scheint das ja irgendwie nicht zu sein.

    Naja, init() und render() auskommentiert, war es dann ein Leichtes, herauszufinden, wo das Ding stehen bleibt:

    Quellcode

    1. while (delta >=1){
    2. ticks++;
    3. tick();
    4. delta -= 1;
    5. shouldRender = true;
    6. }

    Wenn man sich den Wert von Delta vor der Schleife mal auf der Konsole ausgeben lässt, sollte etwas auffallen: Delta ist groß. Um genau zu sein:

    Quellcode

    1. 3.9913199580547886E12

    Dass das in diesem Leben nicht mehr ≤1 wird, sollte klar sein. Irgendwo rechnest du da also ziemlichen Blödsinn aus ;)

    Ab davon würde es die Leserlichkeit ungemein erhöhen, für Double-Konstanten "1.0" statt einfach "1" zu schreiben, spart zudem nen impliziten Type-Cast, den Java eventuell nicht wegoptimieren darf.
  • Es ist wie VikingGe schon gesagt hat. Die variable Delta ist zu groß.

    Dies ist das erste Problem. Ich hatte das mal ganz schnell gefixt, indem ich delta einfach mal den Wert 5 gegeben habe, dann kommt das nächste Problem.
    Es knallt dann in zeile 54 in der render Method von Screen. Die Methode versteht kein Mensch!

    Quellcode wird um vielfaches öfter gelesen, als es verändert wird. Also musst du dafür sorgen, das dieser auch schnell verständlich ist. Anderfalls sitzt du schon nach einer Woche und weißt nicht mehr was hier passiert oder warum es diese gibt.

    Ich weiß nicht mal was die einzelnen Klassen für eine Aufgabe haben. Was machen also die einzelnen Klassen?
    Was macht die Klasse Screen?
    Was macht die Klasse SpriteSheet?
    Was machen die Methoden der einzelnen Klassen? Wofür sind sie da?