Здравствуйте! Уважаемые участники форума, хотелось-бы попросить вас о помощи. Не давно началось курсовая на языке программирования Delphi. И на стал момент когда учитель спросил меня "что я буду программировать" и, со скоку я ответил что игра Танчики... Вот теперь друзья я задумываюсь с чего начать, как сделать и поможет ли мне кто нибудь? например как на подобию игры "battle city" буду блогодарен советам, исходникам и предложениям
Сообщение отредактировал: f0rest - Суббота, 29.09.2012, 02:01
f0rest, Определись с помощью чего будешь выводить графику, какое апи для этого будешь использовать. Если не хочешь заворачиваться и лезть в дебри OpenGl и DirectX, то просто рисуй на обычном канвасе. Что-бы избавиться от мелькания перерисовывай только изменяющиеся части изображения и для первичного рендера используй закадровый битмап (созданный в реалтайм объект TBitMap). Сначала рендери в него все что нужно, а потом командой Bitblt копируй массивы байт с одного в другой. Для коллизий используй простую систему столкновений AABB(квадраты, прямоугольники которые не могут поворачиваться вокруг оси, что упрощает вычисления). Ведь танчики могут двигаться только в 4-х направлениях. Немного посложней будет с АИ, но простую логику написать можно запросто. Т.к. карта тож состоит из блоков, грани которых параллельны осям, то и для карты можно использовать коллизии AABB.
Хм, могу кинуть свой двиг, в нем реализована поддержка коллизий, вывод фона, спрайтов, звуки и т.д. Писать ничего не буду =) Если хочешь могу кинуть двиг и пример с выводом спрайтов. В модуле коллизии легко разобраться... Работаю над Каваей.
f0rest, Если ты будишь использовать квадратную коллизию и делать в 2D, то можно обойтись без AABB
Code
if {здезь пишем имя обьекта который сталкивается, пр. image1}.Top>={здесь имя обьект столкновение к примеру image2}.Top then //Это мы проверили Начальную точку по Y. Дальше всё анологично. begin if image1.Top<=image2.Top+image4.Height then //Это мы проверили конечную точку по Y begin if image1.Left>=image2.left then //Это мы проверили Начальную точку по X begin if image1.Left<=image2.Left+image4.Width then //Это мы проверили конечную точку по X begin //то что происходит при столкновении пр: image1 с image2 end; end; end; end;
Вот так пишется коллизия квадрата
Добавлено (04.01.2013, 16:52) --------------------------------------------- А вообще попробую Ипровизировать