forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Lib_Tiles - тайлсет и все о нем. (http://forum.boolean.name/showthread.php?t=14292)

YellowAfterlife 24.02.2011 03:12

Lib_Tiles - тайлсет и все о нем.
 
Вложений: 4
Эта библиотека реализует стандартный класс javax.microedition.lcdui.game.TiledLayer. То есть с ее помощью вы можете создавать и полностью контроллировать тайлсет.
То есть вы можете с легкостью собрать такой уровень:
Вложение 12787
из такого изображения:
Вложение 12789
Использование тайлсета имеет значительное преимущество по скорости прорисовки, по сравнению с выводом на экран индивидуальных изображений, и может значительно улучшить быстродействие игры.

Функции:
-------------------------------- Главные функции

TilesCreate(columns, rows, source, tileWidth, tileHeight)
columns:integer Количество столбцов (ширина)
rows:integer Количество строк (высота)
source:image Исходное изображение
tileWidth:integer Ширина тайла*
tileHeight:integer Высота тайла*
Создает и инициализирует тайлсет на указанный размер.
*Тайл - индивидуальное маленькое изображение в картинке.

TilesFree()
Уничтожает тайлсет, освобождая занятую им память.
При создании это выполняется автоматически.

TilesDraw()
Рисует тайлсет на текущих координатах.

-------------------------------- Манипуляции над тайлами

TilesSet(column, row, index)
column:integer Номер столбца (0 = первый)
row:integer Номер строки (0 = первая)
index:integer Индекс тайла (0 = пусто)
Меняет индекс тайла на указанной позиции.

TilesRect(column, row, columns, rows, index)
column:integer Номер столбца верхнего левого угла
row:integer Номер строки верхнего левого угла
columns:integer Ширина (в столбцах)
rows:integer Высота (в строках)
index:integer Новый индекс
Изменяет индекс всех тайлов в прямоугольнике.

TilesGet(column, row): index
column:integer Номер столбца (0 = первый)
row:integer Номер строки (0 = первая)
index:integer Возращаемый индекс тайла (0 = пусто)
Возращает индекс тайла на указанной позиции

-------------------------------- Анимированные тайлы

TilesNewAni(index): animindex
index:integer Номер статичного тайла
animindex:integer Индекс анимированного тайла
Создает новый тип анимированного тайла и возращает его
индекс. Индекс используется в других функциях.

TilesSetAni(animindex, index)
animindex:integer Индекс анимированного тайла
index:integer Индекс статичного тайла
Изменяет изображения всех анимированных тайлов с индексом
animindex на изображение статичного тайла index.

TilesGetAni(animindex): index
Возращает текущий индекс статичного тайла, используемого
анимированным тайлом с индексом animindex.

-------------------------------- Свойства и прочее

TilesColumns: integer
Возращает количество столбцов тайлсета.

TilesRows: integer
Возращает количество строк тайлсета.

TilesCellWidth: integer
Возращает ширину индивидуального тайла.

TilesCellHeight: integer
Возращает высоту индивидуального тайла.

TilesWidth: integer
Возращает общую ширину тайлсета (в пикселях).

TilesHeight: integer
Возращает общую ширину тайлсета (в пикселях).

-------------------------------- Позиция и перемещение

TilesX: integer
Возращает X координату позиции тайлсета.

TilesY: integer
Возращает Y координату позиции тайлсета.

TilesTo(x, y)
x:integer Новое значение X-координаты
y:integer Новое значение Y-координаты
Изменяет позицию тайлсета.

TilesMove(x, y)
x:integer Смещение по X
y:integer Смещение по Y
Перемещает тайлсет (относительно текущих координат)

-------------------------------- Прочее

TilesChange(source, tileWidth, tileHeight)
source:image Новое изображение для тайлсета
tileWidth:integer Ширина тайла
tileHeight:integer Высота тайла
Меняет изображение, используемое тайлсетом.
Полезно для смены стиля уровня.


Информация о вариантах библиотеки:
Lib_tiles - стандартный вариант библиотеки, который обеспечивает максимальное быстродействие но чуствителен к неправильным параметрам.
Lib_tilesx - модифицированный вариант, который проводит проверку и адаптацию параметров, чтобы избежать краха программы.

Информация о вложениях:
Lib_tiles.zip - две версии библиотеки и текстовый файл с документацией по функцием.
TileTest.zip - проект-пример: движок игры-платформера с плавным передвижением, камерой, и системой загрузки уровней из файлов. Изображения взяты из него же. Для компиляции вам потребуется библиотека Lib_keys, которую можно найти в этом же разделе.

Удачного создания игр!

YellowAfterlife 18.03.2011 03:27

Ответ: Lib_Tiles - тайлсет и все о нем.
 
Вложений: 2
Поскольку просмотры темы есть, ответов нет, и количество скачиваний игры-примера превышает количество скачиваний библиотеки (без которой игру-пример нельзя скомпилировать), вот скомпилированный вариант: Вложение 13003

Так же считаю нужным заметить, что где-то ~половину кода примера занимают две функции, поскольку они реализуют столкновения (Moving)BoundingBox-Tilemap (то есть позволяют передвигать обьект на любое расстояние внутри карты).

Вложение 13004
Дополнительно: скриншот игры подобной PipeDreams на NES, сделанной с использованием этой библиотеки. Сама игра пока что, увы, не доделана до момента когда ее можно было бы выкладывать сюда.

im_zorg 26.03.2011 08:24

Ответ: Lib_Tiles - тайлсет и все о нем.
 
Прикольная либа +1). Был бы пример анимированных тайлов...

YellowAfterlife 26.03.2011 16:24

Ответ: Lib_Tiles - тайлсет и все о нем.
 
Вложений: 2
Цитата:

Сообщение от im_zorg (Сообщение 183804)
Прикольная либа +1). Был бы пример анимированных тайлов...

Сделано. (Вложения)

im_zorg 26.03.2011 23:01

Ответ: Lib_Tiles - тайлсет и все о нем.
 
Оо спасибо!! найти бы такой же примерчик но только на чистом мп)а так зачёт)

YellowAfterlife 27.03.2011 00:32

Ответ: Lib_Tiles - тайлсет и все о нем.
 
Вложений: 1
Цитата:

Сообщение от im_zorg (Сообщение 183849)
Оо спасибо!! найти бы такой же примерчик но только на чистом мп)а так зачёт)

Всмысле без использования библиотек? Если так, то см. (Вложения).
Конечно, код получается немного длинее (+30 строк ради подгрузчика кусков изображения и прорисовки тайлсета), и немного менее гибкий. Но работает и выглядит так же как и либ-версия.

im_zorg 27.03.2011 12:09

Ответ: Lib_Tiles - тайлсет и все о нем.
 
Спасибо! Так же спасибо за пример к либе keys пишу новую игрушку... Твои примеры помогают....

cherepets 17.04.2011 19:48

Ответ: Lib_Tiles - тайлсет и все о нем.
 
Со всем разобрался, пост стерт.

cherepets 17.04.2011 21:11

Ответ: Lib_Tiles - тайлсет и все о нем.
 
Изображение на нокиах 40й серии немного дергается, как от этого избавиться?
Лишняя перерисовка происходит при вызове tilesdraw;


Часовой пояс GMT +4, время: 17:55.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot