GameLib / Урок 2 (Вторая версия GL, создание окна)

от
GameDev    java, gl

Изменения
Доброго времени суток.
Если честно, то начинать всегда сложно, но мы попробуем.
Вот я свою GameLib переписал. Возможна смена экранов. Тут экраны это: поле, меню, загрузка, заставка, настройки. Каждый из себя представляет отдельный экран. Когда я начинал только программировать на Java у меня была проблема с этим. Вот это я сделал чтобы облегчить себе жизнь.

Можно скачать на форуме: Ссылка

НачинаемВ этом уроке я буду использовать главный модуль библиотеки это GL_System.
Давайте создадим проект Exampler1 с пакетом app и главным классом Main.
Создадим статичную публичную переменную типа Display и назовём её display, чтобы не заморачиваться с названием. И импортируем сочетанием CTRL + SHIFT + I

В методе main пишем следующее:
Код

Так, мы создаем окно с шириной 800 на высоту в 600 пикселей. Потом мы изменяем заголовок нашего окна на Example.

Всё, если вы запустите, то увидите только формы с белым экраном и снизу в правом углу ФПС. Но этого же мало, и мы создадим экран собственный.
В этом же пакете создадим класс Screen1 и наследуем его от Screen, и импортируем.
И пишем в него следующее:
  1. public Render1 render1;
  2.  
  3. public Screen1() {
  4.     super();
  5.     //Делаем отображаемым экран на форме
  6.     this.setVisible(true);
  7.     //Инициализируем рендер
  8.     render1 = new Render1();
  9.     //Добавляем рендер на экран
  10.     this.addRender(render1);
  11. }
И не будем останавливаться на этом и сразу же создадим рендер, создадим в этом же пакете класс Render1 и унаследуем его от Render.
А теперь пару слов о Screen. Мы в конструкторе вызываем суперконструктор, потом делаем чтобы этот экран отображался на дисплее. Потом инициализируем рендер и добавляем на экран. На экран так же можно добавить UI из модуля GL_GUI, но это в следующих статьях.

Так, вернёмся к рендеру. Этот класс сама основа, там нет переменных, только 3 метода:
  1. void paint();
  2. void paint(Graphics2D);
  3. void update();
Тут нету вопросов к методам, только разве что к void paint()

Ну думаю сначала предоставлю весь код, а потом прокомментирую.
Код

Мы рисуем круг в точке нахождения курсора. Радиус мы можем увеличить нажав на клавишу "вверх" и отпустив клавишу круг снова уменьшится. По клику мыши круг меняет свой цвет на другой.

Мы создаем поле mouse и key, и после их инициализации добавляем их на обработку на дисплей.
В Key мы можем добавить обрабатываться интерфейсы IPressedKey и IReleasedKey. Первый обрабатывает нажатие клавиш, а другой их отпускание.

Так же и Mouse имеет свою обработчик-интерфейс ClickButton, там два метод: pressed и released. Соответственно каждый обрабатывает нажатие и отпускание кнопок мыши.

КонецТак. Запустим. Так же не что не изменилось. Мы забыли подключиться экран к дисплею. Сначала создадим публичную статистическую переменную Screen1 и назовём её screen1. В методе main перед запуском игрового потока мы инициализируем экран и добавляем на дисплей.
Получаем код:
Код

На этом всё. Полный рабочий код есть здесь.

Спасибо за внимание!
  • +2
  • views 4813