filmov
tv
Игровые алгоритмы / Выстрелы полет пуль / Стрельба / Патроны / Выстрелы / Pascal Delphi Lazarus
Показать описание
Donate (Поддержка канала копеечкой):
И так, первым делом мы с вами должны создать для пуль тип. Я его назвал например TPulya. пишется слово Record и между словом Record и end мы, собственно, пишем характеристики, которыми будет обладать наша пуля или пули. Можно, в принципе, все вот это было создать отдельными переменными, но тогда бонусы и куча переменных было написано. Началась бы путаница. В общем, я советую все-таки использовать типы если есть такая возможность. И так, рассмотрим такие же характеристики будут у нашей пули. Во первых это координата x и y. Это координаты, где будут находиться наши пули. Дальше поворот Povorot. Это чтобы знать в какую сторону наша пуля будет лететь и чтобы менять и координаты для движения, и собственно, характеристика Visible. В переводе оно обозначает видимость, которая может принимать два значения true или false. То есть включено или выключено. Когда будет равно true - это значит, что пуля запущена ее нужно рисовать, ее нужно сдвигать. Если она равна false это значит, что эта пуля еще не выпущена или уже удалена.
Далее мы создаем с вами массив для пуль. Если мы с вами создадим всего одну переменную пуля тогда у нас может вылетать всего одна пуля. То есть вы быстро выстрелили и пока это пуля не исчезнет - вы второй раз не сможете выстрелить. Если вы хотите, чтобы можно было много раз стрелять, то нужно создать массив. Ну, я например, создал по 10 пуль одновременно. У нас не может быть выпущено больше 10 пуль. Если вам нужно больше - поставьте здесь цифру побольше. И тип будет у нас TPulya, то есть тот тип который мы с вами создали ранее. Далее заходим On Create Form. Пройдем с вами цикле от одного до десяти - присваиваем всем пулям координаты ноль ноль поворот тоже 0. И, самое главное, Visible ставим False, то есть ни одна пуля изначально не должна быть выпущена.
Для того, чтобы научиться выпускать пули мы с вами снова будем обрабатывать событие формы, которое называется On Key Down, то есть когда была нажата какая-то клавиша. Давайте обрабатывать будем пули при нажатии клавиши пробел, то есть когда нажата клавиша space. Для того, чтобы у нас вылетала всего одна пуля а не все сразу - мы с вами объявим еще дополнительно переменную типа boolean и она у нас будет просто как переключатель. Изначально когда вы нажали на клавишу VK Space - присваиваем False. Она будет равна False в тех случаях, когда пуля еще не выпущена. А когда мы уже выпустили какую-то пулю, мы ей будем присваивать true.
И так, вы нажали на клавишу что у нас происходит дальше? Вы продвигаетесь в массиве от одного до десяти и проверяете если Visible еще равно False, то есть пуля не выпущен, и при этом пуля с этим номером i невидимая. То есть она не выпущена. Тогда мы ее координатам x и y присваиваем координаты нашего персонажа, потому как именно с этих координат нужно начинать вылетать.
Далее мы включаем видимость и таким поворотом. Таким образом пуля у нас становится видимой и мы знаем что ее нужно будет рисовать и смещать куда-то. И присваиваем ей поворот нашего персонажа - таким образом у нас пуля сразу же будет привязана координатам нашего персонажа и к повороту нашего персонажа, но и обязательно не забываем присвоить Visible True. Если вы здесь всем пулям присвоите true, то вы одновременно выпустите все имеющиеся пули. Видно будет всего лишь одну из них, потому как они одновременно все будут лететь друг под другом. Но выстрелить ещё раз вы не сможете пока все эти пули не исчезнут.
Ну а теперь когда у нас уже реализовано выпускание пули и характеристики. Далее нам нужно научиться рисовать эту пулю на нашей форме. Для этого кликаем дважды по таймеру и прорисовка пули будет происходить в цикле от одного до десяти. Мы просто смотрим если пуля Visible везде был равна true, то есть она видима -тогда мы рисуем в координатах нашей пули x и y картинку. В моем случае это имя g9 у вас это может называться переменная по-другому.
Далее мы с вами должны реализовать передвижение пули. Чтобы она не просто появилась и была прорисована на месте нашего персонажа, а чтобы она еще и летела куда-то. Для этого мы пишем с вами вот такой вот код. Так же в цикле от одного до десяти мы с вами пробегаемся и смотрим - если пуля Visible была равна True - то есть если она видима - тогда мы проверяем поворот. Куда она повёрнута. Вот если у пули поворот равен там 1 2 3 4 5 6 7 8. Когда там 8, тогда мы координату y смещаем на 8. В случае если там 8 координату y смещаем вверх на 8. 1 - это поворот вниз, 2 вверх, 3 поворот влево, 4 вправо на 8 пикселей. Для случаев 5, 6, 7, 8 - у нас там смещаются одновременно и координата x и координата y.
Комментарии