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

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

lOSK

#1
пишу на 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

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

lOSK

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

Silver Wind

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

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

lOSK

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

Silver Wind

#6
да ну. какая же это фишка. так вообще неинтересно
ну как знаешь, мое дело - предложить

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