LWJGL StackOverFlow Problem nach 30sekunden. (Pong)

BK117

Aktives Mitglied
Hey Leute, bin gerade dabei Pong zu programmieren.
Ich weiß nicht ob meine Frage hier richtig ist, oder unter "Allgemeine Java-Themen" aber ich denk mal, das geht so ;)
Ich beschäftige mich seid gestern mit openGL sodass ich da kaum Erfahrung habe.
Aber ich finde den Fehler einfach nicht.
Das Programm läuft ca 30sekunden und stürzt danach ab. Ich weiß nicht warum.
Vlt könnt ihr mir ja helfen ;)
Ich hab keine Ahnung, wo der StackOverFlow Error her kommt.
Tipp:
Steuerung mit W A S D und Pause ist p und weiter ist o.
Wenn ihr nur einseitig spielen wollt, dann drückt h.
Um dann wieder beide Seiten zu steuern, einfach j drücken.
Escape ist genauso wie das rote X für's direkte beenden.
Wenn man verloren hat, kann man mit o eine neue Runde beginnen oder halt normal beenden mit Escape bzw. dem roten X :)
Und es funktioniert die ersten 30 Sekunden eigentlich auch super. Aber danach ist schluss :/

Hoffe ihr findet den Fehler in dem Programmchaos :D, ich bin solangsam nämlich ratlos :rtfm:
Java:
import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
 
import static org.lwjgl.opengl.GL11.*;
 
public class PongKeyboard{

    boolean pause = false;
    int richtungv = (Math.random()<0.5)?0:1;        // 0 = runter // 1 = hoch  // 2+ = stop //
    int richtungh = (Math.random()<0.5)?0:1;        // 0 = rechts // 1 = links // 2+ = stop //
    int score = 0;
    int posx = 750;
    int posy = 400;
    double lpos = 400;
    int lposAus = 400;
    double rpos = 400;
    int rposAus = 400;
    int pongLaenge;
    int pongZwischen = 50;                          //PongLänge hier einstellen, NICHT bei pongLaenge!!! Sondern hier bei pongZwischen!!!
    boolean einseitig = false;
    int speed = 3;
    
//////MAIN
    public static void main(String[] args){
        new PongKeyboard();
    }
//////KONSTRUKTOR   
    public PongKeyboard(){
         try {
             Display.setDisplayMode(new DisplayMode(1500, 800));
             Display.setTitle("Pong");
             Display.create();
             Keyboard.create();
         }catch(LWJGLException e) {
             e.printStackTrace();
             Display.destroy();
             System.exit(1);
         }
         glMatrixMode(GL_PROJECTION);
         glOrtho(0, 1500, 800, 0, 1, -1);
         glMatrixMode(GL_MODELVIEW);
         
        durchführung();
    }
//////INIT
    public void init(){
    	pause = false;
        richtungv = (Math.random()<0.5)?0:1;        // 0 = runter // 1 = hoch  // 2+ = stop //
        richtungh = (Math.random()<0.5)?0:1;        // 0 = rechts // 1 = links // 2+ = stop //
    	score = 0;
    	posx = 750;
    	posy = 400;
    	pongZwischen = 50;
    	durchführung();
    }
//////DURCHFÜHRUNG  
    public void durchführung(){
        
        while(!pause){
            if(Display.isCloseRequested()){
            	if(score == 1){
                    System.err.println("Sie haben " + score + " Punkt erreicht!");
                }else{
                    System.err.println("Sie haben " + score + " Punkte erreicht!");
                }
            	Display.destroy();
            	System.exit(0);
            }
            if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)){
                beenden();
            }
            if(Keyboard.isKeyDown(Keyboard.KEY_P)){
                pause = true;
                pause();
            }
            pongLaenge = pongZwischen;
            pongLaenge = pongLaenge - score;
            if(pongLaenge < 5){
                pongLaenge = 5;
            }
            if(Keyboard.isKeyDown(Keyboard.KEY_W)){
                lpos -= 1 * speed;
            }
            if(Keyboard.isKeyDown(Keyboard.KEY_S)){
                lpos += 1 * speed;
            }
            if(Keyboard.isKeyDown(Keyboard.KEY_A)){
                rpos -= 1 * speed;
            }
            if(Keyboard.isKeyDown(Keyboard.KEY_D)){
                rpos += 1 * speed;
            }
            lposAus = (int) lpos;
            rposAus = (int) rpos;
            
