Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.07;
Скачать: CL | DM;

Вниз

2Д исходник   Найти похожие ветки 

 
KiberKot ©   (2006-04-04 14:25) [0]

Срочно нужен исходник 2Д стрелялки, для практического изучения кода полноценной игры (не навороченной), в котором присутствует:
1) Главный герой, с разнообразным оружием
2) Враги, с мозгами и оружием
3) Карта с различными преградами

Подскажите пожалуйсто где найти или поделитесь кодом (если не жалко)
З.Ы. заранее спасибо


 
KiberKot ©   (2006-04-04 14:26) [1]

ЗЫ2  написанной на DirectX


 
Mortem ©   (2006-04-04 15:04) [2]

http://code.darthman.com
В разделе "Скачать\Конкурсы" качаем "Конкурс № 5 - Битва".


 
Mortem ©   (2006-04-04 15:04) [3]

P/S/ Не помню только, есть ли там работы на DX... ^___^


 
KiberKot ©   (2006-04-04 15:06) [4]

да я только от туда, но этого конкурса еще не качал, щас посмотрю


 
KiberKot ©   (2006-04-04 15:10) [5]

круто, вот только интересно, почему они все одинаковые
и мне бы еще вид с боку (было бы очень хорошо)


 
KiberKot ©   (2006-04-04 16:02) [6]

heeelp !!!


 
XProger ©   (2006-04-04 16:54) [7]

Игра - http://timeforkill.mirgames.ru/img/scr/5.jpg
Исходник - http://timeforkill.mirgames.ru/files/sdk/TFK_047_source.rar


 
Mortem ©   (2006-04-04 17:10) [8]


> XProger ©   (04.04.06 16:54) [7]

Первый пост прочитай... ^___^


> KiberKot ©   (04.04.06 15:10) [5]

Они все одинаковые потому, что по сценарию предлагалось скачать набор арта для игры, чтоб не заморачиваться со своим. Вот все и не стали заморачиваться...


 
XProger ©   (2006-04-04 17:10) [9]

Mortem
1) есть
2) есть
3) есть


 
Cash ©   (2006-04-04 17:14) [10]

XProger ©   (04.04.06 17:10) [9]:
:)))
не [0], а [1]!
Там написано:

> KiberKot ©   (04.04.06 14:26) [1]
> ЗЫ2  написанной на DirectX


 
XProger ©   (2006-04-04 17:48) [11]

ЗЫ2 только это на OpenGL ;)
ЗЫ3 остальное в примерах на mirgames.ru


 
KiberKot ©   (2006-04-04 17:56) [12]

Блин, деньги на Интернет заканчиваются, прийдется завтра качать наверно


 
Mortem ©   (2006-04-04 18:02) [13]


> XProger ©   (04.04.06 17:10) [9]

Какой ты программист после этого? ^___^


 
XProger ©   (2006-04-04 19:13) [14]

Mortem, я шахтёр, и этого не стисняюсь в отличии от некоторых геологов ;)


 
KiberKot ©   (2006-04-04 19:47) [15]

А я другой комп нашел :)
Вобщем не катит твоя прога, она конечно реальная, но согласись трудно учиться созданию игор начинающему DirectX-еру на крутой игре написанной на OGL
ЗЫ мне бы че попроще


 
KiberKot ©   (2006-04-04 19:47) [16]

А я другой комп нашел :)
Вобщем не катит твоя прога, она конечно реальная, но согласись трудно учиться созданию игор начинающему DirectX-еру на крутой игре написанной на OGL
ЗЫ мне бы че попроще


 
KiberKot ©   (2006-04-04 19:50) [17]

ЗЫ.18 нужно что то, по типу Дендивских стрелялок


 
Pa5ha   (2006-04-04 20:26) [18]

Кот, учится надо не на примерах игр. Сначала надо научится просто картинки выводить, потом их анимировать и т.д. В общем, есть хорошая книга "DirectX графика в проектах Delphi" или как-то так. М.Краснова. В примерах к этой книге есть какая-то стрелялка. Для Тебя наверно самое то. Я так понимаю, DirectDraw. Поищи на d3dengine.narod.ru , я вроде выкладывал. А вообще, этот позорный сайт надо переделать :) Как-нить займусь на досуге. Правда, директикс не рулит. От него я отказался.


 
KiberKot ©   (2006-04-04 20:42) [19]


