LWJGL Gui erstellen

TheCreeper202

Bekanntes Mitglied
hallo leute
wie kann man mit lwjgl ein gui erstellen, denn minecraft nutzt das auch und ist einfach einen neuen guiscreen zu erstellen
tutorial, javadocs, buch, ...
 

tdc

Bekanntes Mitglied
Hi,
zuerst musst du auf deine 3d-Szene rendern, danach dann auf 2d "umschalten" (durch verschiedene Matrixoperationen) dann dein gui zeichnen und dann wieder zu 3d wechseln. Grob müsste das dann so aussehen:
Java:
public void drawOpenGL()
	{
		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
		
		//3D
        
        glMatrixMode(GL_PROJECTION);
        glPushMatrix();
        glLoadIdentity();
        glOrtho(0,getWidth(),getHeight(),0,-1,1);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();

        //2D
        
        glMatrixMode(GL_PROJECTION);
        glPopMatrix();
        glMatrixMode(GL_MODELVIEW);
	}

Bei //3D renderst du ganz normal deine 3d-Szene und bei //2D deine Oberfläche. Dort kannst du dann ganz normal 2D-OpenGL-Formen reinzeichen, Texturen verwenden und daraus dein GUI aufbauen. Für Texte (z.B. auf Buttons) gibt es bei Slick UnicodeFont (auf TextureImpl.bindNone(); achten!).
Für größere GUIs gibt es dann afaik noch Nifty-Gui, für ein simples Menü sollte reines OpenGL aber reichen.
 

TheCreeper202

Bekanntes Mitglied
ok, ich habs nicht ganz verstanden
1. ich habe lwjgl, lwjgl_util und jinput
2. die ganzen gl...() methoden sind doch in org.lwjgl.opengl.GL11
3. wie kann ich jetzt eine klasse names gui machen von der alle anderen klassen erben
aus minecraft (ganz einfach):
Java:
package net.minecraft.src;

public class GuiPrintHello extends GuiScreen { //GuiScreen extends Gui

    public void initGui() {
        controlList.clear();
        controlList.add(new GuiButton(0, 100, 100, 100, 20, "Print Hallo")); // id, x, y, breite, höhe, text
    }
    public void drawScreen(int i, int j, float f) {
        this.drawDefaultBackground();
        super.drawScreen(i, j, f);
    }
    public void actionPerformed(GuiButton guibutton) {
        if (guibutton.id == 0) {
            ModLoader.getMinecraftInstance().thePlayer.addChatMessage("Hello");
    }
}
alles mit den 3 bibliotheken
das macht einen 50% transperrenten schwarzen hintergrund mit einem button mit der aufschrift "Print Hello" wenn man drauf klickt wird im chat Hello ausgegeben

ach ja und in minecraft gibt es die terrain.png da sind alle blocktexturen im format 16x16px wenn man [c]new Block(150, 6);[/c] zählt der ab:
0: x=0, y=0
1: x=16, y=0
...
11: x=0, y=16
...
wie geht das ([c]Image img = TextureLoader.getImage("/hallo.png", 5); // bild in jar, zahl zum abzählen[/c])
 
Zuletzt bearbeitet:

tdc

Bekanntes Mitglied
1. ich habe lwjgl, lwjgl_util und jinput
Wenn du es dir schwer machen willst, okay, ansonsten binde noch slick ein, damit kann man viel leichter Text darstellen lassen.

2. die ganzen gl...() methoden sind doch in org.lwjgl.opengl.GL11
Jaaaaaa....?

3. wie kann ich jetzt eine klasse names gui machen von der alle anderen klassen erben
aus minecraft
Solange du das Prinzip nicht verstanden hast erstmal gar nicht. Das Problem ist, du musst den Text bei jedem Renderdurchgang rendern, du kannst also nicht einmal Text hinzufügen (".addChatMessage("Hello");"), sondern musst ihn, solange er angezeigt wird zeichnen lassen.

Ansonsten solltest du dich vielleicht nochmal mit den Grundlagen von OpenGL beschäftigen, mit Aussagen wie "2. die ganzen gl...() methoden sind doch in org.lwjgl.opengl.GL11" und einem Verweis auf nichtssagenden Minecraft-Quellcode machst du auf mich nicht gerade den Eindruck, als wüsstest du, was du tust/willst.

------------------------

ach ja und in minecraft gibt es die terrain.png da sind alle blocktexturen im format 16x16px wenn man [c]new Block(150, 6);[/c] zählt der ab:
0: x=0, y=0
1: x=16, y=0
...
11: x=0, y=16
...
wie geht das ([c]Image img = TextureLoader.getImage("/hallo.png", 5); // bild in jar, zahl zum abzählen[/c])
Ich habe keine Ahnung, was in Minecraft wann/wie/wo gemacht wird und es ist mir auch egal. Orientiere dich nicht an dem Quellcode, sondern mache etwas eigenes, was du auch verstehst. Fange z.B. mal mit einem rotierenden Block an und arbeite dich dann Schritt für Schritt vorwärts.

Was willst du überhaupt erreichen? Willst du den Quellcode einfach nur verstehen? Willst du einen "Mod" für Minecraft schreiben?
 
Zuletzt bearbeitet:

TheCreeper202

Bekanntes Mitglied
1. modden mach ich zur zeit und mein mod kommt im juni raus
2. DeBukkIt auf YouTube GuiScreen erstellen Tutorial
3. ich möchte ein Programm/Spiel (naja eher eine libary) wo man so einfach ein gui erstellen kann natürlich mit eigener grafik
4. Wo kann ich was über opengl erfahren
 
S

Spacerat

Gast
Was bitte verstehst man in LWJGL unter einer GUI? Sollen Texte, Knöpfe und Fenster in 3D dargestellt werden oder genügen Texturen? Sollen einzelne GUI-Elemente voneinander getrennt (wegen Picking) sein oder dürfen sie alle zusammen liegen? Theoretisch liessen sich ja irgendwelche GUI-Elemente (AWT, Swing, usw.) mit meinem DirectBufferedImage ganz einfach in eine Textur schreiben, nur müsste dort noch an einem Event-System gearbeitet werden. Man könnte sich dies bezüglich aber auch mal Marcos SWOGL ansehen.
Alles Möglichkeiten. Aber leider denke ich, das Minecraft bereits ein eigenes GUI-System hat, welches du benutzen müsstest. Da könnten aber spezielle Mincraft-Entwickler-Foren viel hilfreicher sein.
 

Evil-Devil

Top Contributor
1. modden mach ich zur zeit und mein mod kommt im juni raus
2. DeBukkIt auf YouTube GuiScreen erstellen Tutorial
3. ich möchte ein Programm/Spiel (naja eher eine libary) wo man so einfach ein gui erstellen kann natürlich mit eigener grafik
4. Wo kann ich was über opengl erfahren

1) recht krasser Zeitplan, wenn man bedenkt das du nicht weißt wo du anfangen sollst
3) SLICK wäre hier eine Möglichkeit, aber Minecraft hat doch sicher eigene GUI Zeichenroutinen?
4) Let me google that for you

