FullScreenExlusiveMode HILFE!!!

Status
Nicht offen für weitere Antworten.

radiac

Bekanntes Mitglied
Hallo Leute,


Habe ein Problem...

Ich möchte mein Spiel mit FullExclusiveMode laufen lassen.

Jedoch klappt das nicht, wenn ich meine Grafiken laden möchte. Strings usw... werden aber einwandfrei angezeigt. Hier mal der Code der Probleme macht.

Java:
public Graphics gScr;
   ...


 protected void screenUpdate()
  // use active rendering
  { try {
      gScr = bufferStrategy.getDrawGraphics();
      gameRender(gScr);
      gScr.dispose();
      if (!bufferStrategy.contentsLost())
        bufferStrategy.show();
      else
        System.out.println("Contents Lost");
      // Sync the display on some systems.
      // (on Linux, this fixes event queue problems)
      Toolkit.getDefaultToolkit().sync();
    }
    catch (Exception e)
    { e.printStackTrace();
      running = false;
    }
  }  // end of screenUpdate()

Da sich dieser Code in einer abstrakten Klasse befindet, muss ich Ihn in meiner Main.Klasse die Methode gameRender(); ausführen.

Hier die gameRender() Methode:
Java:
protected void gameRender(Graphics gScr) {

    if(isStarted()){
    map.drawVisibleMap(gScr);  <-- ScrollMAP
    Tier.drawObjects(gScr);   <--- Objekt
    }else{
    gScr.setColor(Color.black);
    gScr.drawString("Press Enter!", 400, 300);
    }
    gScr.setColor(Color.red);
    gScr.drawString(Long.toString(fps),20,20);
    }

Aber wenn ich das ausführe, bekomme ich folgende Exception:
java.lang.NullPointerException
at Main.ScrollGame.gameRender(ScrollGame.java:174)
at Game.GamePanel.screenUpdate(GamePanel.java:209)
at Game.GamePanel.run(GamePanel.java:200)
at java.lang.Thread.run(Thread.java:619)


Lasse ich aber die Methode gameRender(); anstatt der oberen laden, funktioniert alles:
Java:
@Override
    protected void gameRender(Graphics gScr) {
    // clear the background
    gScr.setColor(Color.white);
    gScr.fillRect (0, 0, pWidth, pHeight);
    gScr.setFont(font);
    gScr.setColor(Color.black);
    gScr.drawString(Long.toString(fps),400,300);
    }

Ich finde einfach nicht den Fehler... kann mir jemand Helfen???

Danke sehr! :toll:
 
S

Spacerat

Gast
Kann eigentlich nur an "map" oder "Tier" liegen... eines oder beides ist null. Hast du 'ne IDE? Einfach mal 'nen Breakpoint in besagter Zeile 174 setzen und debuggen.
 

radiac

Bekanntes Mitglied
Okay, ich weis jetzt wo der Fehler ist:

Java:
 display = new Rectangle2D.Double(0,0,parent.getWidth(),parent.getHeight());