>  "DirectX графика в проектах Delphi"

По ней я и учусь, но в ней примеры глючные вхлам и нету всего что мне нужно
Про игру там только вывод спрайтов, и различные приколы в работе с графикой


 
Cash ©   (2006-04-04 20:56) [20]

KiberKot ©   (04.04.06 20:42) [19]:
Изложи, что в DirectX ты знаешь, а чего нет. Т. е. к примеру:
- знаю, как девайс создавать и вертекс буффер, а еще умею
  текстурки выводить!

А еще желательно услышать (у-читать :), какой аспект 2D шутера
тебе неизвестен или не понятен. Создание карты, плеера, спрайтов, и т. д.

А то малость не ясно, какой совет дать!


 
KIberKot ©   (2006-04-04 21:39) [21]

мне нужен не совет, а исходник
знаю как работать с поверхностями(блитинг, флипинг, буферизация и тд.), спрайтами.
конкретно сейчас интересует вопрос, как создать преграды на пути героя, то есть всякие ящики, планки, балконы, по которым можно ходить и через которые не пролетают пули.
Я так понимаю нужен класс, в котором описывается
1 координаты верхнего левого угла
2 размер
3 и какойто флаг, обозначающий, что через эту фигуру нельзя пройти

вот этот флаг меня и интересует, как это будет выглядеть?


 
Cash ©   (2006-04-04 22:15) [22]

KIberKot ©   (04.04.06 21:39) [21]:
Во! это оно!
Поверь пожалуйста на слово, тебе не нужен исходник! Тебе
необходимо направление взора, ведь как посмотришь так и сделаешь, или
не сделаешь! Дак вот:

Существует необходимость создания объектов столкновения
и взаимодействия.
Правильно думаешь, это должны быть классы. Да, только координаты не
левого верхнего угла, у меня же привычка сложилась - координаты центра
объекта. К таким координатам удобнее физику прикручивать! ;)
Создай Базовый "про-класс" - класс прародитель всех остальных вплоть до
плееров и ботов.
От этого класса веди иерархию сперва на стационарный (неподвижный)
класс препятствия, потом сделай наследование на физически подвижный
класс препятствий.
Флаг (я бы дал два - для юзверей и для пуль) - пусть работает как вулева
метка, которая говорит, что с этим объектом сталкиваются пули или люди
или и те и другие.
Именно от этого флага должно зависеть будет выполняться проверка
на столкновения или нет. Т. е. в про-классе надо бы предусмотреть
процедуру проверки столкновений, которая должна наследоваться всем,
даже пулям и другим штукам. Флаг столкновений тоже надо бы увязать с
про-классом, ведь вдруг захочется из юзера сделать этакого духа или
в сумрак его отправить. :)
Сама обработка столкновений должна происходить в каждом классе
уникально,
т. е. для пули одна проверка столкновений, а для банки пепси - другая. :)
Столкновения можно проверять по разному, но большинство (я думаю это
так) предпочитает использовать окаймляющие примитивы, прямоугольники,
окружности, и т. д. То есть, есть у твоего объекта размеры по двум осям,
и они равны, тогда лучше использовать окружность иначе - прямоугольник.
К примеру надо посчитать столкновение плеера с ящиком пива, смотрим,
плеер равносторонний, а ящик - нет, делаем вывод:
столкновение окружности и прямоугольника!
Если хоть одна из крайних точек ящика находится на расстоянии до плеера
меньшем чем радиус его окружности, то в результате у нас есть прямой
контакт ящика пива и плеера... и дальнейшие последствия этого. :)

вроде так все, если еще чего не понятно - обращайтесь.


 
Mortem ©   (2006-04-04 22:34) [23]


> XProger ©   (04.04.06 19:13) [14]

А чё сразу геолог-то? Раздолбай я, а не геолог. ^__^


