|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.06.2008, 21:03 | #101 | ||
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Хочу сделать маленькое дополнение, в кач-ве заполнителя ячеек карты в простых играх можно применить обычный byte.
В программе эта карта будет иметь вид: map: array of array of byte; В файле карта будет иметь вид: 001012200... 003012200... 041015500... ... Тип byte позволяет иметь до 256-ти различных видов "заполнителя" карты, чего в аркаде хватает с головой, обычно хватает и десяти. Если все же их больше десяти, то в файле массив будет иметь несколько другой вид, нужен разделитель - пробел. 0 10 12 0 1 2 2 0 0... 0 15 3 0 1 22 2 0 0... 0 4 1 0 1 5 5 0 0... ... В заключение приведу реальный уровень из реальной игры Диггер (не оригинал, ремейк) Цитата:
Цитата:
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)
Проверь себя! Онлайн тестирование | Мой блог |
||
10.06.2008, 21:20 | #102 | |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Цитата:
p.s. А-а, все, увидел: MapMas[x,y].TGTexture:=brg; По сути тот же указатель. Битмап будет просто ссылаться на другой битмап (здесь на brg). Продолжение (про карту of byte) Как же загружать картинки при такой карте? Очень просто. Создаем массив битмапов, или же используем стандартный контрол TImageList. Загружаем в него картинки так, чтобы их нумерация совпала с элементами карты. Т.е. если у нас трава в карте это 0, то и картинка с травой тоже должна иметь индекс 0.
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)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 10.06.2008 в 21:35. |
|
11.06.2008, 10:15 | #103 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,691
|
L_M, заказывали пример, вот, получите и распишитесь. Небольшая игра по типу лабиринта, если усовершенствовать.
Управление: left,up,right,down. Цель: добраться до конца уровня к маленькому квадратику. Будет время, выложу пример аркады, в которой прыгать нужно, в этом же стиле. Как прикрутить картинки, тебе уже рассказали. |
11.06.2008, 12:22 | #104 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,691
|
Вот и второй пример поспел к раздаче. игра похож на предыдущую, только теперь она похожа на стандартную игру на Nokia, где мячик прыгает.
Управление: left,right,space. Цель: добраться до маленького квадратика. Офф-топ: я завтра уезжаю на две недели, не теряйте. =) Последний раз редактировалось Kostia; 11.06.2008 в 12:30. |
11.06.2008, 22:08 | #105 |
Форумчанин Подтвердите свой е-майл
Регистрация: 25.02.2008
Сообщений: 289
|
Спасибо всем. А про TImageList объясните: что такое, зачем использовать(а не массив), как пользоваться. И почему модель уровня описана как объект, а не например просто запись?
Упс...
|
11.06.2008, 23:26 | #106 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
TImageList это и есть массив, никаких особых преимуществ он не даст, просто один из способов. Польза есть в обоих случаях, в первом научишься использовать TImageList (он пригодится в прикладных программах), во втором научишься создавать динамические массивы, в частности из битмапов (тоже полезно =).
Как пользоваться написано в справке и в книгах по Дельфи. Не отходите от темы )
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)
Проверь себя! Онлайн тестирование | Мой блог |
12.06.2008, 17:24 | #107 | ||
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Цитата:
Не вижу смысла использовать ImageList, чтобы оставить его пустым, и при запуске заполнять эго картинками, ...или может загрузить картинки сразу и хранить в EXE? , побойтесь Бога. Вот такой вариант мной применялся до недавнего времени: Код:
Почему модель описана собственным типом? Конечно, то, что было показано - упрощенный вариант, ...а бывает, что можно не только проходить или нет, но и проходить с потерями, например если в клетке стоит огонь, или вода, ...в общем параметров может быть очень много (у меня 48). Цитата:
Так вот, при этой системе размер файла будет в разы меньшего объема, и плюс, нужно считывать подряд байт за байтом. Вот что может быть в файле: кЩxХС®AТ•Ф —dЌmҐEzA•˜№ UbJЃм•мп/¤ Л**@UMCtmЇ ...а теперь представьте как это выглядит с пробелами и по 2-3 байта на одну клетку карты. Никаких прочих алгоритмов писать не нужно, просто банальное read. Вот пример считывания карты с текстового файла: Код:
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 10.06.2013 в 16:16. |
||
12.06.2008, 19:15 | #108 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Ошибок нет, просто дополню до рабочего варианта
Код:
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)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 12.06.2008 в 19:18. |
12.06.2008, 22:12 | #109 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Отлично! Идем дальше, ...уровень построить можно, Kostia показал метод управления "персонажем", ...показываем методы выполнения анимации, конкретно система (как загружать картинки и куда выше было показано), смело несколько вариантов, чтобы видеть сходства и различия, причем помним, что анимация на прыжки и передвижения отдельная, там же и прочие типы.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
13.06.2008, 15:34 | #110 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Мне кажется тут все предельно просто и реализации отличаться будут лишь деталями.
Для начала как хранить спрайты? Я знаю три способа: прямоугольная карта, в один ряд и отдельными файлами. Я делал отдельными файлами, на то время с другими способами у меня были некоторые проблемы =) Грузил их в массив, и потом в таймере крутил, нужно скорость смены спрайта так расчитать чтобы было похоже что персонаж идет, а не семенит ногами на месте или чешет семимильными шагами. Для этого или подобрать интервал таймера, или же использовать счетчик. Код примерно такой: Код:
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)
Проверь себя! Онлайн тестирование | Мой блог |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хорошие уроки | Render | Общие вопросы Delphi | 9 | 15.09.2012 07:13 |
Акцесс вопросы новичков | Yaga | Помощь студентам | 4 | 02.06.2008 00:16 |
Учебники для новичков в програмировании | Рар | Общие вопросы Delphi | 6 | 08.01.2007 08:07 |