An open API service indexing awesome lists of open source software.

https://github.com/downadow-dev/items-jlayground

Игра.
https://github.com/downadow-dev/items-jlayground

Last synced: 3 months ago
JSON representation

Игра.

Awesome Lists containing this project

README

          

# ![superbricks](https://github.com/downadow-dev/items-jlayground/raw/main/assets/game/images/superbricks.png) Items Jlayground

**Items Jlayground** — это свободная игра-песочница, в которой игроку
предоставляется свобода _строить, разрушать, программировать, взрывать,
летать на вертолёте, стрелять из танка_ и другое. Игра написана на Java
с использованием LibGDX. Items Jlayground поддерживает многопользовательскую игру.
Автор игры — downadow.

Мир Items Jlayground представляет собой одномерный массив с заданными
шириной (250) и высотой (80), содержимое которого изображается в двухмерном
виде. Ячейка может определяться как отсутствие
блока (.), либо танк, либо вертолёт, либо вода, либо примитив. Примитивы
могут иметь множество атрибутов (_падающий_, _крепкий_, _липкий_ и т. д.).

Данный проект является результатом переноса Items Jlayground с Java Swing
на LibGDX.

## Запуск

В главном меню можно загрузить пакет ресурсов, выбрать ресурспак из списка и начать игру.
Ресурспаки — неотъемлемая часть Items Jlayground. Они содержат карту, помощь и мод,
который, как правило, содержит определения блоков,
их текстуры (в каталоге `images/` пакета ресурсов) и атрибуты.
Выберите предустановленный пакет ресурсов "game", нажмите "Одиночная игра".

### Android

Вас встречает текст помощи. Обычно, в него включается информация о доступных
блоках, которую пользователь может прочитать в любой момент игры. Текст
помощи — часть ресурспака (в данном случае "game"). Вы можете прокручивать
помощь, используя стрелки. Кнопка в верхнем правом углу открывает или закрывает
текст помощи.

Стрелки перемещают камеру. Кнопка между стрелками позволяет
выделить блок и "играть" за него, Выделенный блок можно
поворачивать и активировать (для танка и вертолёта); для прыжка,
воспользуйтесь кнопками "вверх" или "взаимодействие" (работает
не для всех блоков). Нажатие на верхнюю область экрана сохраняет карту.

Поставьте первый блок. Нажмите на область экрана в верхнем левом углу, откроется
клавиатура. Введите символ (идентификатор) блока. Почти полный список блоков
можно посмотреть в тексте помощи. Например, для ресурспака "game",
'r' — это кирпичи, 'w' — доски и т. д. Вы также можете ввести позицию
символа в Юникоде (например, 33 — '!'). Блок '.' (точка) обозначает пустоту,
используйте его для удаления поставленных вами блоков.

Теперь, если вы выбрали блок, то он должен отобразиться в верхнем левом углу экрана,
внутри '\[' и '\]'. Нижняя правая область экрана — взаимодействие. Нажав на неё,
вы поставите выбранный блок, активируете выделенный блок или сделаете взрыв
помеченных областей.

Панель в верхнем правом углу экрана предоставляет доступ ко многим возможностям
игры. В частности, для того, чтобы пометить область для взрыва, включить режим
программирования, включить ночь или сжечь блок, вам придётся обращаться к данной
панели. Кнопка '...' прокручивает панель.

## Режим программирования

Режим программирования нужен для редактирования кода поведения.
Он представляет собой слова, разделённые пробелом, приказывающие сделать
те или иные действия. Специальное слово `selected` во время
исполнения поведения заменяется на адрес блока под прицелом, либо на адрес
выделенного пользователем блока.

`no_sel` — снять выделение; `sel:<адрес>` — выделить блок по адресу
(если нет выделения); `up`, `down`, `left`, `right`, `up:lift`, `down:lift`,
`left:lift`, `right:lift`, `up:copy`, `down:copy`, `left:copy`,
`right:copy`, — перемещение выделенного блока; `tp:<адрес>` — телепортация
выделенного блока; `~<время>` — приостановить выполнение на заданное количество
миллисекунд; `step:<адрес>:<время>` — перемещать блок на заданный адрес с перерывами
в заданное количество миллисекунд; `boom`, `fire`, `fire2`, — взрыв, огонь;
`wait` — ждать столкновения с выделенным блоком; `wait:up`, `wait:down`,
`wait:left`, `wait:right`, — ждать столкновения с выделенным блоком
на определённой стороне; `find:<символ>` (`findn:<код символа>`) — если нет выделения, то искать
заданный блок на карте и выделить его; `set:<символ>` — изменить выделенный
блок на другой; `setn:<код символа>` — изменить выделенный
блок на другой (`<код символа>` должен быть позицией символа в Юникоде);
`wait:light`, `wait:dark`, — ждать света или темноты поблизости.

Примеры кода:
```
no_sel sel:selected boom
```
```
no_sel sel:14127 set:J step:13127:60 step:13131:50 step:14131:40 step:14127:35 ~500
```

Поведение выполняется в нескольких потоках. Приведённые выше примеры можно объединить:
```
no_sel sel:selected boom | no_sel sel:14127 set:J step:13127:60 step:13131:50 step:14131:40 step:14127:35 ~500
```