> KiberKot ©   (04.04.06 19:47) [15, 16]

Да при чём тут OGL, ты его исходник видел - он так замудрёно написан, что по нему учиться невозможно впринципе. ^___^


> KIberKot ©   (04.04.06 21:39) [21]

Из перечисленного тобой не обнаружил ни чего, связанного с API (DX, OGL). Посему можно смело заявить, что нету понимания у вас. Понимания как API, так и разработки игр.
Срочно в РАМБЛЕР за статьями!


> Cash ©   (04.04.06 22:15) [22]

Ниасилил, но коли есть маза писать столько текста - напиши лучше статейку. (:


 
KIberKot ©   (2006-04-04 23:49) [24]


> Cash


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


> Да при чём тут OGL, ты его исходник видел - он так замудрёно
> написан, что по нему учиться невозможно впринципе.

Ну насколько я пнял он не писал, а только разобрал исходник


> Из перечисленного тобой не обнаружил ни чего, связанного
> с API (DX, OGL). Посему можно смело заявить, что нету понимания
> у вас. Понимания как API, так и разработки игр.


Ты о чем говориш? Если о

> 1 координаты верхнего левого угла
> 2 размер
> 3 и какойто флаг, обозначающий, что через эту фигуру нельзя
> пройти

то это не все, а только основные параметры, не считая массив объектов, их текстуры и тд.


 
XProger ©   (2006-04-05 05:26) [25]

KIberKot, чего я там разобрал? Я и ещё один товарищ 2 года своей жизни потратили на создание сверх-клона игры автор которой не дал НИ СТРОКИ КОДА из оригинала! Так что за такие фразы я готов порвать кого угодно...


 
antonn ©   (2006-04-05 08:27) [26]

XProger ©   (05.04.06 5:26) [25]
Так что за такие фразы я готов порвать кого угодно...

шахтерской лопаткой? :)


 
Cash ©   (2006-04-05 09:57) [27]

Mortem ©   (04.04.06 22:34) [23]:
Не, мой труд можно сочесть за преподовательский, а статьи в основном
пишут эти, как их, писатели. Я бы сказал у препода и писаки мало чего
общего.

KIberKot ©   (04.04.06 23:49) [24]:
На кого учишься?
Давно программируешь? Давно на Делфи?
Много ли знаешь о структурах данных?
Это необходимо для более точного ответа по AI.
Вопрос искуственного интеллекта уж очень велик, особенно в шутерах.


 
KiberKot ©   (2006-04-05 10:47) [28]


> KIberKot, чего я там разобрал? Я и ещё один товарищ 2 года
> своей жизни потратили на создание сверх-клона игры автор
> которой не дал НИ СТРОКИ КОДА из оригинала! Так что за такие
> фразы я готов порвать кого угодно...

Просто мне кое кто сказал, что в эту же игру играл лет пять назад, так что извени, если обидел


> Давно программируешь? Давно на Делфи?

Учусь на программиста, 2 года программирую, но практики вобще мало, т.к. а всем по чуть чуть
Да и в игре этой нужен не AI, задание какихто повторяющихся действий


 
KIberKot ©   (2006-04-05 10:59) [29]

ЗЫ если не ответиш, то дай хотябы ссылку, где можно почитать. Я по этому вопросу уже создавал раздел, но так никто и не ответил


 
Mortem ©   (2006-04-05 11:29) [30]

РАБМЛЕР - твой друг!
В таких вопросах не ориентируйся на графические API, они тут не к чему. Тут голая математика, физика, геометрия...


 
KIberKot ©   (2006-04-05 11:41) [31]


> РАБМЛЕР - твой друг!
> В таких вопросах не ориентируйся на графические API, они
> тут не к чему. Тут голая математика, физика, геометрия..
> .

Ты хочеш сказать, что здесь, среди тех кто пишет 3Д игры с AI и всеми наворотами, не найдется того, кто может подсказать?


 
Cash ©   (2006-04-05 13:52) [32]

KIberKot ©   (05.04.06 11:41) [31]:
Не, о чем ты! Они все жадные! :)))