            if(lposAus <= 0){
                lpos = 1;
                lposAus = 1;
            }else if(lposAus >= (795 - pongLaenge)){
                lpos = (794 - pongLaenge);
                lposAus = (794 - pongLaenge);
            }
            if(rposAus <= 0){
                rpos = 1;
                rposAus = 1;
            }else if(rposAus >= (795 - pongLaenge)){
                rpos = (794 - pongLaenge);
                rposAus = (int) rpos;
            }   
            if(richtungv == 0){
                posy = posy + 1 * speed;
            }else if(richtungv == 1){
                posy = posy - 1 * speed;
            }
            if(richtungh == 0){
                posx = posx + 1 * speed;
            }else if(richtungh == 1){
                posx = posx - 1 * speed;
            }
            if(Keyboard.isKeyDown(Keyboard.KEY_H)){
                einseitig = true;
            }if(Keyboard.isKeyDown(Keyboard.KEY_J)){
                einseitig = false;
            }if(einseitig){
                rpos = posy - (0.5 * pongLaenge);
            }
            richtungAendern();
            paint();
        }
    }
//////RICHTUNG  
    public void richtungAendern(){      
        if(posy >= 795){
            richtungv = 1;
        }else if(posy <= 0){
            richtungv = 0;
        }
        else if(posx <= 10 && ((posy-lposAus) < pongLaenge && (posy-lposAus) > 0)){
            richtungh = 0;
            score++;
        }else if(posx <= 10 && !((posy-lposAus) < pongLaenge && (posy-lposAus) > 0)){
            richtungh = 2;
            richtungv = 2;
            beenden();
        }
        else if(posx >= 1490 && ((posy-rposAus) < pongLaenge && (posy-rposAus) > 0)){
            richtungh = 1;
            if(!einseitig){
                score++;
            }
        }else if(posx >= 1490 && !((posy-rposAus) < pongLaenge && (posy-rposAus) > 0)){
            richtungh = 2;
            richtungv = 2;
            beenden();
        }
    }
//////PAUSE
    public void pause(){
        richtungv += 2;
        richtungh += 2;
        while(pause){
            Display.update();
            pause = !Keyboard.isKeyDown(Keyboard.KEY_O);
            if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE) || Display.isCloseRequested()){
                beenden();
            }
        }
        richtungv -= 2;
        richtungh -= 2;
        pause = false;
        return;
    }
//////BEENDEN
    public void beenden(){
        if(score == 1){
            System.err.println("Sie haben " + score + " Punkt erreicht!");
        }else{
            System.err.println("Sie haben " + score + " Punkte erreicht!");
        }
        pause = true;
		while(pause){
			Display.update();
			if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE) || Display.isCloseRequested()){
		        Display.destroy();
		        System.exit(0);
			}
			if(Keyboard.isKeyDown(Keyboard.KEY_O)){
				pause = false;
				init();
			}
		}
    }
//////PAINT
    public void paint(){
         glClear(GL_COLOR_BUFFER_BIT);
         
         glBegin(GL_QUADS); //LINKER PONG
            glColor3d(255, 255, 0);
            glVertex2i(5, lposAus);
            glVertex2i(10, lposAus);
            glVertex2i(10, lposAus+pongLaenge);
            glVertex2i(5, lposAus+pongLaenge);
         glEnd();
         glBegin(GL_QUADS); //RECHTER PONG
            glColor3d(255, 255, 0);
            glVertex2i(1490, rposAus);
            glVertex2i(1495, rposAus);
            glVertex2i(1495, rposAus+pongLaenge);
            glVertex2i(1490, rposAus+pongLaenge);
         glEnd();
         glBegin(GL_QUADS); //BALL
            glColor3d(255, 255, 255);
            glVertex2i(posx, posy);
            glVertex2i(posx+5, posy);
            glVertex2i(posx+5, posy+5);
            glVertex2i(posx, posy+5);
         glEnd();
         // TODO: SCORE ANZEIGE NOCH NICHT HIER EINGEFÜGT!!!
        Display.update();
        Display.sync(60);
        durchführung();
    }
}

