用户界面 - Java lwjgl&slick2d game gui and hud?



我对Java非常陌生,目前正在制作一个小游戏,只是为了测试我能用Java做什么。但遇到了一个随机问题:我不知道如何制作GUI(带有单人,多人,选项的菜单)和HUD(数值的图形显示[生命,魔法,经验…])标题已经说明:我正在使用库jinput, lwjgl, lwjgl_util和Slick2D。我的窗口是通过lwjgl的Display类呈现的。下面是Main.class的代码:

public class Main 
{
    public static int disWidth = 800;
    public static int disHeight =600;

    public static void main(String[] args)
    {
        initDisplay();
        initGL();
        initGame();

        gameLoop();
//        initGui();

        cleanUp();
    }
    private static void initGame()
    {
        Game.game = new Game();
    }
    private static void getInput()
    {
        Game.game.getInput();
    }
    private static void initGui()
    {
//Render the gui
    }
    private static void update()
    {
       Game.game.update();
//       GUI.gui.update() or something
    }
    private static void render()
    {
        glClear(GL_COLOR_BUFFER_BIT);
        glLoadIdentity();

        Game.game.render();

        Display.update();
        Display.sync(60);
    }
    private static void initGL()
    {
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0, Display.getWidth(), 0, Display.getHeight(), -1, 1);
        glMatrixMode(GL_MODELVIEW);
        glDisable(GL_DEPTH_TEST);
        glClearColor(0, 0, 0, 0);
    }
    private static void gameLoop()
    {        
        Time.init();
        int frames = 0;
        long lastTime = System.nanoTime();
        long totalTime = 0;
        while(!Display.isCloseRequested())
        {
            long now = System.nanoTime();
            long passed = now - lastTime;
            lastTime = now;
            totalTime += passed;
            if(totalTime >= 1000000000)
            {
                System.out.println(frames);
                totalTime = 0;
                frames = 0;
            }
            Time.update();
            getInput();
            update();
            render();
            frames++;
        }

    }
    private static void cleanUp()
    {
        Display.destroy();
        Keyboard.destroy();
    }

    private static void initDisplay()
    {
        try 
        {
            Display.setDisplayMode(new DisplayMode(disWidth, disHeight));
            Display.create();
            Keyboard.create();
        }
        catch (LWJGLException ex) 
        {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }    
}

您应该尝试检查TWL。我认为这是在LWJGL环境中实现GUI的一种方法,尽管这种方法相当困难(可能是由于xml部分),并且没有很好地记录(在我看来)

你也可以尝试把LWJGL的主显示类放在一个标准的Swing Canvas中,使用函数来设置它的父类。

我自己需要一个GUI,我正在学习TWL

相关内容

  • 没有找到相关文章

最新更新