Разбор кода игры.
Ужас а не код ))) ну ничего будем разбираться, не переписывать же заново.
И так за счет чего же происходит движение кубиков? У каждого компонента помещенного на форму есть сво-во top и left. Top это расстояние от верхнего края формы до "верха" компонента, лефт это растояние от левой стороны формы до левого края компонента. Конечно все это работает для видимых компонентов (если и не видимые, забыл как называются :) вот таймер невизуальный компонент он работает но его не видно в программе.
Так вот мы просто сдвигаем по 10 пикселов тоp:=top+10 в координатах это есть движение по оси Y Left это ось Х. Таймер срабатывает каждый раз через указанный интервал, кстати я забыл указать какие интервалы установлены были у меня. Так сейчас посмотрим...
У timer1 = 1000 мс, movecircle=100 мс выставьте такие интервалы выделим таймер и в свойстве Interval укажите эти цифры, можете потренироваться и попробывать другие значения, это не возбраняется :) Да и еще один момент у таймера имеется вкл/выкл Enabled:=true включен false выключен так вот movecircle:=false первый таймер включен.
И так первый таймер у нас срабатывает каждую секунду ( = 1000мс) и вызывает процедуру MvCubs это и есть процедура движения кубиков сверху вниз. Другой таймер включается когда мы делаем выстрел пробелом и вызывает процедуру выстрела MoveShot;
Теперь как двигается наш герой кубик :)
if key = vk_left then // движемся влево
man.Left := man.Left - 5;
if key = vk_right then // движемся вправо
man.Left := man.Left + 5;
Обработчик события нажатия клавиш формы принимает пару переменных одна из них Key
FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
это код клавиши вот в нашем коде мы и проверяем если клавиша стрелка влево нажата то мы сдвигаем в лево на 5 пикселов. коды такие VK_RIGHT,VK_LEFT,VK_UP,VK_DOWN два последних кода эта вверх и вниз если вдруг захочется побегать по всему экрану ))) или для других ваших идей. Почему в одном случае -5 в другом +5 ? напомню что ось координат у нас перевернута нуль в левом верхнем углу экрана ось У растет вниз до 255 ось Х в право до 255 вот и все.
В принципе все описал я остались подробности процедур, даа удивляюсь какой не разборчивый код я смог написать, без бутылки не разберешься )))
В следующей статье опишу подробности.
Комментариев нет:
Отправить комментарий