Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

Не совсем понял, GIF-анимация применяется?
__________________
Руководитель проекта MMO 2D RPG
Beermonza вне форума   Ответить с цитированием
Старый 14.06.2008, 19:32   #112
mutabor
Телепат с дипломом
Профессионал
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,928
Репутация: 1570

icq: 401708834
По умолчанию

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

Значит есть смысл пояснить, как работает система смены анимации, если на каждое состояние персонажа свой набор кадров. К примеру, у нас 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

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

icq: 563981551
По умолчанию

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

icq: 563981551
По умолчанию

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

icq: 401708834
По умолчанию

Между открытым и закрытым ртом хотя бы два промежуточных положения должно быть. Нужен счетчик в таймере, когда счетчик достиг числа спрайтов, обнуляй его. В случае с пакманом можно схитрить, закрывает рот он также как и открывает, так что можно для закрытия спрайты не делать, а использовать те же только в обратном порядке:
Код:

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;

Последний раз редактировалось mutabor; 16.06.2008 в 00:01.
mutabor вне форума   Ответить с цитированием
Старый 15.06.2008, 23:03   #117
mutabor
Телепат с дипломом
Профессионал
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,928
Репутация: 1570

icq: 401708834
По умолчанию

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

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

icq: 563981551
По умолчанию

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

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

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

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

Меню игры (интерфейс) выполнить легче всего на панельках (Panel), которые могут содержать графику, кнопки, ...да все, что угодно.
__________________
Руководитель проекта MMO 2D RPG

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


19:02.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru