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

Тема в разделе "Разработка игр и приложений к ним", создана пользователем lOSK, 22 июл 2008.

  1. lOSK

    lOSK Гость

    пишу на delphi игру не что вроде танчика. столкнулся с проблемой.
    при нажатии на кнопку "вперед" я присваиваю переменной a значение "1" для того чтобы при выстреле снаряд летел вверх, при нажатии на клавишу "лево" значение "2" и т.д.
    в таймере, который отвечает за полет снаряда, я пишу следующий код:
    Код (Text):
    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;
    так вот при выстреле все нормально. если танк повернут вверх, снаряд летит вверх, если вниз-вниз и т.д. но если танк вдруг повернется в другую сторону, в то время когда снаряд уже летит, он (снаряд) полетит в ту сторону, в какую повернулся снаряд.
    все правильно, условие-то выполняется. но подскажите, плиз, как от этого можно избавиться :(
     
  2. ShadowCoder

    ShadowCoder Гость

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

    lOSK Гость

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

    Silver Wind Гость

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

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

    lOSK Гость

    да ну. какая же это фишка. так вообще неинтересно
    вы тут все такие доброжелательные?
     
  6. Silver Wind

    Silver Wind Гость

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

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

Поделиться этой страницей