Für Texturen benötigst du ein Grafikprogramm. Gimp oder Photoshop werden bei den meisten die erste Wahl sein.
 

TheCreeper202

Bekanntes Mitglied
ok ich hab mich was mit lwjgl und opengl und nehe's tutorials und wollte jetzt ein viereck zeichnen mit den koordinaten x: 0, y: 0, width: 10, height: 10
hier mein code der klasse Gui:
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package de.creeperfans.opengl;

import org.lwjgl.opengl.GL11;
import org.lwjgl.util.vector.Vector2f;

/**
 *
 * @author Roman
 */
public class Gui {
    
    public void drawRect(int x, int y, int width, int height, int color) {
        GL11.glLoadIdentity();
        GL11.glTranslatef(0.0f, 0.0f, 0.0f);
        setHexColor(color);
        Vector2f point1 = new Vector2f(x, y);
        Vector2f point2 = new Vector2f(x + width, y);
        Vector2f point3 = new Vector2f(x + width, y + height);
        Vector2f point4 = new Vector2f(x, y + height);
        GL11.glBegin(GL11.GL_QUADS);
        {
            GL11.glVertex2f(point1.x, point1.y);
            GL11.glVertex2f(point2.x, point2.y);
            GL11.glVertex2f(point3.x, point3.y);
            GL11.glVertex2f(point4.x, point4.y);
        }
        GL11.glEnd();
    }
    
    public void setHexColor(int color) {
        float r = (float)(color >> 24 & 0xff) / 255F;
        float g = (float)(color >> 16 & 0xff) / 255F;
        float b = (float)(color >> 8 & 0xff) / 255F;
        float a = (float)(color & 0xff) / 255F;
        GL11.glColor4f(r, g, b, a);
    }
    
}
und hier meine main-class:
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package de.creeperfans.opengl;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import org.lwjgl.BufferUtils;
import org.lwjgl.LWJGLException;
import org.lwjgl.Sys;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.glu.GLU;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;
import org.newdawn.slick.util.ResourceLoader;

/**
 *
 * @author Roman
 */
public class Main implements Runnable {
    
    public DisplayMode displayMode;
    public static Main game;
    public int width;
    public int height;
    public File[] folders;
    
