mario: fullscreen und zurück

Hi!

ich bin gerade dabei Java zu lernen und hab dabei n nettes tetris-spiel gefunden, an welchem ich gerade n paar sachen probiere (umschreiben, erweitern, etc):
http://www.woogley.net/j4k/Tetris4K/T.java (application!)
das hab ich mir mal angeschaut (eben um was zu lernen - und eigentlich versteh ich den großteil ohne probleme) und auch gleich mal in eclipse ausgeführt - das ding startet dabei auch gleich in fullscreen, was ja an sich nix schlimmes is... nur nervt dabei dass ich das ding über esc zwar beenden kann, aber danach seh ich vom desktop nur noch einen 640*480 (=auflösung des spieles) großen ausschnitt...

lässt sich sowas irgendwie in java verhindern, oder liegt das an windows (win 2000 prof sp4)

  1. hallo,

    http://www.woogley.net/j4k/Tetris4K/T.java (application!)

    Nein, das ist noch keine Applikation, aber der Source dafür. Das gute Stück produziert nach dem Kompilieren bei mir Laufzeitfehler, und ich habe jetzt keine Lust, da noch genauer nachzuschauen.

    nur nervt dabei dass ich das ding über esc zwar beenden kann, aber danach seh ich vom desktop nur noch einen 640*480 (=auflösung des spieles) großen ausschnitt...

    Schau dir mal die Zeilen 334 und 335 in diesem Code an, da müßte dein "Problem" stecken.

    lässt sich sowas irgendwie in java verhindern, oder liegt das an windows (win 2000 prof sp4)

    Windows ist diesmal sicher nicht dran schuld. Du könntest allenfalls mal schauen, welche Java-Version du installiert hast. Alles andre sollte sich aus dem eingesetzten Code erklären lassen.

    Grüße aus Berlin

    Christoph S.

    1. hallo,

      http://www.woogley.net/j4k/Tetris4K/T.java (application!)

      Nein, das ist noch keine Applikation, aber der Source dafür. Das gute Stück produziert nach dem Kompilieren bei mir Laufzeitfehler, und ich habe jetzt keine Lust, da noch genauer nachzuschauen.

      http://www.woogley.net/j4k/Tetris4K/
      da gibts die tetris.jar und runfullscreen.bat

      aber jetzt mal ne frage (wie gesagt, ich bin noch net soo der java-profi):
      wieso läuft der spaß wenn ich es von eclipse direkt aus starte, aber bei dir gibts n runtime-error? (meine java-karriere beschränkte sich bisher auf das starten von applets und applikationen aus eben jenem programm)
      und wieso klappt das dann dafür mit der bat- & jar-datei?

      (jaja, sind wahrscheinlich dumme fragen, aber ne erklärung fänd ich ganz nett (erst recht statt des verweise auf irgendwelche tutorials))

      1. hallo,

        http://www.woogley.net/j4k/Tetris4K/
        da gibts die tetris.jar und runfullscreen.bat

        Aha. Diese tetris.jar ist offenbar essentiell, so genau hatte ich in den Source offenbar nicht reingeschaut.

        wieso läuft der spaß wenn ich es von eclipse direkt aus starte

        Das weiß ich nicht, eclipse benutze ich nicht.

        aber bei dir gibts n runtime-error?

        Ich hatte die jar nicht. Wenn ich sie ins gleiche Verzeichnis lege, geht alles problemlos, allerdings habe ich diese Geschichte mit dem "fullscreen" nicht. Versuche mal, das Ganze als Applet in eine HTML-Seite zu stecken, dann sollte sich diese Frage erübrigen.

        Grüße aus Berlin

        Christoph S.

  2. Hallo,

    das hab ich mir mal angeschaut (eben um was zu lernen - und eigentlich versteh ich den großteil ohne probleme) und auch gleich mal in eclipse ausgeführt - das ding startet dabei auch gleich in fullscreen, was ja an sich nix schlimmes is... nur nervt dabei

    Schau Dir die Methoden

    public void f()
    und
    public void w()

    an und suche im Constructor des Objektes T, wann welche dieser Methoden aufgerufen wird. Du musst erreichen, dass w() und nicht f() aufgerufen wird.

    viele Grüße

    Axel

    1. hallo Axel,

      Schau Dir die Methoden
      public void f()

      Da sind es konkret die Zeilen 335 und 336, die ich vorhin schon angesprochen habe

      und
      public void w()

      Da geht es um die Zeilen 342 ff.

      an und suche im Constructor des Objektes T, wann welche dieser Methoden aufgerufen wird. Du musst erreichen, dass w() und nicht f() aufgerufen wird.

      Korrekt. Mir ist jetzt beim nochmaligen Durchlesen des OP noch etwas aufgefallen:

      nur nervt dabei dass ich das ding über esc zwar beenden kann, aber danach seh ich vom desktop nur noch einen 640*480 (=auflösung des spieles) großen ausschnitt...

      Dieses "danach" irritiert (mich). Es könnte darauf hindeuten, daß mario beim Ausprobieren irgendetwas in Gang gesetzt hat, wodurch nicht alle Prozesse beim "Verlassen" mit Esc beendet werden. Außerdem weiß ich nicht genau, wie man eine JAR (die das Teil offenbar haben möchte) wieder so weit aufdröselt, daß sie lesbar wird.

      Aufschluß sollte aber die "Sun Java Console" geben, die es nach einer Java-Installation auf Win2k auf jeden Fall gibt.

      Aber gibs mal zu: das Ding selber ist eine durchaus interessante Kleinigkeit. Man kann es von http://www.woogley.net/j4k/Tetris4K/appletVersion/Tetris.html aus direkt aufrufen und mal so nebenbei durchspielen. Der "Erfinder" hat da etwas gebaut, was sich als (nostalgischer) Zeitvertreib zwischendurch gut eignet ;-)

      Grüße aus Berlin

      Christoph S.

  3. hi!

    wenn es euch interessiert, dann habe ich hier die lösung meines problems (welche ich ohne eure "denkanstöße" trotzdem nicht geschafft hätte - vielen dank dafür!)

    if(e.getKeyCode() == KeyEvent.VK_ESCAPE) {
       try {
        (new FileOutputStream(a)).write((b + " " + this.e).getBytes());
       }
       catch(Exception e2) { }
       System.exit(0);
      }

    wurde einfach zu

    if(e.getKeyCode() == KeyEvent.VK_ESCAPE) {
       w();
       System.exit(0);
      }

    und schon hats funktioniert!