|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.01.2009, 05:43 | #601 |
Пользователь
Регистрация: 18.12.2008
Сообщений: 47
|
По игре
Прочитал выборочно половину всей темы.
В данный момент тоже занимаюсь разработкой небольшой игры-гоночек на делфи 7. Счас мучаюсь с проблемой поиска пути . В основном все понятно, ток не понимаю как комп должен определять препятствие . Счас пробую решить проблему с помощью цвета. Отвлекаясь от моего, вы уже придумали сценарий игры ? и выложите плз последние скрины. |
08.01.2009, 06:20 | #602 |
Пользователь
Регистрация: 18.12.2008
Сообщений: 47
|
Еще вопрос
Дан массив TPoint. a: array[1..M, 1..N] of TPoint. const M=480, N=640.
Как присвоить a[1,1] (0,0) по x и по y. Есть конечно вариант a[1,1]:=Point(0,0), но не знаю, присвоится ли каждому елементу массива 0 и по x и по y ? Кто знает, подскажи плз =) |
08.01.2009, 20:50 | #603 | |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Цитата:
По поводу поиска пути. Искать препятствия по цвету - это извините, ерунда. Должен быть скелет карты, там все объекты отмечены, все разбито на сектора, клетки, ...куда можно ехать а куда нет - это только кодировка ячеек двумерного массива. Полистайте эту тему подробнее, и еще "Уроки по созданию игр для новичков". Поиск пути работает с массивом, определяет препятствия по коду и строит путь в другом массиве, уже одномерном, как последовательность смещений.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
09.01.2009, 00:42 | #604 |
Пользователь
Регистрация: 18.12.2008
Сообщений: 47
|
Можешь называть меня на ты. Тебя, я думаю, тоже можно?
А теперь к поиску пути. То есть при сканировании элементов массива в цикле необходимо заполнять его преградами? А насчет цвета я объясню на примере: Тебя дан форма зеленого цвета(640x480).Снизу экрана к центру проведены две параллельные линии желтого цвета(1 линия идет выше центра на 50пикс.).Потом линии заворачивают направо и идут до конца экрана.Расстояние между линиями везде 50пикс.(например). Начало старта снизу и весь путь идет вдоль этих линий. С помощью 2 циклов я определяю цвет каждой точки экрана и "желтые" точки кидаю в еще 1 массив.И создаю 3-ий массив с оставшимися точками. |
09.01.2009, 01:04 | #605 |
Пользователь
Регистрация: 18.12.2008
Сообщений: 47
|
Массив экрана
Правда, возникает проблема с координатами экрана, а именно в цикле несовместимые типы: Array и Integer? Что делать? Вот код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormPaint(Sender: TObject); private { Private declarations } public { Public declarations } end; const M=480; N=640; var Form1: TForm1; xs,ys,xf,yf: integer; //координаты старта и финиша c: array[1..N, 1..M] of TPoint; //массив для хранения оставшихся точек countc1,countc2: integer; implementation {$R *.dfm} procedure TForm1.FormPaint(Sender: TObject); const N=480; M=640; E=640; var i,j,k,l,x,y: integer; countx,county: integer; a: array[1..M, 1..N] of TPoint; //массив точек экрана b: array[1..E, 1..E] of TPoint; // для хранения точек цвета, не совпадающего с цветом формы begin countx:=1; county:=1; form1.Color:=clgreen; For i:=1 to M do begin For j:=1 to N do begin If a[i,j]<>form1.Color // проверка всех точек экрана then begin b[countx,county]:=a[i,j]; c[countc1,countc2]:=a[i,j]-b[countx,county]; countx:=countx+1; county:=county+1; countc1:=countc1+1; countc2:=countc2+1; end; end; end; For k:=1 to countx do begin // это для проверки не находятся ли For l:=1 to county do begin // точка старта внутри препятствия If (xs=b[k]) and (xy=b[l]) then begin break; ShowMessage('Not right start point!'); end; end; end; end; end. |
09.01.2009, 18:46 | #606 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Модель представления игрового пространства
Подумай сам, ...сколько тебе нужно обрабатывать пикселей, и какие габариты у одного объекта, в данном случае - гоночного автомобиля. Практика показывает, что для реального перемещения автомобиля достаточно секторов с половинными размерами от самого объекта, а то и больше, ...значит сами массивы модели пространства в разы уменьшаются, быстрее обрабатываются, и поиск пути с легкостью собирает пункты перемещения, указывая лишь контрольные из них, от одного из которых до другого нет препятствий, или же все по порядку, это не имеет значения при столь малых массивах.
На рисунке я показал массив поверхности, но вместо числового кода сразу поставил возможные спрайты, для наглядности. В реале же, там происходит определение по коду типа поверхности, а система передвижения автомобиля при каждом изменении сектора местоположения управляет скоростью, эффектами и звуками если хотите. Вся фишка в том, что на одном и том же секторе не может быть сразу двух автомобилей, его размер не позволяет поместить туда более одного автомобиля и сразу же упрощается система столкновений объектов. В основе проверка соседних секторов по периметру от текущего. Думаю все понятно, если нет, то спрашивай, по ходу разберемся.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
09.01.2009, 19:34 | #607 |
Пользователь
Регистрация: 18.12.2008
Сообщений: 47
|
Продолжение поиска пути
Здравствуй, уважаемый товарищ!
О методе поиска пути с помощью цвета понимаю, что это будет тормозить, но все же этот метод более гибкий для неизвестных карт, что ты по этому поводу думаешь? У меня к тебе глобальный вопрос по поиску путей(прямо относится к 1-ому вопросу): Редактор уровней или программист обязательно обозначает точки-координаты препятствий или вершины графа при создании уровня или он может их не обозначать(То есть алгоритм поиска пути сам может найти препятствия)? Или все же как в уроке 11 "создание игр для новичков" по мере сканирования массива ты сам расставляешь элементы массива как препятствия, малопроходимые области? Тогда вопрос следующий: как связать твою карту местности(массив) с экраном? P.S. Можешь плз ответить на все поставленные мною вопросы. Сразу извиняюсь за отобранное время(если время вообще есть). Сейчас покидаю форум и появлюсь где-то через час(но вы пишите). Заранее спасибо. |
09.01.2009, 21:08 | #608 | ||
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Подробно...
Хорошо, ...только не нужно приветствий и прочего не связанного с темой, мы тут все люди простые, общаемся друг с другом не зная друг друга, как рыбаки, не здрасте ни досвидания "ну че, клюет? ...на что ловишь?".
Цитата:
Цитата:
Если играл в игры типа Героев вторых, Империи, Варкрафт, Старкрафт да и в принципе подобные стратегии с редакторами, ...аналогичное там происходит, ...видно карту и все объекты, ...остальное - скелет, тебе не показывают, ...можно сделать координаты если нужно. В таком духе.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
||
09.01.2009, 22:40 | #609 |
Регистрация: 13.10.2008
Сообщений: 3
|
Попробуй алгоритм поиска пути A*
http://www.delphigfx.mirgames.ru/dat.../find_path.rar http://www.delphigfx.mirgames.ru/dat...ind_path_2.rar |
10.01.2009, 00:13 | #610 |
Пользователь
Регистрация: 18.12.2008
Сообщений: 47
|
Попробуй алгоритм поиска пути A*
Спасибо большое, мне очень поможет! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Уроки по созданию игр для новичков... | -=DeS=- | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 750 | 14.11.2017 20:26 |
Музыка программистов - как вы относитесь к АРИИ? | Весёлый Жека | Свободное общение | 46 | 10.10.2008 22:32 |
Конкурсы по созданию игр на Delphi | mutabor | Свободное общение | 0 | 15.06.2007 12:40 |
Работа по созданию ПО | remix | Фриланс | 3 | 22.04.2007 11:00 |