我是Java的新手,目前正在开发一款小游戏,只是为了测试我能用Java做些什么。但是遇到了一个随机的问题:我不知道如何制作一个GUI(单人游戏,多人游戏,选项等菜单)和一个HUD(图形显示值[Life,Mana,Experience ...])如何标题已经说过:我正在使用库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);
}
}
}
答案 0 :(得分:0)
您应该尝试检查TWL。我想这是在LWJGL环境中实现GUI的方法之一,虽然这种方法非常困难(可能是由xml部分引起的)并且它没有很好地记录(在我看来)
您还可以尝试将LWJGL的主要Display类放在标准的Swing Canvas中,使用该函数设置其父级。
我自己需要一个GUI,我正在学习TWL