Создание игры на Java без сторонних библиотек, часть первая

Привет хаброжители. Данный пост является «рерайтом» моего поста для песочницы. На этот раз я постараюсь охватить больше тем, чем тогда.
Почему Java?
Ничего объективного я тут не скажу, а скажу лишь то, что я люблю этот язык, и мне нравиться писать на нем. Да, на Java нет игр AAA-класса, но Java предоставляет огромные возможности, больше кол-во встроенных средств и быстроту написания кода.
Начнем с выбора IDE. Я являюсь фанатом Eclipse и посоветую вам его.
Если же почему-то вам он не понравился, вы можете использовать NetBeans, Intellij IDEA или командную строку и ваш любимый редактор.
И скачаем JDK последней версии: JDK 7u4
Скорее всего проблем с установкой IDE у вас не возникнет, а если у вас 64-битная система, все же посоветую устанавливать 32-битный Eclipse, так как иногда бывают ошибки и Eclipse у вас просто не запустится.
Под катом мы приступим к созданию игры.
Класс Game
Итак, создаем проект, в нем класс Game(попутно создав в нем точку входа). Данный класс должен наследовать класс Canvas и реализовать интерфейс Runnable:
Создадим переменную running типа Boolean, которая, как вы уже догадались будет показывать нам запущена ли игра, или нет.
Создадим функцию start() и в ней мы будем создавать новый поток и переводить running в true:
Создадим три функции — update(long delta), render() и init(). Я надеюсь что их значение вам понятно. В функции run() создадим главный игровой цикл, перед ним будем вызывать init(), а в нем самом render() и update(). Так же мы будем вычислять разницу между кадрами(delta time).
Пока поработаем над функцией render().
Вам наверное уже не терпится запустить и попробовать, но не спешите. Мы должны создать фрейм и добавить наш холст на него. Заодно и объявим три переменных.

Примерно вот так выглядит наш класс Game сейчас.
Класс Sprite
Создадим новый класс Sprite. Поскольку этот класс небольшой, я сразу приведу весь его код с комментариями:
Сразу же проверим работоспособность. Возьмем эту картинку и скопируем ее в папку с нашим классом Sprite. Добавим функцию getSprite() в класс Game(временно).

Добавим нашу картинку в папку assets(папку создать в корне проекта), саму папку надо добавить в build path.
Далее создаем переменную hero типа Sprite. В функции init() инициализируем ее. В Функции render() рисуем:

Input
Для обработки инпута мы создадим класс, наследующий KeyAdapter:
Тут же и объявим две переменных в шапке класса Game:
Внутри класса KeyInputHandler создадим две функции:
Теперь в функции init() добавим следующее:
Создадим переменные x и y для героя(так как пока что мы еще не написали класс Entity). Сделаем чтобы герой всегда рисовался на этих координатах.
А теперь в функции update() будем проверять нажаты ли клавиши и изменять x-координату.
Создание простых игр на Java
Как написать свой Тетрис на Java за полчаса
В предыдущих статьях этой серии мы уже успели написать сапёра, змейку и десктопный клон игры 2048. П.
- 0
- 0
- 0
- 0
- 0
Как написать свою 2048 на Java за 15 минут
В предыдущих статьях этой серии мы уже писали сапёра и змейку на Java, а теперь попробуем написать десктопный клон игры 2048.
- 0
- 0
- 0
- 0
- 0
Как написать свою змейку на Java за 15 минут
В предыдущей статье мы писали сапёра за 15 минут, теперь займёмся классической змейкой.В предыдущей .
Раздел «Игры» на JavaRush: Игровой движок

void setCellColor(int x, int y, Color color) — устанавливает клетке с координатами (x, y) цвет color:
Color getCellColor(int x, int y) — возвращает цвет клетки с координатами (x, y):
void setCellValue(int x, int y, String value) — помещает в клетку с координатами (x, y) текст value:
String getCellValue(int x, int y) — возвращает текст, содержащийся в клетке с координатами (x, y):
void setCellTextSize(int x, int y, int size) — устанавливает размер контента в клетке с координатами (x, y). size – высота текста в процентах от высоты клетки:
int getCellTextSize(int x, int y) — возвращает размер контента в клетке с координатами (x, y):
void setCellNumber(int x, int y, int value) — помещает в клетку с координатами (x, y) число value:
int getCellNumber(int x, int y) — возвращает число, содержащееся в клетке с координатами (x, y). Если в клетке содержится не число, возвращает 0:
void setCellTextColor(int x, int y, Color color) — устанавливает цвет контента(текста) в клетке с координатами (x, y):
Color getCellTextColor(int x, int y) — возвращает цвет контента (текста) в клетке с координатами (x, y):
void setCellValueEx(int x, int y, Color cellColor, String value) — устанавливает клетке с координатами (x, y) цвет фона cellColor и контент value:
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor) — устанавливает клетке с координатами (x, y) цвет фона cellColor, контент value и цвет контента textColor:
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize); — устанавливает клетке с координатами (x, y) цвет фона cellColor, контент value, цвет контента textColor и размер контента textSize: