Я очень новичок в использовании внешних Java-библиотек, и я начинаю с Slick2D, который построен на LWJGL. Я написал простой StateBasedGame, который просто печатает три параметра на экране. Это дает мне ошибку, хотя некоторые файлы (jar?) Не присутствуют (см. Ниже для справки).Код LWJGL 2 не совместим с кодом LWJGL 3?
Это напоминает мне о том, что большинство учебных пособий, с которыми я столкнулся, были сделаны один или два года назад, когда LWJGL 3 не вышел или еще не был стабильным. Это означает, что все они используют LWJGL 2. Проблема в том, что многие из кода, которые я пытаюсь использовать LWJGL 3, не работают с кодом, который был первоначально написан в LWJGL 2. Почему это? Было бы неплохо вернуться к LWJGL 2, если я захочу узнать SLick2D? Пожалуйста, помогите, потому что простые программы, которые я пишу, даже не компилируются.
Вот мой код, который не работает (по крайней мере, в LWJGL 3):
import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.StateBasedGame;
public class Game extends StateBasedGame {
Menu menu;
public Game(String title) {
super(title);
menu = new Menu(0);
}
public static void main(String[] args) {
try {
AppGameContainer agc = new AppGameContainer(new Game("Text Based"));
agc.setDisplayMode(600, 600, false);
agc.start();
} catch (SlickException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void initStatesList(GameContainer container) throws SlickException {
System.out.println("InitStates");
addState(new Menu(0));
getState(menu.getID()).init(container, this);
enterState(menu.getID());
}
}
import org.newdawn.slick.Color;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.state.StateBasedGame;
public class Menu extends BasicGameState {
private int ID;
private int menu;
public Menu(int id) {
this.ID = id;
}
@Override
public void init(GameContainer container, StateBasedGame sbg) throws SlickException {
}
@Override
public void render(GameContainer container, StateBasedGame game, Graphics g) throws SlickException {
g.setColor(Color.white);
g.drawString("Higher or Lower", 50, 10);
g.drawString("1. Play Game", 50, 100);
g.drawString("2. High Scores", 50, 120);
g.drawString("3. Quit", 50, 140);
}
@Override
public void update(GameContainer arg0, StateBasedGame arg1, int arg2) throws SlickException {
}
@Override
public int getID() {
return ID;
}
}
Здесь ошибка:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl64 in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at org.lwjgl.Sys$1.run(Sys.java:72)
at java.security.AccessController.doPrivileged(Native Method)
at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
at org.lwjgl.Sys.loadLibrary(Sys.java:87)
at org.lwjgl.Sys.<clinit>(Sys.java:117)
at org.lwjgl.opengl.Display.<clinit>(Display.java:135)
at org.newdawn.slick.AppGameContainer$1.run(AppGameContainer.java:39)
at java.security.AccessController.doPrivileged(Native Method)
at org.newdawn.slick.AppGameContainer.<clinit>(AppGameContainer.java:36)
at Game.main(Game.java:17)
Хорошо, спасибо! Это устранило много проблем для меня, потому что я не мог найти файл lwjgl64.dll, пока я мог найти файл lwjgl32.dll. Я рад, что ты сказал мне это сейчас, потому что для меня это не имело никакого смысла. – Eames