Gruß BK
PS: Die score Anzeige fehlt noch, aber das mache ich noch :)
Irgendwie ist das Display durch Display.update(); überlastet glaube ich, aber in anderen Programmen funktioniert es ja eigentlich auch ohne Probleme :/
 
Zuletzt bearbeitet:

Androbin

Bekanntes Mitglied
... Irgendwie ist das Display durch Display.update(); überlastet glaube ich, aber in anderen Programmen funktioniert es ja eigentlich auch ohne Probleme :/ ...
Java:
while ( true ) { // Game-Loop
	
	try   { Thread.sleep( 10 ); } // Delay
	catch ( Exception e ) { } // Try'n'Catch -Block
	
	doLogic(); // Spiel-Logik abarbeiten
	
	repaint(); // Screen neu zeichnen
	
}
 

BK117

Aktives Mitglied
Jepp, danke so ähnlich hab ichs jetzt auch behoben ^^
Also ich habe einfach aber simpel folgendes gemacht:
In Zeile 223 also:
[JAVA=223]durchführung();[/code]
bin ich ja zur durchführung gegangen, aber von der gehe ich ja wieder in paint();
Und von da wieder durchführung();
Dadurch überlagert sich das, weil ich dass dann doppelt erstellt habe, und in jedem Durchgang wieder und wieder.
Ich habe das jetzt einfach durch ein
[JAVA=223]return;[/code] ersetzt und alles geht :D