    public Main() {
        displayMode = new DisplayMode(800, 600);
        game = this;
        width = displayMode.getWidth();
        height = displayMode.getHeight();
        folders = new File[] {
            new File("screenshots/")
        };
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Thread main = new Thread(new Main(), "game");
        main.start();
    }

    @Override
    public void run() {
        createDisplay();
        createControllers();
        createUsedFolders();
        init();
        runGameLoop();
        stop();
    }
    
    public void createDisplay() {
        try {
            Display.setDisplayMode(displayMode);
            Display.create();
        } catch (LWJGLException ex) {
            Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void createControllers() {
        try {
            Keyboard.create();
            Mouse.create();
        } catch (LWJGLException ex) {
            Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void createUsedFolders() {
        System.out.println("Creating Folders...");
        for (File folder : folders) {
            String EXISTS = "already exists";
            String TRUE = "created";
            String FALSE = "cannot create";
            String print = folder.mkdir() ? TRUE : folder.exists() ? EXISTS : FALSE;
            System.out.println(folder.getName() + ": " + print);
        }
    }
    
    public void init() {
        GL11.glEnable(GL11.GL_DEPTH_TEST);
        GL11.glShadeModel(GL11.GL_SMOOTH);
        GL11.glMatrixMode(GL11.GL_PROJECTION);
        GL11.glLoadIdentity();
        DisplayMode dm = Display.getDisplayMode();
        int w = dm.getWidth();
        int h = dm.getHeight();
        GLU.gluPerspective(45.0f, (float) w / (float) h, 0.1f, 100.0f);
        GL11.glMatrixMode(GL11.GL_MODELVIEW);
        GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
        GL11.glEnable(GL11.GL_TEXTURE_2D);
    }
    
    public void runGameLoop() {
        while (!Display.isCloseRequested() && !Keyboard.isKeyDown(Keyboard.KEY_ESCAPE))
        {
            draw();
            updateControllers();
            Display.update();
        }
    }
    
    RenderEngine renderEngine = new RenderEngine();
    Gui gui = new Gui();
    
    public void draw() {
        gui.drawRect(0, 0, 10, 10, 0xffffff);
    }
    
    public void stop() {
        Keyboard.destroy();
        Mouse.destroy();
        Display.destroy();
    }
    
    public void updateControllers() {
        while (Keyboard.next()) {
            if (Keyboard.getEventKeyState()) {
                if (Keyboard.getEventKey() == Keyboard.KEY_ESCAPE) {
                    stop();
                }
                if (Keyboard.getEventKey() == Keyboard.KEY_F2) {
                    screenshot();
                }
            }
        }
    }
    
    public void screenshot() {
        GL11.glReadBuffer(GL11.GL_FRONT);
        int bpp = 4; // Assuming a 32-bit display with a byte each for red, green, blue, and alpha.
        ByteBuffer buffer = BufferUtils.createByteBuffer(width * height * bpp);
        GL11.glReadPixels(0, 0, width, height, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, buffer );
        File file = new File("screenshots/screenshot_" + getDate() + ".png");
        String format = "PNG";
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
 
        for(int x = 0; x < width; x++)
            for(int y = 0; y < height; y++)
            {
 		int i = (x + (width * y)) * bpp;
 		int r = buffer.get(i) & 0xFF;
 		int g = buffer.get(i + 1) & 0xFF;
 		int b = buffer.get(i + 2) & 0xFF;
 		image.setRGB(x, height - (y + 1), (0xFF << 24) | (r << 16) | (g << 8) | b);
            }
 
        try {
            ImageIO.write(image, format, file);
        } catch (IOException e) { e.printStackTrace(); }
        System.out.println("Screenshot token!");
    }
    
    public static String getDate(String dateformat) {
        String DATE_FORMAT = dateformat;
        Calendar c = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
        return sdf.format(c.getTime());
    }
    
    public static String getDate() {
        return getDate("yyyyMMdd_HHmmss_SSS");
    }
    
}
doch es wird nichts gezeichnet es kommt einfach ein blackscreen mehr nicht
weiß jemand vlt wies richtig ist???
danke im vorraus!
TheCreeper202
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
V GUI in LWJGL 2 erstellen Spiele- und Multimedia-Programmierung 6
X LWJGL - Anklick baren Button erstellen aber wie? Spiele- und Multimedia-Programmierung 6
F LWJGL Problem mit Erstellen eines Objekts und der Kamera Spiele- und Multimedia-Programmierung 5
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
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
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
B LWJGL StackOverFlow Problem nach 30sekunden. (Pong) Spiele- und Multimedia-Programmierung 2
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 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
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