Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2012, 02:38   #1
schwartz
 
Аватар для schwartz
 
Регистрация: 13.12.2011
Сообщений: 6
Восклицание Рандомное появление двигающихся объектов в delphi

Всем доброго времени суток. Опишу проблему.
Никак не могу создать программу в делфи. Суть программы: создать игру, в окне в рандомном месте появляется объект (можно просто кнопку использовать) который начинает рандомно двигатся по экрану (направление движения не зависит, можно как неизменное, так и изменяемое). при нажатии на объект он исчезает, и появляется следующий ну и такое повторяется несколько раз. в игре 2-3 уровня, отличаются только скоростью движения этих объектов.
На данный момент я сам попробовал сделать чтоб хотя бы 1 объект так появлялся (creat'ом) и двигался, но при нажатии не исчезает.
помогите пожалуйста, через несколько дней прогу надо преподу показать (это просто к курсачу) а нам делфи объясняли мягко говоря "только как информацию из edit в memo переносить". Сам уже себе все мозги сломал, надеюсь на понимание.
Только геймер, смотря фильм ужасов, в момент когда главный герой под нарастающую музыку идёт по тёмному коридору, мог заорать "сейвся, сейвся"
schwartz вне форума Ответить с цитированием
Старый 14.05.2012, 07:42   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

На нажатие кнопки мыши нужно проверить, попадают ли ее координаты внутрь объекта. Если "да" - уничтожать объект.

Кстати, создание и уничтожение объекта на экране и создание и уничтожение объекта в программе - не одно и то же. Уничтожение объекта в игре может соответствовать "сделать невидимым" в программе без физического уничтожения.
s-andriano вне форума Ответить с цитированием
Старый 16.05.2012, 07:58   #3
schwartz
 
Аватар для schwartz
 
Регистрация: 13.12.2011
Сообщений: 6
По умолчанию

Спасибо=) А в принципе возможно это сделать в таймере, я движение объекта вставил в таймер, пробовал сделать для уничтожения объекта простую ONCLICK, она не работает?
Только геймер, смотря фильм ужасов, в момент когда главный герой под нарастающую музыку идёт по тёмному коридору, мог заорать "сейвся, сейвся"
schwartz вне форума Ответить с цитированием
Старый 16.05.2012, 09:03   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var Dx,Dy : Integer;
    Angle : Real;
begin
  if Button1.Visible then
    begin
      Angle := Pi*Random(360)/180;
      Dx := Trunc(10 * cos(Angle));
      Dy := Trunc(10 * sin(Angle));
      If Button1.Left + Dx < 0 then Dx := - Dx;
      If Button1.Left + Button1.Width + Dx > ClientWidth then Dx := - Dx;
      If Button1.Top + Dy < 0 then Dy := - Dy;
      If Button1.Top + Button1.Height  + Dy > ClientHeight then Dy := - Dy;
      Button1.Left := Button1.Left + Dx;
      Button1.Top := Button1.Top + Dy;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Visible := False;
end;

initialization
Randomize;
end.
А у меня вполне работает... всё что нужно - кинуть на форму Button и Timer
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 17.05.2012, 22:05   #5
schwartz
 
Аватар для schwartz
 
Регистрация: 13.12.2011
Сообщений: 6
По умолчанию

Спасибо, помогли ребят=)
Только геймер, смотря фильм ужасов, в момент когда главный герой под нарастающую музыку идёт по тёмному коридору, мог заорать "сейвся, сейвся"
schwartz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рандомное заполнение MaxiCool Помощь студентам 1 15.04.2011 18:04
рандомное падение программы HOOCH94 Общие вопросы Delphi 3 10.04.2011 21:59
рандомное заполнение массивов. Repac123456 Помощь студентам 8 24.11.2010 03:06
Постепенное появление объектов AdvanceQ Общие вопросы Delphi 2 08.01.2010 21:41