|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.10.2008, 15:13 | #21 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Представление и хранение данных
Тема "представления данных" довольно универсальна в своем использовании. Применить хранение данных строго по определению "один байт - один объект в клетке" - может быть ошибочным, или не дальновидным. Можно применить кодирование двух объектов в один байт, переведя в число, и математическим образом вычислять один и второй объект. Например, у вас 0 - 9 видов почвы, и 1 - 9 типов объектов, в числе от 10 до 99 можно закодировать все комбинации, и затем перевести в символ ASCI. Остается еще резерв кода символа до 100 и после, это переключатель на типы, такие как "зима" и "лето", или для объектов по усмотрению.
Размещать в файле данные через пробел я бы вообще не стал - это не рационально, наглядность вам ни к чему, если есть редактор, который использует файлы, тем более переносить по строчкам. Вместо пробелов может быть еще один байт данных, например, еще одного двойного слоя, или расширения типов объектов и поверхностей до 256 вариантов для каждого соответственно.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
22.10.2008, 15:23 | #22 |
Заблокирован
Регистрация: 12.08.2008
Сообщений: 166
|
Если объектов на уровне дофига и не все статичны, иподвергаются определенным законам, к примеру физики, то думаю не помешал бы какой нибудь скрипт типа луа.
|
22.10.2008, 16:02 | #23 | |
Участник клуба
Регистрация: 12.08.2008
Сообщений: 1,977
|
Цитата:
Кстати! Кто-то может объяснить - что такое "репутация" под аватарой, кто присваивает ей значение и, самое интересное, как говорят у нас в Одессе -"Шо я с энтого буду иметь ?".
И не сомневайся даже ... отдых - кайф, работа - лажа!
Последний раз редактировалось DeKot; 22.10.2008 в 16:07. |
|
22.10.2008, 16:14 | #24 | |||
Заблокирован
Регистрация: 12.08.2008
Сообщений: 166
|
DeKot
Цитата:
Вот я тебе поднял репу +1 (на весы нажал) Цитата:
Цитата:
|
|||
22.10.2008, 16:20 | #25 |
Заблокирован
Регистрация: 12.08.2008
Сообщений: 166
|
На счет луа читай тут, с этого поста.
http://forum.mirgames.ru/index.php?s...ndpost&p=87220 Сам с ним не работал, но принцип жизнедеятельности знаю. |
22.10.2008, 16:30 | #26 | |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
OFF: Обсуждать репутацию тут не принято, ...если уважают форумчане, то соответственно и ...
Цитата:
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
22.10.2008, 23:40 | #27 |
Капсула от спама
Форумчанин
Регистрация: 04.03.2008
Сообщений: 779
|
Вот, недавно делал редактор, его фишка - стены, ставите просто стену, а они где надо слипаются.
Там 2 вида стен, кирпичные и бетонные. Но можно подключать и свои структуры, прописав в файле more/more.ini еще 3 строчки: [имя (что отображаетса)] [относительная ссылка на мини-рисунок] [относительная ссылка на рисунок, что будет рисоватся на карте] Формат файла более чем стандартен: [x ширина карты(учитывая 0)] [y высота карты(учитывая 0)] [сама карта] в карте чтобы обозначить ячейку искользуется код x+32, то есть 0 это символ пробела, 1 это "!" и тд. Оч удобно т.к. под рукой минимум 128 текстур. Чтобы узнать какому куску стены какой код - гляньте папку who_is_who(на мамом деле тем картинки от 1 до 33, но мы ведь знаеш что надо отнять 1). Читаем, берем x:=ord(str)-32 и получаем код. Ну и те же картинки можно в имжлист вкинуть да отображать в игре))) Все "свои" структуры начинаются с кода 33(+32), то есть с символа А. ПыСы: Скажу сразу, за баги не отвечаю
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг Последний раз редактировалось Dj_smart; 23.10.2008 в 00:14. |
23.10.2008, 22:51 | #28 |
Участник клуба
Регистрация: 29.01.2008
Сообщений: 1,039
|
To Dj_Smart. Неплохой редактор. Как-нибудь объясните мне почему у вас карта весит 500 байт, а моя 8 килобайт? (Предпологаю это метод, связанный с AsignFile и другими похожими). В общем у меня так сказать ступор наступил. Пока что я не хочу переделывать код программы (игры) и поэтому после того, как я уже сделаю игру, перепишу и "движок". Так что без обид. .
В чём заключается мой ступор. В общем не могу сделать проверку на то, что игрок падает, когда по ним нет земли. Пробовал проверять координаты земли и игрока, если земли нет, то падать, пока не зайдёт за черту. В принципе, вы скажите :"Легко!". НО. В своей игре, чтобы двигать игрока в разные стороны, я стираю ВСЁ, и заново по всем координатам всё рисую. И игрока в том числе. Но с падением не могу разобраться. Кидаю исходник игры с тестовой картой. Помогите, пожалуйста. P.S. Карта называется GameTest1.txt |
23.10.2008, 23:21 | #29 | |
Капсула от спама
Форумчанин
Регистрация: 04.03.2008
Сообщений: 779
|
Цитата:
1. Написанием собственного вдижка например массив, в котором стены - mas x,y координаты игрока 32 размер клетки тогда проверяем Код:
2. юзать уже написанные, например DelphiX (многие не согласятся, но это ИМХО хороший движок) там место имейджев юзай спрайты и если нет столкновений(метод collisium), то опускать спрайт. подробнее на www.delphiworld.narod.ru
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг Последний раз редактировалось Beermonza; 24.10.2008 в 15:38. |
|
24.10.2008, 07:03 | #30 | |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Цитата:
Например карта 16х28 если использовать три байта на клетку (тип клетки, и координаты по ширине и высоте) займет 16х28х3=1344 байта. Считывать так: читаем по три байта и помещаем код состояния клетки (первый байт) в соответствующие координаты (второй и третий) в матрице. Если оптимизировать метод хранения, можно сделать так: один байт в начале - ширина карты, один - высота, и дальше подряд только байты с типом клетки. Считаем: 1 + 1 + (16*28) = 450 байт. При считывании нужно прочитать первые два байта с размерами и дальше последовательно считывая байты переходить каждые 28 байт (ширина) на следующий ряд матрицы. У тебя же так: Ground1 (7 байт слово + 2 байта перенос) 50 (2 байта цифры + 2 байта перенос) 25 (2 + 2) Итого на одну клетку 9 + 4 + 4 = 17 байт, в зависимости от длины слова идентификатора и кол-ва цифр в координатах, плюс минус два байта, будем считать 15. А если там еще и дерево, еще около 15 байт. Итого примерно 30 байт на клетку. При учете плотности зеленых насаждений 25%, размер такой карты будет (16*28)*0,25*30 + (16*28)*0,75*15 = 8400 байт. P.S. Можно сохранять файлы как текстовые, только нужно привести байты к типу Char, или непосредственно кодами записывать #0, #1 ... #255. При этом никаких переносов и пробелов, выглядеть такой файл будет примерно так: alfjkej1owjыд8цущо5аыоsljfeow5ijfls 2dkj... и так далее, но нужно избегать кодов 9,10,13,26 они управляющие.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось Beermonza; 24.10.2008 в 15:39. |
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Показать в окне "Мой компьютер" | Comer_Jus | Общие вопросы Delphi | 3 | 27.09.2008 03:28 |
Помогите с программой на С++ "текстовый редактор с поддержкой нескольких кодировок" | alwa | Помощь студентам | 1 | 05.06.2008 19:48 |
Редактор для "Команч 4" | Air | Свободное общение | 0 | 31.05.2008 13:54 |
Добавление компонентов в "мой компьютер" | Oleg-vp | Общие вопросы Delphi | 1 | 20.11.2007 15:40 |