UI in GLOOP?
Wir sollen als Schulprojekt ein Spiel in GLOOP mit der Programmiersprache JAVA programmieren. Da ich gerne Quests einbauen würde, würde ich gerne eine UI einbinden doch ich finde zu diesem Thema nichts im Internet.
1 Antwort
Für GLOOP werden intern OpenGL (über die JOGL-Bibliothek) sowie Swing genutzt. Die Frage wäre nun also, wie man sich am besten einklinken kann.
An den Frame oder das Canvas-Element kommt man nicht direkt heran, denn sie sind beide package protected. Man könnte sich allerdings ein eigenes GLObjekt erstellen:
public class TextMessageBox extends GLObjekt {
public TextMessageBox(double x, double y, double width, double height, String text) {
// ...
}
@Override
public void zeichneObjekt(GL2 gl, GLU glu) {
// ...
}
}
Die Basisklasse sorgt dafür, dass die erzeugten Objekte für den Renderer registriert werden und später auch ein Aufruf der zeichneObjekt-Methode stattfindet.
Für den weiteren Teil müsstest du dich näher mit JOGL / OpenGL befassen. Ich werde hier nur auf ein paar Grundelemente für deine Komponente eingehen.
Eine Dokumentation zu JOGL findest du hier.
a) Ein Rechteck kann man folgendermaßen erstellen:
gl.glColor3f(1f, 1f, 1f);
gl.glBegin(GL2.GL_POLYGON);
gl.glVertex3f(0f, 0f, 0f);
gl.glVertex3f(5f, 0f, 0f);
gl.glVertex3f(5f, 4f, 0f);
gl.glVertex3f(0f, 4f, 0f);
gl.glEnd();
b) Das Zeichnen von Text könnte man über die glutBitmapString-Methode regeln. Ungefähr so:
gl.glColor3f(1f, 1f, 1f);
gl.glRasterPos2f(textPositionX, textPositionY);
GLUT glut = new GLUT();
glut.glutBitmapString(GLUT.BITMAP_HELVETICA_12, "Some text");