Java lwjgl&slick2d 游戏 GUI 和 HUD?

标签 java user-interface interface 2d lwjgl

我对 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 的主 Display 类放入标准 Swing Canvas 中。

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

关于Java lwjgl&slick2d 游戏 GUI 和 HUD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22590662/

相关文章:

java - 刚开始使用 Jackson API

r - 在 R Manipulate 中添加许多复选框作为列表/向量

java - 编码从使用 JAXB 实现接口(interface)的类实例化的 Java 对象

java - 多svn分支中多模块maven项目的最佳实践是什么

java - Slick2D 音乐问题

java - 在按钮上方的地方?这叫什么?

java - JFrame 相互重叠

c# - 接口(interface)可以需要一个属性,但不指定所需的类型吗?

c++ - InterfaceFileForASetTemplateClass

java - logback 在运行时更改配置和日志文件创建问题