display soll wie oben diese Werte aufnehmen.
parent ist die main Klasse mit der ich mein Java Programm starten möchte.
Dort hat mein Programm, bevor ich es auf FSEM umgebaut habe die Werte für getWidth() und getHeight() hergenommen.
Da ich jetzt aber diese Werte in einer abstrakten Klasse zuweise, bekommt die Main Methode keine Werte mehr zurück, da sich die Größezuweisung des Panels in der Abstrakten Klasse (ScrollGame abspielt. Hier die Zuweisung in der Abstrakten Klasse.
Java:
private void initFullScreen()
  {
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    gd = ge.getDefaultScreenDevice();

    setUndecorated(true);
    setIgnoreRepaint(true);
    setResizable(false);

    if (!gd.isFullScreenSupported()) {
      System.out.println("Full-screen exclusive mode not supported");
      System.exit(0);
    }
    gd.setFullScreenWindow(this); // switch on full-screen exclusive mode

    setDisplayMode(800, 600, 32);   // WERT ZUWEISUNG FÜR GRÖßE DES PANELS!!!!
    //setDisplayMode(1024, 768, 32);

    pWidth = getBounds().width;
    pHeight = getBounds().height;

    setBufferStrategy();
  }  // end of initFullScreen()

...

private void setDisplayMode(int width, int height, int bitDepth)
  // attempt to set the display mode to the given width, height, and bit depth
  {
    if (!gd.isDisplayChangeSupported()) {
      return;
    }

      if (!isDisplayModeAvailable(width, height, bitDepth)) {
      return;
      }

      DisplayMode dm = new DisplayMode(width, height, bitDepth,
      DisplayMode.REFRESH_RATE_UNKNOWN);   // any refresh rate
      try {
      gd.setDisplayMode(dm);
      }
      catch (IllegalArgumentException e)
      {}

      try {  // sleep to give time for the display to be changed
      Thread.sleep(1000);  // 1 sec
      }
      catch(InterruptedException ex){}
  }  // end of setDisplayMode()



    private boolean isDisplayModeAvailable(int width, int height, int bitDepth)

    { DisplayMode[] modes = gd.getDisplayModes();


    for(int i = 0; i < modes.length; i++) {
    if (width == modes[i].getWidth() && height == modes[i].getHeight() &&
    bitDepth == modes[i].getBitDepth())
    return true;
    }
    return false;
    }  // end of isDisplayModeAvailable()*/

Hier werden die Werte in Zeile 16 für das Panel (Fenster) zugewiesen. Auch kann ich die Werte aus pWidht, und pHeight ausrufen lassen.... Diese werden auch als Strings in meinem Programm angezeigt.
Java:
gScr.drawString("Abmessungen"+pWidth+"/"+pHeight, 100, 100);

Da habe ich mir gedacht, das ich einfach anstatt die parent.getHeight, die pHeight angebe usw... jedoch scheint das dort garnicht durchzukommen...

Wie kann ich es schaffen, das trotzdem in der eigentlichen parent class Main eine größe übergeben wird???

So sieht sie momentan aus:
Java:
public static void main(String[] args){
		new ScrollGame();
	}

	   public ScrollGame(){
            super();
    }

Und so sah sie früher aus:

Java:
public static void main(String[] args){
		new ScrollGame(800,600); //<--- parent.getWidth() hat hier funktioniert!!!!
	}

	   public ScrollGame(int w, int h){
            super(w,h);
    }

In Zeile 2 wurden dann die Werte für das display Objekt rausgeholt. Jetzt geht das nicht mehr. Ich will einfach die 800x600 extra drin stehen haben... oder die Möglichkeit haben, das die getWidth() für das display Objekt gefüllt sind.

offiziell sagt mir der debugger das hier null ist:
Java:
public boolean intersects(Rectangle2D r) {
	return intersects(r.getX(), r.getY(), r.getWidth(), r.getHeight());
    }

Java:
public boolean intersects(double x, double y, double w, double h) {
	if (isEmpty() || w <= 0 || h <= 0) {
	    return false;
	}
	double x0 = getX();
	double y0 = getY();
	return (x + w > x0 &&
		y + h > y0 &&
		x < x0 + getWidth() &&
		y < y0 + getHeight());

Ich bekomms auf jedenfall nicht hin ohne alles umzuwerfen... vielleicht weis einer von euch wie das geht. Aber bedenkt das ich kein Profi bin xD. Ist mein erstes Spiel :bae:
Aber en bissl blicken tu ich es, sonst wäre ich nicht so weit :). Ich denke auch, das es ein mini Fehler ist, und mir nur das know How fehlt das zu blicken wie der wegzumachen ist. :rtfm:
 
Zuletzt bearbeitet:
S

Spacerat

Gast
Ein Fullscreen-Frame hat standardmässig Höhe und Breite der aktuell eingestellten Bildschirmgrösse. die Werte sollten mit "getSize()" usw. auch gelesen werden können. Soweit ich weiss kann die Grösse im FSEM jedoch nicht explizit gesetzt werden. Um die Fullscreen-Grösse zu ändern muss die Klasse DisplayMode verwendet werden. Hab' mich mit der FSEM-Problematik aber auch nur recht kurz befasst und das ist auch schon länger her.
 

radiac

Bekanntes Mitglied
Ja, das hab ich eben auch gemerkt, als ich mir das mal hab auslesen lassen...


aber wieso bekomme ich dann eine Exception das etwas keinen Wert hat obwohl es doch dran steht?

dadruch, das ich dachte, das die Elternklasse ScrollGame(); keine Screen Werte zugewiesen bekommt, hätte ich das Problem gelöst... aber Pustekuchen...
Es fehlt angeblich immer noch was...

folgendes hat die Exception trotz angegebener parent.getWidht(), usw... ausgegeben:

public boolean intersects(double x, double y, double w, double h) {
if (isEmpty() || w <= 0 || h <= 0) {
return false;
}
double x0 = getX();
double y0 = getY();
return (x + w > x0 &&
y + h > y0 &&
x < x0 + getWidth() &&
y < y0 + getHeight());
}

und die Rot angezeigten Werte seien kleiner als 0???
AUf jedenfall werden diese beanstandet....

???:L:-(


Nachtrag: Hab mal ein Screenshot vom Frame gemacht.
Der erste Wert ist der offiziell eingestellte Wert in der abstracten klasse GamePanel
Und der 2te Wert ist der, der automatisch übernommen wird von der GamePanel zur ScrollGame(main) Methode... die ich via getWidth usw... ausrufen lasse über einen String...

Und das gleiche wird ja auch ausgerufen in der MapDisplay(); über parent.getWidth();

ScrollGame = parent;


HILFE HILFE HILFE!!! ;(

:rtfm:
 
Zuletzt bearbeitet:
S

Spacerat

Gast
Wofür ist ist dieses rumhantieren mit der Bildschirmgrösse eigentlich nötig? Normalerweise genügt es, dem Frame einen Container (Panel) hinzuzufügen. dieser bekommt vom Standardlayout des Frames definitiv immer die Grösse und Position der Frame-Insets. Das heisst, das er bei "setUndecorated(true)" ebenfalls die Grösse des Screens an Position (0, 0) bekommt. Könntest du vllt. den Quellcode mal komplett posten (z.B. als Archiv)) Dann kann ich mir es ja mal ansehen.
 
S

Spacerat

Gast
Danke für den Code. So sah die Fehlermeldung meines 1. Tests aus...
Code:
java.lang.NullPointerException
	at Main.ScrollGame.gameRender(ScrollGame.java:170)
	at Game.GamePanel.screenUpdate(GamePanel.java:214)
	at Game.GamePanel.run(GamePanel.java:205)
	at java.lang.Thread.run(Thread.java:619)
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at java.awt.image.DataBufferInt.<init>(DataBufferInt.java:41)
	at java.awt.image.Raster.createPackedRaster(Raster.java:458)
	at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015)
	at java.awt.GraphicsConfiguration.createCompatibleImage(GraphicsConfiguration.java:163)
	at Sprite.SpriteLib.getSprite(SpriteLib.java:82)
	at Map.ImageControl.setSourceImage(ImageControl.java:27)
	at Map.MapDisplay.<init>(MapDisplay.java:37)
	at Main.ScrollGame.gameStart(ScrollGame.java:43)
	at Game.GamePanel.<init>(GamePanel.java:62)
	at Main.ScrollGame.<init>(ScrollGame.java:34)
	at Main.ScrollGame.main(ScrollGame.java:30)
...wenn im Speicher irgendwann kein Platz mehr für neue Objekte ist (warum auch immer) dann bleiben sie halt leer.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Atten007 Minecraft Hilfe bei benutzerdefinierten Bannervorlagen in MCreator benötigt Spiele- und Multimedia-Programmierung 0
R Flappy Bird Hilfe Spiele- und Multimedia-Programmierung 1
Atten007 Minecraft Hilfe bei der Fehlerbehebung in MCreator benötigt Spiele- und Multimedia-Programmierung 1
Atten007 Minecraft Hilfe beim MCreator Plugin benötigt Spiele- und Multimedia-Programmierung 0
Atten007 Minecraft Hilfe beim MCreator Plugin benötigt Spiele- und Multimedia-Programmierung 5
A [HILFE] - Minecraft-Problem! Spiele- und Multimedia-Programmierung 1
JEP1 Hilfe bei Spiel Spiele- und Multimedia-Programmierung 1
J TreeNode erstellen [Hilfe beim Konstruktor, Zeile 16] Spiele- und Multimedia-Programmierung 2
Z Minecraft Hilfe bei Minecraft PvP Client Spiele- und Multimedia-Programmierung 21
T Hilfe beim Platzieren der Schiffe Spiele- und Multimedia-Programmierung 14
M Brauche Hilfe was zu Programmieren Spiele- und Multimedia-Programmierung 4
P Snake Java Hilfe Spiele- und Multimedia-Programmierung 4
RalleYTN Brauche Hilfe beim Einlesen von PNGs Spiele- und Multimedia-Programmierung 14
P Hilfe für Seminar Arbeit Spiele- und Multimedia-Programmierung 9
T Pong Hilfe bei einer Website Spiele- und Multimedia-Programmierung 4
T Hilfe bei decompilen von Plugin Spiele- und Multimedia-Programmierung 6
E Brauche Hilfe was soll ich tun Spiele- und Multimedia-Programmierung 7
B HILFE bei Spieleprogrammierung mit Slick2D Spiele- und Multimedia-Programmierung 9
S Würfelspiel; Hilfe Spiele- und Multimedia-Programmierung 3
M Hilfe bei vier gewinnt Spiele- und Multimedia-Programmierung 4
S Hilfe bei Java Gui Spiele- und Multimedia-Programmierung 2
C Visual Story programieren/hilfe Spiele- und Multimedia-Programmierung 5
L Hilfe: Moog VCF Diskretisierungs Algorithmen (Smith/Stilson u.A.) Spiele- und Multimedia-Programmierung 0
J Spielfiguren laufen lassen auf einer html Tabelle mit Hilfe von Servlets Spiele- und Multimedia-Programmierung 2
M Hilfe bei Snake Spiele- und Multimedia-Programmierung 4
T Hintergrundmusik eines Spiels mit Hilfe von JLayer Spiele- und Multimedia-Programmierung 12
S 2D mit Slick - Anfänger sucht Hilfe Spiele- und Multimedia-Programmierung 4
C Generelle Hilfe zur lwjgl Spiele- und Multimedia-Programmierung 0
J Hilfe bei Fußballmanager Spiele- und Multimedia-Programmierung 0
C Hilfe bei einem Mosaikspiel Spiele- und Multimedia-Programmierung 16
J Java Steuerberechnung hilfe Spiele- und Multimedia-Programmierung 17
U Hilfe bei Implementierung eines PointSounds in Java3D Spiele- und Multimedia-Programmierung 1
E Hilfe bei Labyrinth Programmierung. Spiele- und Multimedia-Programmierung 9
S Hilfe bei Spiel Spiele- und Multimedia-Programmierung 6
T Aim-Hilfe Spiele- und Multimedia-Programmierung 4
S Shiritori / word chain / Wörterkette Hilfe Spiele- und Multimedia-Programmierung 1
J Hilfe bei mastermind dringend !!!!! Spiele- und Multimedia-Programmierung 3
S Hilfe bei Spielumsetzung Spiele- und Multimedia-Programmierung 6
M Kleines Spongebobspiel / Hilfe gesucht Spiele- und Multimedia-Programmierung 2
L Hilfe bei Entities benötigt Spiele- und Multimedia-Programmierung 6
L Hilfe bei Klassendesign für Spiel Spiele- und Multimedia-Programmierung 2
A Minecraft Hilfe bei Minecraft Mod Spiele- und Multimedia-Programmierung 1
F Einen Sound mit veränderter Tonhöhe und Geschwindigkeit abspielen - Hilfe erbeten Spiele- und Multimedia-Programmierung 29
V Keine Ahnung von OpenGL! Hilfe wäre lieb! Spiele- und Multimedia-Programmierung 8
L Minecraft Minecraft Bukkit Plugin hilfe Spiele- und Multimedia-Programmierung 9
E Hilfe bei Highscore programmierung Spiele- und Multimedia-Programmierung 3
G Acht-Damen-Problem HILFE! Spiele- und Multimedia-Programmierung 11
R Hilfe bei Snake-Programmierung Spiele- und Multimedia-Programmierung 6
B Hilfe bei Minecraft Plugin Spiele- und Multimedia-Programmierung 3
C Java Brauche Hilfe Spiele- und Multimedia-Programmierung 5
M Hilfe bei Spiel Programmierung Spiele- und Multimedia-Programmierung 4
B Hilfe bei GameGrid Spiele- und Multimedia-Programmierung 11
J Spiel mit Java SWING, LWJGL und JMonkey [Anfänger braucht Hilfe] Spiele- und Multimedia-Programmierung 10
N Hilfe bei Tower Defense Spiele- und Multimedia-Programmierung 22
R hilfe bei 2DSpiel. Spiele- und Multimedia-Programmierung 3
S AirHockey Kollisionsprobleme, bitte um Hilfe Spiele- und Multimedia-Programmierung 2
L Abfrage-Fehler? - Hilfe bei Tetris Spiele- und Multimedia-Programmierung 9
R Hilfe bei Reversi/Othello Spiele- und Multimedia-Programmierung 6
J Hilfe: Rotation X und Y Achse (Java3d) Spiele- und Multimedia-Programmierung 12
B Hilfe bekomme den IF befehl nicht hin Spiele- und Multimedia-Programmierung 10
C RFID Überwachung - Hilfe Spiele- und Multimedia-Programmierung 3
javajavajava Java Lotto Zahl 6 aus 49 - Brauche Hilfe Spiele- und Multimedia-Programmierung 3
E TetrisApplet Thread Hilfe Spiele- und Multimedia-Programmierung 6
H PingPong HILFE !!! Spiele- und Multimedia-Programmierung 3
G GO-Spiel in Java noch fehlerhaft hoffe um hilfe Spiele- und Multimedia-Programmierung 7
N Brauche Hilfe bei kleinem Spiel Spiele- und Multimedia-Programmierung 40
N In einem Kasten springende Bälle programmieren...Hilfe Spiele- und Multimedia-Programmierung 7
L Brauche hilfe mit KeyEvent Spiele- und Multimedia-Programmierung 4
B brauche hilfe bei der tastenzuodnung Spiele- und Multimedia-Programmierung 3
E Hilfe bei einer GUI Programmierung mit Graph Spiele- und Multimedia-Programmierung 30
H Decke zeichnen mit Hilfe eines Polygons Spiele- und Multimedia-Programmierung 2
W Hilfe bei Pong mit Bluej Spiele- und Multimedia-Programmierung 4
A Hilfe bei der Methode COLOR (Java) Spiele- und Multimedia-Programmierung 10
S Hilfe: Ich sehe durch die ganze Api's nicht mehr durch! Spiele- und Multimedia-Programmierung 15
N Hilfe bei snake Spiele- und Multimedia-Programmierung 37
C Hilfe bei einfachen Game Spiele- und Multimedia-Programmierung 15
T Bitte um Hilfe bei Animationen Spiele- und Multimedia-Programmierung 10
G Fragespiel, Hilfe ! like Wer wird Millinär Spiele- und Multimedia-Programmierung 12
D Hilfe mit mini-spiel für die Schule. Spiele- und Multimedia-Programmierung 1
F Brauche Hilfe bei Bewegung eines Rechtecks [Applet] Spiele- und Multimedia-Programmierung 5
G Hilfe bei 3Gewinnt! Spiele- und Multimedia-Programmierung 2
C anfänger braucht hilfe für info unterricht Spiele- und Multimedia-Programmierung 21
A Hilfe bei Programmierung von Abalone Spiele- und Multimedia-Programmierung 6
S Hilfe bei Galgenmännchen Spiele- und Multimedia-Programmierung 4
M 'Mensch ärgere Dich nicht' - Hilfe! Spiele- und Multimedia-Programmierung 12
K Hilfe bei Grafikeinbindung in einem Spiel Spiele- und Multimedia-Programmierung 6
H Ich benötige Hilfe [Noob] Spiele- und Multimedia-Programmierung 9
R Probleme mit Sound in Applikation. HILFE Spiele- und Multimedia-Programmierung 5
B Hilfe gesucht!! (bewegen von grafischen Objekten) Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Neue Themen


Oben