GameLib. Урок 1

от
GameDev    java

GameLib - библиотека для быстрого создания игрового цикла, а также его управления. Ссылка на форуме.

Заготовка

Создайте проект, подключите библиотеку, затем добавьте пакет "app" с классом "Main".
В нём метод
  1. public static void main(String[] args){}

Создайте класс экрана "Screen1" в пакете "app" следующего содержания:
  1. package app;
  2.  
  3. import GL.System.Screen.Screen;
  4.  
  5. public class Screen1 extends Screen{
  6.  
  7.   public Screen1(){
  8.     this.setDisplay(true);
  9.   }
  10.  
  11.   @Override
  12.   public void paint(Graphics2D g) {
  13.  
  14.   }
  15.  
  16.   @Override
  17.   public void update(){
  18.   }
  19. }

Вначале мы импортировали класс экрана и сделали его родителем класса Screen1. В конструкторе мы вызвали метод void setDisplay(boolean a) из Screen для того, чтобы он отображался на панели.
Заготовка сделана, теперь перейдём к заполнению.

Заполнение

Теперь нужно нам сделать окно и саму панель, а то как же без них?
Перед методом "main" напишите следующее
  1. public static MainPanel panel;//объявили панель из библиотеки
  2. public static JFrame frame;//всем известная JFrame
И нажмите сочетание клавиш CTRL+SHIFT+I, этим самым мы импортировали нужные нам классы.
В самом методе "main" напишем
  1. panel = new MainPanel(new Dimension(400, 400));//инцелизировали и установили размер панели
  2. frame = new JFrame();//мы создали форму без заголовка
  3. frame.add(panel);//добавили на окно панель нашу
  4. frame.pack();
  5. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  6. frame.setLocationRelativeTo(null);//делаем так, чтобы оно было посередине экрана монитора

Вот так мы создали наше окно и панель.
А теперь нужно же соединить нашу форму и экран, но как?
Для начала нам нужен игровой поток. Что мы время тянем? Вот и создадим его.
Перед методом "main":
  1. public static MainThread thread;
И сочетание клавиш не забудьте. Вот так мы объявили что у нас есть цикл, но нужно его настроить и запустить, но мы в данном уроке просто его запустим без настроек.
В методе "main" после всего пишем:
  1. thread = new MainThread(panel);
Мы только что создали сам поток, но она не запущен, но это сделаем в самую последнею очередь.
А сейчас мы добавим контейнер экранов на панель.
Снова перед методом "main" пишем:
  1. public static ListScreen listScreen;
  2. public static Screen1 screen1;
Так мы объявили список экранов и сам экран, который у нас создан заранее.
В методе "main" после всего пишем:
  1. listScreen = new ListScreen();//создали пустой список
  2. screen1 = new Screen1();//инициализировали экран
  3. listScreen.add(screen1);//добавили в список
  4. panel.setListScreen(listScreen);//и добавили сам список экранов на панель

Всё. Осталось запустить поток и показать окно.
Дописываем метод:
  1. thread.start();//запустили поток
  2. frame.setVisible(true);//показали окно
В таком порядке запуска, более всего удобно.

Всё. С отображением и запуском справились, но на окне ничего не видно, только FPS само на себя накладывается. Значит так. Перейдем к Screen1.
Всё подробно тут объяснять не буду, просто прокомментирую.
Вот код:
Открыть спойлер

Заключение

Вот так быстро можно создать приложение.
Следующий урок посвятим созданию менеджера экранов и объектов Render'а.