Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2008, 15:10   #111
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Не совсем понял, GIF-анимация применяется?
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 14.06.2008, 19:32   #112
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Сообщение от Beermonza Посмотреть сообщение
Не совсем понял, GIF-анимация применяется?
Нет, это я из спрайтов GIF смастерил, чтобы к сообщению прилепить.
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 вне форума Ответить с цитированием
Старый 15.06.2008, 18:04   #113
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Значит есть смысл пояснить, как работает система смены анимации, если на каждое состояние персонажа свой набор кадров. К примеру, у нас 10 кадров на каждое состояние (пусть будет качество ).

Анимация персонажа (файлы bmp):
1-10 - стоит;
11-20 - приседает;
21-30 - идет влево;
31-40 - идет вправо;
41-50 - прыгает влево;
51-60 - прыгает вправо;
61-70 - стреляет (бьет) влево;
71-80 - стреляет (бьет) вправо;

Можете сделать меньше кадров, кому как нравится, или точнее, кому как ленится. Зеркальное отражение одного и того же действия я умышленно не применяю, и вам того же советую.
Создайте в проекте новую папку, обзовите как угодно и поместите туда все файлы. Подгружаются все кадры подряд через цикл, который уже был показан ранее.
Теперь вызов нужной секции кадров из массива сводится к такому способу:

BitBuf.Canvas.Draw(x, y, sprites[t+n]); где: t - задает тип анимации, а n - номер кадра. Теперь нужно будет только прописать назначение типа t на клавишах, какой тип нужно показывать.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его

Последний раз редактировалось Beermonza; 10.06.2013 в 16:20.
Beermonza вне форума Ответить с цитированием
Старый 15.06.2008, 22:25   #114
L_M
Форумчанин Подтвердите свой е-майл
 
Регистрация: 25.02.2008
Сообщений: 289
По умолчанию

Ну с этим вроде понятно, хотя я сейчас на анимацию вообще плюнул и у меня, так же как и в примере, двигается шарик. Расскажите, как:
1.организовать бонусы, конкретно как они будут воздействовать на персонажа.
2.враги, как организовать их движение: сделать тупо чтобы ходили вперед-назад, или чтобы шли к игроку?
3.карта-ее основа двумерный массив, но как подобрать размер? И быть с динамичными объектами: бонусами, монстрами и пр. Записывать их в массив или проверять по координатам?(их будет не много)
Упс...
L_M вне форума Ответить с цитированием
Старый 15.06.2008, 22:29   #115
L_M
Форумчанин Подтвердите свой е-майл
 
Регистрация: 25.02.2008
Сообщений: 289
По умолчанию

кстати, а как насчет цикличности анимации? типа пакмана-открывает и закрывает рот-надо рисовать каждый кадр или, например, менять n:=-1?
Упс...
L_M вне форума Ответить с цитированием
Старый 15.06.2008, 22:52   #116
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Между открытым и закрытым ртом хотя бы два промежуточных положения должно быть. Нужен счетчик в таймере, когда счетчик достиг числа спрайтов, обнуляй его. В случае с пакманом можно схитрить, закрывает рот он также как и открывает, так что можно для закрытия спрайты не делать, а использовать те же только в обратном порядке:
Код:
var
n: integer = -2;
c: integer = 4; //кол-во спрайтов для одного движения рта (открыт, полуоткрыт, 
//полузакрыт, закрыт)
...
begin
Inc(n);
if n > 3 then n:=-2;
BitBuf.Canvas.Draw(x, y, sprites[t+Abs(n)]);
end;
2 Beermonza, я не так смену кадров делал, просто высчитывал номер. Например всего 24 спрайта, 4 направления по 6 спрайтов.
n - номер спрайта
i - счетчик (1 - 6)
d - направление (0 - 3)
n := d * 6 + i;
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; 16.06.2008 в 00:01.
mutabor вне форума Ответить с цитированием
Старый 15.06.2008, 23:03   #117
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
1.организовать бонусы, конкретно как они будут воздействовать на персонажа.
Как ты придумаешь, так и будут.
Цитата:
2.враги, как организовать их движение: сделать тупо чтобы ходили вперед-назад, или чтобы шли к игроку?
То же самое, и так и так можно. Сложность прохождения (да и программирования) от этого будет меняться.
Вперед-назад вообще элементарно, дошел до стены - развернулся, до развилки - повернул в случайную сторону.
Цитата:
3.карта-ее основа двумерный массив, но как подобрать размер? И быть с динамичными объектами: бонусами, монстрами и пр. Записывать их в массив или проверять по координатам?(их будет не много)
Монстров в массив (но не в карту, если ты это имел ввиду) и по координатам проверять столкновение, а как же еще.
Monsters: array of TMonstr;
А что с картой? В каком смысле подобрать размер?
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 вне форума Ответить с цитированием
Старый 16.06.2008, 14:50   #118
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Думаю, имеется в виду, если карта больше экрана, как корректно сдвигать карту относительно него. Тут карты могут быть любого размера, главное помнить размеры, и держать персонажа по центру экрана.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 18.06.2008, 22:02   #119
L_M
Форумчанин Подтвердите свой е-майл
 
