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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2009, 13:20   #1
Roman Charming
Пользователь
 
Регистрация: 18.06.2009
Сообщений: 10
По умолчанию Вопрос *где в программном коде реализуется следующая операция...

Здраствуйте всем

У меня вопрос по программному коду моей задачи в Дельфи
Скрин окна задачки в Дельфи я прикрепил как изображение

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


Преподаватель попросил меня в коде показать ему, где задаваемая скорость в окне( чем меньше число тем меньше скорость и наоборот ) считывается самой программой и точка начинает двигаться влево-вправо.

В какой строке... как программа вообще считывает эту скорость и задает определенную скорость точке

Вот код самой программы

----------------------------------------------------------------------

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Timer1: TTimer;
    Shape1: TShape;
    Edit1: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  hx: integer;
  x: real;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
//Задаём шаг
hx:=10;
//Включаем объект таймер
timer1.Enabled:=true;
//Задаём ему интервал
timer1.interval:=strtoint(Edit1.Text);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
//Высчитываем координаты
x:=x+hx;
//Если x больше размеров окна то меняем направление
if (x>Form1.Height-40) then hx:=-10;
//Если х меньше то тоже меняем направление
if (x<10) then hx:=10;
//Присваеваем новые координаты точке
shape1.Left:=round(x);
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
//Изменяем скорость, если едит пустой то скорость равна 100
if (Edit1.Text='') then Edit1.Text:='100';
//Меняем интервал
timer1.interval:=strtoint(Edit1.Text);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
//Останавливаем процесс
timer1.Enabled:=false;
end;

end.
-------------------------------------------------------

Буду очень признателен

С уважением*
Изображения
Тип файла: jpg Программа.JPG (70.8 Кб, 51 просмотров)

Последний раз редактировалось Stilet; 18.06.2009 в 13:33.
Roman Charming вне форума Ответить с цитированием
Старый 18.06.2009, 13:28   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

У тебя все действия выполняются по таймеру. Когда ты меняешь время таймера, выполняется этот код, который собственно говоря и изменяет значение таймера и скорость:
Код:
procedure TForm1.Edit1Change(Sender: TObject);
begin
//Изменяем скорость, если едит пустой то скорость равна 100
if (Edit1.Text='') then Edit1.Text:='100';
//Меняем интервал
timer1.interval:=strtoint(Edit1.Tex t);
end;
Hollander вне форума Ответить с цитированием
Старый 18.06.2009, 13:42   #3
Roman Charming
Пользователь
 
Регистрация: 18.06.2009
Сообщений: 10
По умолчанию

Верно, так я преподавателю и сказал, но он задал встречный вопрос - что даже если вводимое число считывается программой - то как это передается точке?
Я неверно выразился - чем больше число задается, тем медленнее движется точка и наоборот

Каким образом она движется...он так ине понял
Roman Charming вне форума Ответить с цитированием
Старый 18.06.2009, 16:41   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
чем больше число задается, тем медленнее движется точка и наоборот
Правильно. Ты точку двигаешь через некоторый интервал времени.
Код:
timer1.interval:=strtoint(Edit1.Tex t);
Задашь двинуть точку через 5 сек, она и будет ждать 5 сек потом двинется. Задашь побольше число 25 сек - она и будет ждать 25 сек и только потом подвинется - Это и есть эффект скорости. Вспомни физику как там время со скоростью связаны.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.06.2009, 06:58   #5
Roman Charming
Пользователь
 
Регистрация: 18.06.2009
Сообщений: 10
По умолчанию

Точно точно.... Видимо вся ошибка была в моей же мысли о том, что я скорость и движение неверно связал в пропорции - вот он и не понял

Миллион спасибо!
Roman Charming вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операция в Газе Роман Радер Свободное общение 2 31.12.2008 17:03
Где ошибка в моем коде? artemavd БД в Delphi 12 22.09.2008 14:28
Операция Ы SASHA50 Microsoft Office Excel 10 25.04.2008 12:38
Операция сдвига? SkyDreamer Общие вопросы C/C++ 3 10.10.2007 08:20
Где ошибка в коде? Македонский Общие вопросы Delphi 16 10.09.2007 15:45