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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2019, 16:19   #1
dol
Пользователь
 
Регистрация: 02.12.2018
Сообщений: 12
Радость delphi компонент shape - Нужно кружок поднять по лестнице 8 ступенек по 50 пикселей и затем спустить обратно в исходное положение.

Нужно кружок поднять по лестнице 8 ступенек по 50 пикселей и затем спустить обратно в исходное положение.
Начальная позиция left =0; top = 408, а конечная left = 400; Top=8.
Код:
procedure TForm1.TimerTimer(Sender: TObject);
var x,y: integer;
begin
x:= 50;
y:= 50;

  if (shape1.Left < 400) and (shape1.Top > 8 ) then
   begin
    shape1.left:=shape1.Left+x;
    shape1.top:=shape1.top-y;
   end
  else
    begin
      shape1.left:=shape1.Left-x;
      shape1.top:=shape1.top+y;
    end;
У меня круг поднимается как надо до последней ступени, потом спускается на одну ступень вниз и снова поднимается на верхнюю ступеньку.
Я понимаю, что дело в этой строке (shape1.Left < 400) and (shape1.Top > 8), как мне изменить это условие, чтобы круг спускался по ступенькам до самого конца?
dol вне форума Ответить с цитированием
Старый 02.06.2019, 16:30   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
var z:integer=1;

procedure TForm1.Timer1Timer(Sender: TObject);
var x,y: integer;
begin
   x:= 50;
   y:= 50;
   shape1.left:=shape1.Left+z*x;
   shape1.top:=shape1.top-z*y;
   if (z>0) and ((shape1.Left >= 400) or (shape1.Top <= 8)) or
      (z<0) and ((Shape1.Left <= 0) or (Shape1.Top >= 408)) then
      z:=-z;
end;
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 02.06.2019 в 16:33. Причина: Подкорректировал условия
newerow1989 вне форума Ответить с цитированием
Старый 02.06.2019, 16:45   #3
dol
Пользователь
 
Регистрация: 02.12.2018
Сообщений: 12
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Код:

Код:
var z:integer=1;

procedure TForm1.Timer1Timer(Sender: TObject);
var x,y: integer;
begin
   x:= 50;
   y:= 50;
   shape1.left:=shape1.Left+z*x;
   shape1.top:=shape1.top-z*y;
   if (z>0) and ((shape1.Left >= 400) or (shape1.Top <= 8)) or
      (z<0) and ((Shape1.Left <= 0) or (Shape1.Top >= 408)) then
      z:=-z;
end;
Спасибо, все работает!Пожалуйста, оформляйте Ваш код согласно правилам.

Последний раз редактировалось Вадим Мошев; 03.06.2019 в 10:57.
dol вне форума Ответить с цитированием
Старый 02.06.2019, 16:52   #4
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упорядочить массив: наименьший элемент, затем наибольший, затем наименьший из оставшихся, затем наибо Megabuzz Помощь студентам 5 16.10.2018 21:19
FASM. Считать содержимое файла в строку и затем записать обратно в файл Zart Помощь студентам 0 19.04.2011 17:02
как заставить компонент Shape двигаться по ступенькам Ogurez Помощь студентам 1 31.10.2010 11:07
Компонент Shape Asira Помощь студентам 1 29.05.2010 00:18
Вернуть ScrollBar в исходное положение Shouldercannon Общие вопросы Delphi 6 18.04.2009 21:05