Помигите с игрой (выстрел)

  • Автор темы lOSK
  • Дата начала
L

lOSK

пишу на delphi игру не что вроде танчика. столкнулся с проблемой.
при нажатии на кнопку "вперед" я присваиваю переменной a значение "1" для того чтобы при выстреле снаряд летел вверх, при нажатии на клавишу "лево" значение "2" и т.д.
в таймере, который отвечает за полет снаряда, я пишу следующий код:
Код:
if (a=1) then
begin
image3.Top:=image3.Top-7;
end;

if (a=4) then
begin
image3.Left:=image3.Left+7;
end;

if (a=2) then
begin
image3.Left:=image3.Left-7;
end;

if (a=3) then
begin
image3.Top:=image3.Top+7;
end;
так вот при выстреле все нормально. если танк повернут вверх, снаряд летит вверх, если вниз-вниз и т.д. но если танк вдруг повернется в другую сторону, в то время когда снаряд уже летит, он (снаряд) полетит в ту сторону, в какую повернулся снаряд.
все правильно, условие-то выполняется. но подскажите, плиз, как от этого можно избавиться :(
 
S

ShadowCoder

Грамотно, при "выстреле" создавать новый объект - снаряд, которому присваивать значение картинки и направление движения, чтобы он уже не зависел от танка. Снаряд выпущен - связь с танчиком потеряна, всё!
 
L

lOSK

нет... так не пойдет, код громоздкий и неудобный. да и есть в моем коде причины, по которым этого нельзя сделать.
может, еще у кого-нибудь есть предложения?
 
S

Silver Wind

Переменную заведи отдельную для направления снаряда - при выстреле копируй в нее направление танка и в таймере по ней ориентируйся.

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

lOSK

сделать такое поведение снаряда "фишкой"
да ну. какая же это фишка. так вообще неинтересно
воя игра не будет блистать ничем другим, ни графикой, ни оригинальностью, а тематика игры избитая.
вы тут все такие доброжелательные?
 
S

Silver Wind

да ну. какая же это фишка. так вообще неинтересно

ну как знаешь, мое дело - предложить

вы тут все такие доброжелательные?

доброжелательность здесь не причем, просто по коду видно, что анимация основана на сдвигании TImage компонент, а это годится разве что для учебной программы (и то учебной не в области программирования графики) и ничего действительно толкового при таком подходе в итоге не выйдет
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!