Регистрация: 25.02.2008
Сообщений: 289
По умолчанию

нет, я имею в виду, что вот установлю я разрешение 800*600 и какими делать квадраты?(при полноэкр. режиме)
бонусы я не знаю как сделать. Например ускорение-если увеличивать сдвиг, будет получаться несоответствие с анимацией, сложности с проверкой столкновения и проч.
еще вопрос: что делать при смерти перс.? Ну я имею ввиду как это делать. Отключать таймер и писать Game Over? А заново? И вообще как организовать меню?
Упс...
L_M вне форума Ответить с цитированием
Старый 19.06.2008, 21:10   #120
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от L_M
нет, я имею в виду, что вот установлю я разрешение 800*600 и какими делать квадраты?(при полноэкр. режиме)
Размеры у вас не в единицах метрики, а в конкретных пикселах. Что произойдет если в Windows сменить разрешение с 1024x768 на 800x600? ...останутся ли иконки прежнего размера? Вы имеете дело не с Direct3D, где изменив разрешение получите те же размеры объектов но уже с более крупными пикселами.

Цитата:
Сообщение от L_M
...бонусы я не знаю как сделать. Например ускорение-если увеличивать сдвиг, будет получаться несоответствие с анимацией, сложности с проверкой столкновения и проч.
Создайте выражение, главный параметр - скорость анимации, это интервал таймера анимации, значение выражения - сдвиг, на который смещается персонаж. Уравняйте так, чтобы совпадало со скоростью анимации скорость перемещения персонажа.

Цитата:
Сообщение от L_M
...еще вопрос: что делать при смерти перс.? Ну я имею ввиду как это делать. Отключать таймер и писать Game Over? А заново? И вообще как организовать меню?
Начальные параметры следует хранить в отдельных массивах записей, при выполнении определенных условий "смерть", "начать сначала", "конец игры", нужно считывать записи и выполнять процедуру обновления игрового мира - это банальное присвоение текущим значениям переменных состояния игрового мира тех, что находятся в записях. Например, у вас персонаж появляется в некоторой точке при запуске игры - это тоже два параметра X и Y, они должны быть в записях по-умолчанию. Нужна масса параметров, которые четко описывают состояние игрового мира (повторюсь, у меня их 48, ...где кто находится и что делает).

Меню игры (интерфейс) выполнить легче всего на панельках (Panel), которые могут содержать графику, кнопки, ...да все, что угодно.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его

Последний раз редактировалось Beermonza; 10.06.2013 в 16:23.
Beermonza вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хорошие уроки Render Общие вопросы Delphi 9 15.09.2012 07:13
Акцесс вопросы новичков Yaga Помощь студентам 4 02.06.2008 00:16
Учебники для новичков в програмировании Рар Общие вопросы Delphi 6 08.01.2007 08:07