На шкодера - это хорошо, 2 года это еще лучше.
Значит дискретная математика уже была.
ЗЫ: на дискретке тебе все что нужно уже рассказали! ;)

AI может перемещаться по графу, при чем граф можно как самому строить,
так и разработать алгоритм динамической прокладки графа.

Для целеуказания граф следует нагрузить.
Только это должен быть статический граф. Если целей много, то надо
несколько методов нагрузки. Т. е. для ботов и плееров создать показатели
из близости к вершинам графа. Чем дальше от вершины плеер, тем меньшую
нагрузку на вершину он производит. Там, к примеру, для валяющегося
оружия тоже надо бы создать свой показатель.

Теперь о формировании вершин графа.
Я честно говоря еще не определился что лучше для этого, но использовал
пока только упакованные записи (packed record) и класс-объекты (object),
но думаю еще на классах граф замутить, это должно выйти куда лучше,
но такой метод память-жоркий.
У вершины должны быть связи с другими вершинами, для этого можно
использовать массив, список или класс TList (третий будет лучше для
классов), который должен содержать указатели на связанные вершины.
Вершины должны быть связаны в двух направлениях (если конечно не
орграф создаешь), т. е. если имеем связь A->B, значит имеем связь B->A.
Нагруженность вершины - это всего лишь число, это может быть расстояние
до осуществляющего нагрузку объекта (плеера или винтовки) или
количество (концентрацию) этих объектов в области вершины.

Фу-у-у-у-у...
Вроде что то накалякал.
На http://www.gamedev.ru/articles/?id=70121 есть алгоритм поиска пути.
А в качалке на http://www.gamedev.ru/ я вроде находил подобную штуковину.


 
Cash ©   (2006-04-05 13:56) [33]

Да, вон еще колекция ссылок:
http://www.gamedev.ru/links/?sect=4

Только я одно забыл, я еще C++ хорошо знаю,
поэтому мне легче перетащить код из Delphi в VC++ или BCppB.
Но вроде тебе C++ тоже уже должны были объяснить.


 
Mortem ©   (2006-04-05 14:16) [34]


> KIberKot ©   (05.04.06 11:41) [31]

"Ты неправильно извратил мои слова!" (с)один знакомый


 
antonn ©   (2006-04-05 14:30) [35]

кстати, я про канвас уже говорил?
:)


 
Cash ©   (2006-04-05 15:53) [36]

antonn ©   (05.04.06 14:30) [35]:
Нет! Но я не дам тебе такой возможности! :)))

ЗЫ: Canvas рулит!
:D


 
KiberKot ©   (2006-04-05 18:36) [37]


> Cash

Чесно гворя, все что я понял из написанного это то, что нужен массив с координатами путей и приобретаемых бонусов с оружием. Пользуясь этими координатами боты прокладывают свой путь, а герой в этих координатах подбирает предметы. Но вот как это выглядет на практике я не совсем представляю.
А вот про дискретную математику я не слышал :)
Учусь я не в университете, а в техникуме :(
Из математики у нас алгебра логики, теория вероятности, численные методы, компьютерная графика (трохи), матрицы.


> "Ты неправильно извратил мои слова!" (с)один знакомый


Я не про тебя говорил, а про одного чилдрена который седит неподолеку.

Вывод:
будем думать


 
Cash ©   (2006-04-05 19:06) [38]

KiberKot ©   (05.04.06 18:36) [37]:
> Учусь я не в университете, а в техникуме :(
А я обратное подумал! Да, в программе техникума есть такой агрех.
Но и его чесно говоря можно исправить, было бы рвение к знаниям! :)

Заваливай на http://algolist.manual.ru, там есть кое что из этого предмета.
(Графы, орграфы, граматики и т. д.)
А еще - про структуры данных, они тоже, точнее в практической реализации
очень даже помогут.

"Ты-ндыкс" :) дал очень даже соблазнительную ссылку:
http://referatw.ru/cgi-bin/main.cgi?level=6&p1=123&p2=88&p3=40073
(из запроса http://www.yandex.ru/yandsearch?stype=&nl=0&text=%CB%E5%EA%F6%E8%E8+%C4%E8%F1%EA%F0%E5%F2%ED%E0%FF+%CC%E0%F2%E5%EC%E0%F2%E8%EA%E0)

> что нужен массив с координатами путей и приобретаемых бонусов
Не не не, нужна именно динамическая структура. Считай список из
указателей.

Смотри:

Type
  PGraphNode = ^TGraphNode;
  TGraphNodes = array of PGraphNode;
  TGraphNode = Packed record
    X: integer;
    Y: integer;
    Weights: array of single; // Набор весов, которые на вершину действуют.
    Branches: TGraphNodes; // Набор ребер для перехода по вершинам.
  end;

Это запись, вершина графа. Ребро графа местится в массиве Branches и
по этому массиву можно узнать сочлененные (инцыдентные данной вершине)
вершины и задать перемещение на них.


 
Cash ©   (2006-04-05 19:09) [39]

Кривые руки, тег закрыть забыл! :)


 
KiberKot ©   (2006-04-05 19:49) [40]

