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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2009, 10:09   #1
BASSON_XVI
Горю
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 10
Стрелка Решил сделать простенькую РПГ

Здравствуйте. Тоже вот решил сделать простенькую РПГ. Проблема в определения номера ячейки по координатам x,y. Карта у меня заполняется 6 угольным тайлом разрешение 72х72 вот таким:

Заполняю им карту так:
Код:
  c:=0;
  for a:=0 to 9 do
  begin
    for b:=0 to 9 do
    begin
      Screen.Canvas.Draw(a*54,b*72+c,Maps[b+1,a+1].TGraph);
    end;
    if c = 0 then c:=36 else c:=0;
  end;
Но вот просчитать находится ли пиксел в этом 6 угольнике не могу. в квадрате или прямоугольнике труда не составляет. Может подскажете как узнать в какой по счету ячейки сейчас курсор?

Последний раз редактировалось BASSON_XVI; 13.12.2009 в 10:11.
BASSON_XVI вне форума Ответить с цитированием
Старый 13.12.2009, 11:48   #2
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Код:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 caption:='Столбец: '+inttostr(x div 54+1)+'; Ряд: ';
 if ((x div 54) mod 2=0) then
  caption:=caption+inttostr(y div 72+1) else
  caption:=caption+inttostr((y-36) div 72+1);
end;
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 13.12.2009, 13:26   #3
BASSON_XVI
Горю
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 10
Печаль

Цитата:
Сообщение от russian-stalker Посмотреть сообщение
Код:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 caption:='Столбец: '+inttostr(x div 54+1)+'; Ряд: ';
 if ((x div 54) mod 2=0) then
  caption:=caption+inttostr(y div 72+1) else
  caption:=caption+inttostr((y-36) div 72+1);
end;
Немного не то что нужно я могу посчитать сдвиг по У на четных столбцах, но вот как посчитать Х в этих ячейках где он в острых углах ячейки?
То есть если подвести к левому острому углу скажем 1 ячейки 2 столбца, то ваш код скажет что это не 2 столбик а первый, так как сетка получается прямоугольной по ширине (Х), а ячейки ромбовидные.
Вроде правильно сказал что получается.


Решил проблему создав маску в которой сам ромбовидны тайл закрасил черным а пустые края разными цветами. Короче вот ссылка на мануал:
Изометрия
П.с. Спасибо что откликнулись и надеюсь меня не накажут за ссылку!

Последний раз редактировалось BASSON_XVI; 13.12.2009 в 13:32.
BASSON_XVI вне форума Ответить с цитированием
Старый 13.12.2009, 17:19   #4
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию

BASSON_XVI, а исходник вашего проекта можете здесь выложить? У меня аналогичная задача с матрицей из шестиугольников, тоже игровой проект
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты
apromix вне форума Ответить с цитированием
Старый 13.12.2009, 18:07   #5
BASSON_XVI
Горю
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 10
Радость

Да особо пока не чего нет.. Сессия по 20 минут в день свободного времени.
Вобщем вот начал делать редактор карт для игрухи.. не работает он, но все
может пригодиться что.
Вложения
Тип файла: rar DMW Map Edit.rar (21.4 Кб, 32 просмотров)
BASSON_XVI вне форума Ответить с цитированием
Старый 13.12.2009, 18:50   #6
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию

Прикольно получилось Редактор будет отдельной прогой от игры или встроенным в нее? Со встроенным мне кажется удобнее, нажал, к примеру E и прямо в игре редактируешь уровень, потом жмешь G и дальше тестиш игру Посмотрел я "Изометрию", и решил отказаться от шестиугольного тайла в пользу широкого ромба - посовременней смотрится как-то. Если тебе не важна форма тайла (ромб или шестиугольник), можем делать вместе редактор и поле, все одинаково на начальном этапе и для рпг и для стратегии.
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты
apromix вне форума Ответить с цитированием
Старый 13.12.2009, 20:44   #7
BASSON_XVI
Горю
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 10
По умолчанию

да я бы был не прочь просто я не художник и поэтому я решил взять(стырить) текстуры которые мне очень нравятся с пошаговой РПГ Wesnoth.
Если у тебя есть какие нибудь тайлы хотя бы ландшафта (земли) ромбовидные которые мне подойдут то без проблем. скорее всего с ромбовидными геморрою меньше будет чем с 6 угольными хотя...

А вообще планы у меня конечно наполеоновские. Это делать графику на движке GLSence или на OpenGL сделать собственный движок для игры... Но пока мне бы сделать простенький редактор карт, чтение и запись карты в файл. Ну а по игре нормально описать персонажа научиться его драться собирать предметы надевать их ну и НПС сделать!

Последний раз редактировалось BASSON_XVI; 13.12.2009 в 20:48.
BASSON_XVI вне форума Ответить с цитированием
Старый 13.12.2009, 21:32   #8
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
Радость

Вот моя версия происходящего. Тайл - широкий ромб. Тоже не смог получить и преобразовать координаты мышки. В исходнике легко запутаться, я там несколько вариантов перепробовал, чего там только нет, даже 6-ти угольный тайл пробовал Но для наших целей (редактор), там есть хороший и правильный вывод Bitmap, ничего не мигает и не нужно таймер, кадр отрисовывается только тогда, когда действительно нужно сменить картинку. Там же есть текстуры (спрайты), тырил с FreeCol
Вложения
Тип файла: rar FantasyCiv.rar (76.9 Кб, 38 просмотров)
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты
apromix вне форума Ответить с цитированием
Старый 13.12.2009, 22:32   #9
BASSON_XVI
Горю
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 10
Радость

Избавится от моргания не могу... Возможно это из за большой матрицы карты она у меня 1000х1000. Она конечно не вся прорисовывается, а только 10х10 видимых ячеек.
В наработке игры кстати нормально все не моргает. Может это из за того что я обработку событий курсора добавил, так как в игре курсор не обрабатываю.
Кстати вот архив запусти экзешник сделал так что теперь нарисованную мапу можно сохранить и загрузить в редактор а также кнопками двигать карту на 1 ячейку вверх вниз и т.д. Но тут тоже из за ромбовидных тайлов казусы с передвижением мапы которые я решил смешением по Х не на 1 ячейку а на 2 сразу.
Вложения
Тип файла: rar DMW Map Edit.rar (417.8 Кб, 23 просмотров)

Последний раз редактировалось BASSON_XVI; 13.12.2009 в 23:04.
BASSON_XVI вне форума Ответить с цитированием
Старый 13.12.2009, 23:09   #10
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию

Уже лучше, и не мигает Переделай на широкие ромбовидные тайлы, я тайлов найду много, часть нарисую сам. Да, и скроллинг карты кнопками - не самый лучший вариант, но на начальном этапе нормально. Загрузить сохраненную карту неудалось
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты

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


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация РПГ... Shadow_1329 Gamedev - cоздание игр: Unity, OpenGL, DirectX 20 16.08.2009 18:40
Создание игры РПГ (RPG) vzov Qt и кроссплатформенное программирование С/С++ 18 13.05.2009 03:12
Помогите в создании броузерной РПГ emogot Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 06.02.2009 09:17
Магический квадрат v 0.01 (РПГ демо) Phoenix77 Gamedev - cоздание игр: Unity, OpenGL, DirectX 23 03.09.2008 02:20
РПГ игра Принц Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 10.06.2008 15:57