Trotzdem danke.
Das einzige was jetzt noch fehlt ist die Score anzeige, aber ich weiß nicht, wie ich das am besten machen soll bei mir. Naja...
Trotzdem danke.
Wer dazu was weiß, kann gerne antworten. Aber die Hauptfrage wär dann ja geklärt ;)
Danke
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
coolian lwjgl glfw window zeigt nur grau an Spiele- und Multimedia-Programmierung 0
coolian slick lwjgl text darstellen mit UnicodeFont funktoniert nicht? Spiele- und Multimedia-Programmierung 11
F OpenGL (LWJGL) Shader Programmierung GLSL Spiele- und Multimedia-Programmierung 2
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
V LWJGL GUI Spiele- und Multimedia-Programmierung 1
V GUI in LWJGL 2 erstellen Spiele- und Multimedia-Programmierung 6
C GLSL Shaderprogrammierung in LWJGL 3 Spiele- und Multimedia-Programmierung 12
G Low Poly 3D LWJGL Shader Problem Spiele- und Multimedia-Programmierung 4
B LWJGL OpenGL SIGSEGV auf Linux (Verzweiflung :/) Spiele- und Multimedia-Programmierung 8
G LWJGL .obj .mtl loader Spiele- und Multimedia-Programmierung 3
G 2D animationen LWJGL Spiele- und Multimedia-Programmierung 0
pcfreak9000 "Allgemeine" Performance verbessern (LWJGL 2) Spiele- und Multimedia-Programmierung 2
G LWJGL Rendert nicht Spiele- und Multimedia-Programmierung 3
G lwjgl verwendung Spiele- und Multimedia-Programmierung 6
R [LWJGL] Skeletal Animation Spiele- und Multimedia-Programmierung 5
E LWJGL glGenVertexArrays() erzeugt doppelte IDs Spiele- und Multimedia-Programmierung 3
G Java 2D Spiel mit LWJGL verbinden Spiele- und Multimedia-Programmierung 1
Streeber Problem mit Transparenz/TextDrawing in LWJGL/Slick2d (OpenGL) Spiele- und Multimedia-Programmierung 1
K No Lwjgl Spiele- und Multimedia-Programmierung 2
T LWJGL 2.9.2: Seltsamer Effekt beim Rendern (VertexShader Problem?) Spiele- und Multimedia-Programmierung 3
T LWJGL: Terrain-Texturen / 2D-Array in Shader? Spiele- und Multimedia-Programmierung 2
S 2D-Render Probleme LWJGL 2 (Java) Spiele- und Multimedia-Programmierung 1
P java lwjgl Game Spiele- und Multimedia-Programmierung 0
T [LWJGL] Textur / File wieder freigeben Spiele- und Multimedia-Programmierung 4
F [LWJGL] Skeletal Animation 3D Spiele- und Multimedia-Programmierung 1
C Generelle Hilfe zur lwjgl Spiele- und Multimedia-Programmierung 0
D LWJGL gluLookAt "Umschauen" Problem Spiele- und Multimedia-Programmierung 0
D Problem mit Würfelanimierung in LWJGL Spiele- und Multimedia-Programmierung 7
RalleYTN LWJGL Vignette Spiele- und Multimedia-Programmierung 2
E LWJGL Switchen zwischen gluOrtho und gluPerspective Spiele- und Multimedia-Programmierung 0
RalleYTN LWJGL Rotation Spiele- und Multimedia-Programmierung 1
C LWJGL Color Picking Textures deaktivieren Spiele- und Multimedia-Programmierung 0
K FBO Framebuffer object [LWJGL] 2D tutorial gesucht Spiele- und Multimedia-Programmierung 2
K [LWJGL] 2D Tunneler Hintergrund Spiele- und Multimedia-Programmierung 7
S LWJGL 3d-spieleentwicklung Spiele- und Multimedia-Programmierung 3
H LWJGL-Renderfail Spiele- und Multimedia-Programmierung 1
Seikuassi LWJGL - Texturen flackern Spiele- und Multimedia-Programmierung 2
Androbin LWJGL - Kollisions-Bug (Fallen) Spiele- und Multimedia-Programmierung 14
K Schiessen in 2D (LWJGL) Spiele- und Multimedia-Programmierung 2
S LWJGL Kamera Problem - Alles verzerrt Spiele- und Multimedia-Programmierung 4
U Kann nur ein Objekt mit LWJGL rendern Spiele- und Multimedia-Programmierung 2
X LWJGL | Parent.isDisplayable() must be true | wie kann man das zu true machen? Spiele- und Multimedia-Programmierung 0
X [LWJGL] Binden von Texturen per PNG File und Texture Sheet Spiele- und Multimedia-Programmierung 1
X LWJGL - Anklick baren Button erstellen aber wie? Spiele- und Multimedia-Programmierung 6
U Quadrate anklicken LWJGL Spiele- und Multimedia-Programmierung 3
B LWJGL / OPENGL Kriege Depth-Test nicht hin :( Spiele- und Multimedia-Programmierung 0
B LWJGL Manche Seiten werden transparent angezeigt Spiele- und Multimedia-Programmierung 2
T LWJGL VBO's funktionieren nicht, geben aber auch keinen Fehler Spiele- und Multimedia-Programmierung 0
U Komische fragmente bei LWJGL Spiele- und Multimedia-Programmierung 6
Q LWJGL - Alpha-Probleme Spiele- und Multimedia-Programmierung 2
S [LWJGL] Zweimal selbe Textur trotz unterschiedlicher IDs Spiele- und Multimedia-Programmierung 3
O LWJGL AWTGLCanvas Tiefe auf 1 beschränkt Spiele- und Multimedia-Programmierung 5
Seikuassi LWJGL-Problem Spiele- und Multimedia-Programmierung 2
S [LWJGL] schwarzer Bildschrim beim rendern von .obj Model Spiele- und Multimedia-Programmierung 2
S [lwjgl] Renderbug bei mehreren Objekten Spiele- und Multimedia-Programmierung 2
R LWJGL: OpenGL Fehler - weitere Informationen auslesen möglich? Spiele- und Multimedia-Programmierung 2
S LWJGL Kamera Koordinaten invertiert. Spiele- und Multimedia-Programmierung 2
M LWJGL Text rendern Spiele- und Multimedia-Programmierung 3
B LWJGL Mauskoordinaten Spiele- und Multimedia-Programmierung 1
J LWJGL Update Schleife (Snake) Spiele- und Multimedia-Programmierung 6
B LWJGL Display.update() ist langsam Spiele- und Multimedia-Programmierung 5
R LWJGL: Performance glBegin, drawList, ... Spiele- und Multimedia-Programmierung 16
R LWJGL: Object Loader -> .obj, .c4d, ... laden Spiele- und Multimedia-Programmierung 3
R LWJGL: Textur -> unsichtbare Stellen, wie erzeugen? Spiele- und Multimedia-Programmierung 4
A LwJGL - Animation Stockt Spiele- und Multimedia-Programmierung 5
R [lwjgl] Cursor -> versetzt Zeichnen / Bild ist umgedreht Spiele- und Multimedia-Programmierung 2
R LWJGL: 3D Picking Spiele- und Multimedia-Programmierung 4
F LWJGL: Textur ändern mit GL11.readPixels Spiele- und Multimedia-Programmierung 5
F LWJGL: Licht und GL_LINES funktioniert nicht Spiele- und Multimedia-Programmierung 6
A [LWJGL] BMP Textur wird nicht richtig dargestellt Spiele- und Multimedia-Programmierung 8
S LWJGL Rechteck wird nicht gezeichnet Spiele- und Multimedia-Programmierung 6
F LWJGL: Is undefined? Spiele- und Multimedia-Programmierung 7
F LWJGL Kamerabug Spiele- und Multimedia-Programmierung 2
F LWJGL Problem mit Erstellen eines Objekts und der Kamera Spiele- und Multimedia-Programmierung 5
F LWJGL Dreidimensionaler Würfel Spiele- und Multimedia-Programmierung 15
P LWJGL oder OpenGL (C++) Spiele- und Multimedia-Programmierung 7
P "Tiefe" in Objekten - LWJGL Spiele- und Multimedia-Programmierung 12
T LWJGL 3D Objekt Collision: Wie? Spiele- und Multimedia-Programmierung 11
S LWJGL Kamera Frage Spiele- und Multimedia-Programmierung 2
V Komischer Fehler in LWJGL Spiele- und Multimedia-Programmierung 18
Z lwjgl oder jogl nutzen Spiele- und Multimedia-Programmierung 9
Y LWJGL Hintergrund Spiele- und Multimedia-Programmierung 7
Creylon [LWJGL] Textur wird falsch angezeigt Spiele- und Multimedia-Programmierung 12
Creylon [LWJGL] Spiel Exportieren Spiele- und Multimedia-Programmierung 2
Creylon [LWJGL] 2D Sprite Rotieren/Drehen Spiele- und Multimedia-Programmierung 6
CookieSoft LWJGL Ubuntu 12.04 Fehler Spiele- und Multimedia-Programmierung 7
E [LWJGL] Karusell, mehrere Objekte drehen sich um einen Mittelpunkt Spiele- und Multimedia-Programmierung 31
F lwjgl - Skysphere Spiele- und Multimedia-Programmierung 3
CookieSoft Slick und LWJGL Texture lag Spiele- und Multimedia-Programmierung 13
U OpenGl 1.1 (LWJGL GL11.*) und weiter? Spiele- und Multimedia-Programmierung 7
0 Grafikfehler LWJGL Spiele- und Multimedia-Programmierung 2
A LWJGL 3D Objekte Kollision Spiele- und Multimedia-Programmierung 3
Luk10 (LWJGL) Aufwendiges Animieren von Texturen Spiele- und Multimedia-Programmierung 16
S (LWJGL) VertexBufferObjects Spiele- und Multimedia-Programmierung 20
T LWJGL Grafik meines Projektes läuft nicht korrekt auf meinem iMac Spiele- und Multimedia-Programmierung 19
B LWJGL/OpenGL rendert manche Objekte nicht Spiele- und Multimedia-Programmierung 6
H LWJGL: Fragen zum Verständnis Spiele- und Multimedia-Programmierung 7
T LWJGL Gui erstellen Spiele- und Multimedia-Programmierung 7
Kenan89 lwjgl Exception Spiele- und Multimedia-Programmierung 3
Z Anfängerfrage: Text anzeigen mit LWJGL Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen

Neue Themen


Oben