Чесно говоря у меня щас нету времени основательно учить математику. Я щас сдаю диплом, и делаю на него эту стрелялку, здать мне его надо завтра :)
Щас я пытаюсь по быстрому переделать прогу из книги "DirectX графика в проектах  Delphi. Щас мне надо что нибудь показать, что бы отцепились, типо 50% игры, а потом уже займусь основательно. Всегда хотел игры делать.
Так вот, может есть способ полегче, а то что то не очень понятно, как с этим работать. А я потом буду разберать то что ты предлагаеш.


 
XProger ©   (2006-04-05 20:29) [41]

KiberKot, больно стукни этого "кое кто" ибо играл он в Need For Kill в которой и 50% того, что в нашей Time For Kill нету...

"Всегда хотел игры делать."..."здать мне его надо завтра" ну зачем же надо было "хотеть" до крайнего срока? ;)


 
Cash ©   (2006-04-05 20:35) [42]

Хм, если надо простые хаотические движения, то нет ничего лучше
генератора случайных чисел! Random так сказать рулит! :)
Если у тебя есть момент поворота объекта на определенный угол,
то делай просто: один раз в секунду или в милли- микросекунду или в
тик, запускай примрно такой генератор:

Изменить угол поворота на (+/-)random(...) градусов;
можно перемещаться:=(random(...)=...);

Или что нибудь в этом духе. Прояви свое творчесое начало.
Изобрети "динаму". И с ее помощью задинамь, что это есть AI! :)

А там уж в полную силу за материал и писать свой AI-шник!


 
KiberKot ©   (2006-04-05 21:14) [43]


> KiberKot, больно стукни этого "кое кто" ибо играл он в Need
> For Kill в которой и 50% того, что в нашей Time For Kill
> нету...

Да забей на всех, игра реальная и два года потрачено не зря. А этот кое кто, говорит что игра не плохая, а просто не верит что ее можно написать (или что то типо таго)


> "Всегда хотел игры делать."..."здать мне его надо завтра"
> ну зачем же надо было "хотеть" до крайнего срока? ;)

Просто затянул курсовую по VBA которуя , во первых не хотелось делать, во вторых у нас не одной пары в этом семестре небыло, на всех парах перней страдали, так что я вобщем и не знал как ее делать, но всетаки добил и сам написал БД.


> Cash


Да нет у меня никаких углов, кроме стрельбы побокам, в верх, низ и под углом 45 градусов.
Боты будут появлятбся после открытия определенных участков карты, а дальше что нибудь делать (наверно буду проверять растояние между героем и ботом, и исходя из этого, бот будет отбегать или подходить ближе).


 
Cash ©   (2006-04-06 09:04) [44]

KiberKot ©   (05.04.06 21:14) [43]:
А перемещаются боты как? То есть только в 4 стороны (вверх, вниз, влево
и вправо)?

Если так, то и сюда можно прикрутить угол поворота. Так просто легче
поворачивать бота.
Конечно, следует проверять близость плеера к ботам, а каждый бот пусть
решает переть к плееру или от него. Да да, все верно!

