|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
31.03.2009, 18:47 | #261 |
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
|
31.03.2009, 19:04 | #262 |
Пользователь
Регистрация: 27.01.2009
Сообщений: 97
|
|
31.03.2009, 19:54 | #263 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Про загрузку и использование текстур и проходимости...
Это пример с поста #102, если не ошибаюсь. Пример простейший. Задача стоит по-иному: если много текстур, как вместить проходимость?
Будем предельно точны, расширим представления о системе хранения текстур и проходимостей. У нас есть база текстур, в виде одномерного массива, в котором загружены все текстуры, что есть на карте, ...как? ...пробегаем по массиву карты, что был загружен с файла, смотрим каждую цифру, и записываем последовательно в массив Bitmap с файла текстуры. Дополнительно в коде каждой клетке зашифрована и проходимость, ...как? ...допустим мы берем 256 текстур - это много, половина из них проходимые, половина нет, или даже 3 степени проходимости: 0 - можно идти, 1 - нельзя ни при каких условиях, 2 - можно при определенных условиях. В итоге у нас: 0 - 99 - номера текстур, по которым можно ходить; 100 - 199 - номера текстур, по которым нельзя ходить; 200 - 255 - номера специальной проходимости. Вернемся к загрузке текстур. Проверяя очередную клетку выполняем условия: если число < 100, то ставим в запись проходимости 0; если число > 99 но < 200, то ставим в запись проходимости 1; если число > 199, то ставим в запись проходимости 2; Попутно с файла загружаются текстуры с именами, равными числам, таким образом тип банка текстур становится справедливым: Код:
Код:
Код:
Код:
Код:
Как записать на карту числа уже весом в 3 байта? (0 - 9 весят 1 байт, 10 - 99 весят 2 байта, 100 - 255 весят 3 байта) ...ответ в вопросе, перейдем к хранению данных в байтах: Код:
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
31.03.2009, 20:07 | #264 |
Пользователь
Регистрация: 27.01.2009
Сообщений: 97
|
Огромное спасибо. Я думаю, этого достаточно. Осталось переварить информацию
|
01.04.2009, 12:32 | #265 | |
Пользователь
Регистрация: 27.01.2009
Сообщений: 97
|
Цитата:
001 002 003 055 066 077 111 112 113 114 115 116 117 118 119 120 121 122 а потом связывать текстовый файл с файлом байтов (MamFile: File of Byte? Код:
|
|
01.04.2009, 15:27 | #266 | ||
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Цитата:
Если файл байтовый, значит он содержит байты, которые представляются в виде символов, каждый из которых может определять число от 0 до 255. Если открыть любой файл EXE в проводнике, то можно увидеть кучу "иероглифов" - это и есть представление чисел типа Byte. Цитата:
[hщык$4KЏЂуU¬«@c Заметно разницу в весе? ... 18 байт, ...у тебя 72 байта (переходы на строку тоже в счет), и при том, что карта мизерная совсем. Всегда следи за "весом" ресурсов, негоже раскидываться памятью, если в том нет надобности. Значит все байты идут подряд, без пробелов, ...мы же четко знаем, что один байт - одна клетка, ненужны пробелы, будем выполнять команду чтения одного байта Read. Записываем в цикле: Код:
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 01.04.2009 в 15:29. |
||
01.04.2009, 22:30 | #267 | |
Пользователь
Регистрация: 27.01.2009
Сообщений: 97
|
Уважаемый Beermonza, спасибо за разжевывание информации. С байтами я уяснил преимущества. Создал редактор карты и с его помощью записываю в одну строку байты в текстовый файл карты.
Цитата:
Последний раз редактировалось Алекс Ялта; 01.04.2009 в 22:34. |
|
02.04.2009, 16:50 | #268 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Подробно о заполнении банка текстур...
Сначала как всегда "на пальцах" немного теории. Цель - загрузить текстуры в банк, исходя из кода, считанного с файла, и не допустить дублирования, если в этом нет надобности. Логически все выглядит так. У нас есть некий файл карты, мы можем его "читать" по одному байту. У нас есть одномерный массив, в который мы будем записывать текстуры. Очевидно, что понадобится перебор банка текстур, с целью поиска уже существующей текстуры по коду карты. А если текстура так и не была найдена на переборе до ближайшей свободной ячейки банка, то значит нужно записать ее в эту первую свободную ячейку, после всех занятых. Чтобы долго не кувыркаться со стандартными командами, добавим в тип банка две записи Name и TexUses:
Код:
Код:
Код:
С переходами GoTo работать просто, нужно только указать в процедуре, перед ее началом (begin) запись метки: Label M;
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
05.04.2009, 13:57 | #269 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 225
|
са сейчас мучаюсь пока ничего невышло если выйдет напишу как смастерил, по последнему посту вообще неполучаеться хотя подход правельный я всё понимаю но реализовать немогу программа не та.
щас пользуюсь просто вот таким масивом Код:
а в программе уже зависимость от проходимость про проверке след клетки да вот мой цикл считавания: Код:
вот что у мну получаеться КОРОЧЕ МЕНЯ ВСЕ уже достало дайте простой пример проги чтобы просто загружалась карта пусть даже с 2 обьектами, любое управление 1 обьект фон 2 ой непроходимый так будет понятнее Последний раз редактировалось IvaniuS; 05.04.2009 в 18:28. Причина: допишу |
05.04.2009, 18:08 | #270 |
Пользователь
Регистрация: 27.01.2009
Сообщений: 97
|
Прозрачность спрайтовой анимации
Разбираюсь со способами вывода анимации на форму при помощи спрайтов, размещенных в едином Битмапе. У меня при выводе анимации каждый последующий кадр просто накладывается на предыдущий. Не могу понять как в таком случае затирать предыдущий кадр фоном? Код такой:
Код:
Последний раз редактировалось Алекс Ялта; 05.04.2009 в 18:10. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хорошие уроки | Render | Общие вопросы Delphi | 9 | 15.09.2012 07:13 |
Акцесс вопросы новичков | Yaga | Помощь студентам | 4 | 02.06.2008 00:16 |
Учебники для новичков в програмировании | Рар | Общие вопросы Delphi | 6 | 08.01.2007 08:07 |