while(!Display.isCloseRequested()){ GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); keyboard = new keyboard(); mouse = new mouse(); player = new player();
В классе Main, методе init() находится главный игровой цикл:
Код
while(!Display.isCloseRequested()){
// Вот тут находится главный игровой цикл!
}
В твоём коде ты каждый раз, при каждой итерации цикла заново создаёшь игрока, инициализируешь OpenGL, и тд... нафига? всё это надо делать только один раз, в начале. Кстати, внегласное правило между всеми java прогерами: названия классов начинаются с ЗАГЛАВНОЙ буквы! Не "keyboard" а "Keyboard" и тд... для программы это не важно, а на читабильность кода влияет.
Незнаю если решил все косяки, не запускал, но самые явные поправил. Обращайся!
Добавлено (02.01.2013, 02:46) --------------------------------------------- еще косяк нашёл:
Класс keyboard перепиши на:
Код
public class keyboard {
public void click(){ if (Keyboard.isKeyDown(Keyboard.KEY_A)) { Main.player.xSpeed = -5; } if (Keyboard.isKeyDown(Keyboard.KEY_D)) { Main.player.xSpeed = 5; } if (Keyboard.isKeyDown(Keyboard.KEY_W)) { Main.player.ySpeed = 5; } if (Keyboard.isKeyDown(Keyboard.KEY_S)) { Main.player.ySpeed = -5; } } }
и сделай переменную player(из Main) публичной.
Вот чёрт, только щас подумал что мог отправить тебе уже поправленые сорцы
Запомни: обновляется(update) и выводится на экран только экземпляр класса Player из переменной player в классе Main! Если ты хочешь управлять игроком с экрана ты должен работать именно с этой переменной(Main.player)! Не стоит для каждого класса создавать своего игрока, игрок должен быть только один и его ты уже создаешь, обновляешь и выводишь в классе Main, с ним и работай. - Java - PHP, JavaScript - HTML/CSS DeadlySquare Run or Die Super SQUARE
Сообщение отредактировал jackbv - Среда, 02 Января 2013, 02:54