Во! у тебя же на карте есть всякие препятствия, и наверняк они где нибудь
в виде матрицы записаны. Так заставь бота просчитывать свой маршрут с
учетом этой карты препятствий. Такую вещь можно сделать с
использованием While цыкла:

while not((WpX=Ex)and(WpY=Ey)) do begin
  Изменяем WpX и WpY на те, что поближе к плееру;
  Проверяем, нет ли препятствия по этим координатам;
  Если есть, то приближаем к боту самую близкую из WpX и WpY координат;
  Записываем эти координаты в очередь маршрута;
end;

Это так, набросок. На практике там еще куча наворотов.
Ex и Ey - это положения плеера в этой матрице препятствий.
WpX и WpY - это положение осматриваемой ячейки матрицы на предмет
препятствий и, если оных нет, точка маршрута.

Тем самым бот прокладывает свой маршрут и прется на то место, где
заметил плеера.


 
KiberKot ©   (2006-04-07 03:27) [45]


> А перемещаются боты как?


Перемещаются влево, право и подпрыгивают. Тоесть прыжок это тоже перемещение, но к проверке пути, я так понимаю его ненужно подключать


> Так заставь бота просчитывать свой маршрут с
> учетом этой карты препятствий

А какой вид будет иметь матрица , ведь двух координат будет не достаточно для описания объекта. В матрицу получается нужно засунуть координаты хотябы двух углов, верхнего левого и правого нижнего, а это чеырех мерный массив


> Во! у тебя же на карте есть всякие препятствия,


На карте у меня еще толком ничего нет, только герой, который стреляет и прыгает и куча врагов, которые бестолково носятся по земле оталкиваясь друг от друга и от границ экрана


 
Cash ©   (2006-04-07 09:29) [46]

KiberKot ©   (07.04.06 03:27) [45]:
Sorry men, я что то с дуру подумал, что у тебя вид сверху.
а из:... влево, право и подпрыгивают ...
ясно, что вид сбоку.

Эти выше описанные методы хороши для вида сверху, а тут - не применимы.

Тут наверное за советом надо к Darth XProger-у, по TFK.


 
KiberKot ©   (2006-04-08 00:55) [47]


> Cash ©


>  я что то с дуру подумал, что у тебя вид сверху.
> а из:... влево, право и подпрыгивают ...

Я в самом начале писал что вид с боку, правда не в описании игры

> Эти выше описанные методы хороши для вида сверху, а тут
> - не применимы.

ну почему не применимы, мне кажется из этого может что то толковое получиться, ну на крайняк, в матрице хранить не координаты обьектов, а действия бота в определенной месности. К примеру: бот идет на встречу к плееру, перед ходом проверяет точку на которой стоит, если данные координаты указаны в матрице, то делает нужные действия. Матрицу представить в виде (x1,y1,x2,y2,действие). Действие обозначить цифрой, к примеру 1-прыгать, 2-прохода нет повяртай назад. Если же по данной области нет особых указаний, смотреть по месту положения пользователя
Ну вот примерно так. Че думаеш про это ?


> Тут наверное за советом надо к Darth XProger-у, по TFK.

XProger, общетвенность (нас двое пока :) ) требует твоего вмешательства в данный вопрос. Помоги плииз


 
XProger ©   (2006-04-08 08:06) [48]

// представление карты - блоки (в графике 16х16 каждый)
// 0 - занято, > 0 - свободно
// 1 - пустая клетка
// для бота
// BK_LEFT = 2 - идти влево
// BK_RIGHT = 4 - идти вправо
// BK_JUMP = 8 - прыгать
// BK_CROUCH = 16 - присесть
// BK_STAY = 32 - стоять (ждать врага)
map : array [0..39, 0..29] of WORD;
...
// обработка ввода для расчёта ускорения при движении
with Player, Acc do
begin
 // Player.Keys : array
 // Player.Acc : TVector
 if Keys[Left] then X := -Horiz_Accel;
 if Keys[Right] then X := +Horiz_Accel;
 if Keys[Up] then Y := -JumpSpeed;
 if Keys[Down] then X := X * chouch_k; // замедление в сидячем положении
