Конференция "Прочее" » Взрыв при попадании [Delphi, Windows]
 
  • anikos (14.04.13 18:47) [0]
    дали задание написать игру, чтобы самолет летал и сбрасывал бомбы на танки. Никак не могу сделать, чтобы при попадании в танк был взрыв и начислялось 10 очков. Танк, самолет, бомба, взрыв - все через Image делал.

    if Image7.top>630 then  begin           //если бомба около земли
    k:=StrToInt(label4.Caption);            //k - очки
     if Image9.Tag=1 then begin            //если танк едет влево
       if (image7.left<image9.Left+32) and (Image7.left>Image9.Left-16) then  begin
       playsound(PChar('D:..\sounds\bombw.wav'), 10, snd_Async);   //звук взрыва
         k:=k+10;  //&#205;начисление очков
         label4.Caption:=IntToStr(k);
         Image7.Top:=80;          //возврат бомбы к самолету
       end;
     if Image9.tag=2 then begin          //если танк едет вправо
       if (image7.left<(Image10.left)+32) and (image7.left>(Image10.left)-16) then begin
       playsound(PChar('D:..\sounds\bombw.wav'), 10, snd_Async);  //звук взрыва
         k:=k+10;  //&#205;Начисление очков
         label4.Caption:=IntToStr(k);
         image7.Top:=80;   //Возврат бомбы к самолету
       end;
    end;
    end;
    end;



    Здесь Image7 - бомба,    Image9 и Image10 - танк, k - очки.
    Просьба помочь с решением этой задачи. Заранее спасибо.
  • Rouse_ © (14.04.13 19:05) [1]

    > чтобы самолет летал и сбрасывал бомбы

    как-то знакомо  :)
  • anikos (14.04.13 19:20) [2]
    ну я тут вроде не видел такого еще :)
    если кто найдет, то скиньте, может смотрел невнимательно)
  • Rouse_ © (14.04.13 19:31) [3]

    > anikos   (14.04.13 19:20) [2]
    > ну я тут вроде не видел такого еще :)

    это и ценно, скоро мем "грабить корованы" устареет :)
  • anikos (14.04.13 19:36) [4]
    еще есть один вопрос..изображения постоянно моргают, а если включить двойную буферизацию, то моргать перестают, но при этом жутко все тормозит.
    Может кто знает, как исправить?
    И конечно же заранее спасибо огромное :)
  • Rouse_ © (14.04.13 19:55) [5]
    Блин, это проста праздник какой-то :)
    Поясни плз вот эту строчку:


    > image7.Top:=80;   //Возврат бомбы к самолету
  • anikos (14.04.13 20:05) [6]

    > Блин, это проста праздник какой-то :)
    > Поясни плз вот эту строчку:
    >
    >
    > > image7.Top:=80;   //Возврат бомбы к самолету


    ну чтобы при следующем нажатии она летела с высоты, на которой самолет)
    я вроде сделал, но оно иногда срабатывает, иногда нет, непонятно короче)
  • anikos (14.04.13 20:14) [7]
    когда он едет вправо, то все работает, а если едет влево, то не хочет)
  • Inovet © (14.04.13 20:15) [8]
    > [5] Rouse_ ©   (14.04.13 19:55)
    > Возврат бомбы к самолету

    На танках противоавиационные батуты.
  • Pavia © (14.04.13 20:25) [9]

    > anikos   (14.04.13 18:47) 

    Всё надо переделовать.


    > > чтобы самолет летал и сбрасывал бомбыкак-то знакомо  :
    > )

    Это еще под досом была игрушка только там был вертолёт.
  • Pavia © (14.04.13 20:29) [10]
    Вирт когда придумывал Pascal сделал его функциональным.
    Разбейте свою задачу на подзадачи и оформите в виде функций и процедур.

    Функцию проверки попадания лучше оформить так. Сделай функцию проверки пересечения квадрата и круга или функцию пересечения прямоугольника и прямоугольника.
    Когда будешь делать проверку будешь вызывать эту функцию и передавать в неё координаты и размеры танка и бомбы.
  • Pavia © (14.04.13 20:32) [11]

    >    k:=k+10;  //Íначисление очков

    Имена переменных должны отражать суть. Иначе ведь ничего не понятно и приходиться писать комментарии. Гораздо легче читать само документированный код.
    Тут нужно дать название переменной Points или Many.
    Точно также и другим переменным танк, самолёт, бомба.
  • anikos (14.04.13 20:33) [12]
    я сделал уже :)
    спасибо всем за идеи)
    там в цикле с end-ами запутался..невнимательность :)
  • anikos (14.04.13 20:35) [13]

    > Имена переменных должны отражать суть. Иначе ведь ничего
    > не понятно и приходиться писать комментарии. Гораздо легче
    > читать само документированный код.
    > Тут нужно дать название переменной Points или Many.
    > Точно также и другим переменным танк, самолёт, бомба.


    это я уже понял
    просто начал так делать уже, а сейчас долго переделывать
  • картман © (14.04.13 20:35) [14]
    а что такое Image9 и 10? Или направо ездит танк женского полу?
  • anikos (14.04.13 20:37) [15]

    > картман ©   (14.04.13 20:35) [14]
    > а что такое Image9 и 10? Или направо ездит танк женского
    > полу?


    ну если едет танк влево, то одно изображение, а если вправо, то другое
    а то получится что влево будет ехать нормально, а вправо будет задом ехать :)
  • Dimka Maslov © (14.04.13 20:41) [16]

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


    GDI сразу уже был тормознутым, надо directx использовать
  • Pavia © (14.04.13 20:41) [17]
    По поводу моргания и тормозов. Прежде временная оптимизация вредит проекту. Так что предлагаю оставить как есть. На win7 GDI тормозит, надо на OpenGL  или DirectX переходить, а у тебя с основами программирования туго. А ещё лучше было бы взять готовый движок.

    Если хочешь что бы GDI не тормозил. Во первых оставь один Image. А ещё лучше один PaintBox. И выводить на соотвествующий компонент Bitmap.
    А вот уже на Bitmap ты собираешь из фрагментов(спрайтов) свой кадр.

    Во вторых в примерах к Delphi прилагается простейшая игра с жуками.
  • картман © (14.04.13 20:42) [18]
    а как танк разворачивается?
  • Pavia © (14.04.13 20:44) [19]

    > а как танк разворачивается?

    Мгновенно. =)
    Не ну можно на зрителя дуло наставить. Причем с увеличенным размером.
  • картман © (14.04.13 20:45) [20]

    > Pavia ©   (14.04.13 20:44) [19]

    это я автору адресовал - хотел подвести к одному объекту для отображения
  • Inovet © (14.04.13 20:46) [21]
    > [19] Pavia ©   (14.04.13 20:44)
    > Причем с увеличенным размером.

    Как в самоваре.
  • Pavia © (14.04.13 20:49) [22]

    > Как в самоваре.

    Не как в мультфильме "Десантник Стёпочкин"
    https://www.youtube.com/watch?v=JAhmrRLiWJY
  • anikos (14.04.13 21:08) [23]

    > картман ©   (14.04.13 20:45) [20]
    >
    > > Pavia ©   (14.04.13 20:44) [19]
    >
    > это я автору адресовал - хотел подвести к одному объекту
    > для отображения


    давай подробнее к чему хотел подвести :)
    не профи в delphi, так что не понял тебя)
  • картман © (14.04.13 21:12) [24]

    > anikos   (14.04.13 21:08) [23]

    да ни причем тут дельфи - один физический объект одним программным и должен быть реализован, иначе путаница будет. Если разные картинки - все равно объект-танк один. Для разных изображений - контейнер, нужное изображение подсовывается когда надо.
  • Kilkennycat © (14.04.13 21:14) [25]
    бомбовая нагрузка самолета ограничена, я требую учесть это. кроме того, я не увидел в коде возможность тарана.
    и еще. координаты танка должны быть полигональны, ибо дуло выступает.
  • anikos (14.04.13 21:19) [26]

    > да ни причем тут дельфи - один физический объект одним программным
    > и должен быть реализован, иначе путаница будет. Если разные
    > картинки - все равно объект-танк один. Для разных изображений
    > - контейнер, нужное изображение подсовывается когда надо.
    >


    я не создавал же объект, просто картинок накидал
    создать 1 объект было бы правильнее, но я в этом еще не очень разбираюсь, так что решил не рисковать)
  • картман © (14.04.13 21:21) [27]

    > я не создавал же объект, просто картинок накидал

    ну, надо ж начинать, к тому же, монитор не взорвется, если что напутаешь))
  • anikos (14.04.13 21:27) [28]

    > ну, надо ж начинать, к тому же, монитор не взорвется, если
    > что напутаешь))

    сначала так сделаю, а будет время, то через объект сделаю :)
  • DVM © (14.04.13 21:44) [29]

    > Dimka Maslov ©   (14.04.13 20:41) [16]
    >
    >
    > GDI сразу уже был тормознутым,

    сразу может и был, но сейчас совсем нет.
  • Den (20.05.13 01:55) [30]
    Спасибо, поржал. Сто лет тут не был, а трэшак все тот же=D
  • Anatoly Podgoretsky © (20.05.13 12:33) [31]

    > то скиньте

    Бомбочку
  • robt2 (20.05.13 16:13) [32]

    > Rouse_ ©   (14.04.13 19:55) [5]

    ты что??
    это же тру-оптимизация !
    не 200 же ему Timage на форму копипастить !
  • Anatoly Podgoretsky © (20.05.13 16:24) [33]
    > не 200 же ему Timage на форму копипастить !

    Это расплата за "не умею"
 
Конференция "Прочее" » Взрыв при попадании [Delphi, Windows]
Есть новые Нет новых   [119103   +94][b:0][p:0.004]