end;

// если игрок не стоит на земле - на его ускорение действует гравитация
if not map[X div 16, Y div 16] then
 Acc.Y := Acc.Y + gravity
else
 Acc.Y := 0;

// Расчёт столкновений (кривой)
if map[(X + Acc.X) div 16, Y div 16] > 0 then X := X + Acc.X;
if map[X div 16, (Y + Acc.Y) div 16] > 0 then Y := Y + Acc.X;


Для ботов будет отличаться только взятие состояния клавиш
k := map[X div 16, Y div 16];
if k > 1 then // если блок-действие для бота
begin
 if k and BK_LEFT > 0 then Keys[Left] := True;
 if k and BK_RIGHT > 0 then Keys[Right] := True;
 if k and BK_JUMP > 0 then Keys[Up] := True;
 if k and BK_CROUCH > 0 then Keys[Down] := True;
 if k and BK_STAY > 0 then
 begin
    Keys[Left] := False;
    Keys[Right] := False;
    Keys[Up] := False;
    Keys[Down] := False;
 end;
end;

Ошибки в коде не исключены, но общая логика должна быть понятна :)


 
KiberKot ©   (2006-04-08 12:54) [49]


> XProger ©

Все понятно, кроме одного, как бот будет узнавать что ему делать, то есть
как будут задаваться флаги

>  if k and BK_LEFT > 0 then Keys[Left] := True;
>  if k and BK_RIGHT > 0 then Keys[Right] := True;
>  if k and BK_JUMP > 0 then Keys[Up] := True;
>  if k and BK_CROUCH > 0 then Keys[Down] := True;
>  if k and BK_STAY<b/> > 0 then

я так понял, что каждый из них надо будет задать вручную в массиве

> map : array [0..39, 0..29] of WORD;

а если так, то зачем делить экран на пустые и заполненные клетки


 
XProger ©   (2006-04-08 13:36) [50]

Игровая карта представляется в виде набора клеток занятых и свободных. Помимо этого свободные клетки могут давать некие указания боту.

Задавать вручную или динамически (придумай алгоритм ;)
map[i, j] := BK_LEFT or BK_JUMP; - прыгнуль влево
map[i, j] := BK_RIGHT or BK_CROUCH; - ползти гуськом вправо

и т.п.

Вообще, задачу расстановки подобных флагов рациональнее реализовать в редакторе уровней.


 
KiberKot ©   (2006-04-08 14:26) [51]

Ну в принцепе по игре все понятно, если возникнут какие вопросы, буду
спрашивать. Спасибо всем за помощь, пошол делать мега игру :))


 
WillRock ©   (2006-10-19 13:07) [52]

Классную дискуссию развели.
Спасибо вам всем за данные ответы..они мне помогут..
У меня остался один тупой вопрос ))
Как проверять столконвения м/у прямоугольником и окружностью? ))
просьба ногами не пинать ))
Просто я ни разу как то этим не занимался )


 
Shirson ©   (2006-10-19 14:39) [53]

http://www.gamedev.ru/articles/?id=70124


 
@!!ex ©   (2006-10-19 19:48) [54]

Эх... неуспел поучавствовать... :\

Но все равно вставлю свое ИМХО!
Программер без математики, как свадьба без невесты...
НЕзная математики ниче толвокого не напишеш, тем более в играх.



Страницы: 1 2 вся ветка

Текущий архив: 2007.10.07;
Скачать: CL | DM;

Наверх




Память: 0.63 MB
Время: 0.092 c
15-1189441582
me
2007-09-10 20:26
2007.10.07
"Введение в Гудразработку и анализ алгоритмов"


15-1189092894
Floppy
2007-09-06 19:34
2007.10.07
Создание ярлыка


2-1189325518
qaaqw
2007-09-09 12:11
2007.10.07
Расположение класса в модуле.


15-1189059128
Ega23
2007-09-06 10:12
2007.10.07
умер Лучиано Паваротти


15-1189290280
Kostafey
2007-09-09 02:24
2007.10.07
С днем рождения ! 9 сентября





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский