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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2014, 21:22   #11
lepump
Пользователь
 
Регистрация: 05.04.2014
Сообщений: 10
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Непонятно, что конкретно надо.
Как должна двигаться форма ? Случайно ?
Если случайно, то должно ли учитываться предыдущее направление движения ?
Если не случайно, то по какому принципу?

Пример приведите для нескольких кликов.
Нажимаю на кнопку которая находиться на форме и форма отступает на 10 в право, нажимаю на кнопку снова, и форма отступает на 15 влево. Последовательность отступов случайная. Только вправо и влево, вверх и вниз она не ходит.
lepump вне форума Ответить с цитированием
Старый 19.05.2014, 21:39   #12
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Все равно, не все понятно.
Ну ладно, 2 варианта.
1) Случайные независимые прыжки на случайное расстояние. То есть может быть два, три раза подряд вправо
Код:
procedure TForm1.Button1Click(Sender: TObject);
const MAX_STEP=20; // максимальная длина прыжка
begin
  Left:=Left+Random(2*MAX_STEP)-MAX_STEP;
end;
2) Прыжки вправ, потом влево, потом вправо, но на случайную длину
Код:
var
  Form1: TForm1;
  napr:Shortint;
implementation
//  и т.д. 
procedure TForm1.FormCreate(Sender: TObject);
begin
 napr:=1;
end;
procedure TForm1.Button1Click(Sender: TObject);
const MAX_STEP=20;
begin
  Left:=Left+napr*Random(MAX_STEP);
  napr:=-napr;
end;
type_Oleg вне форума Ответить с цитированием
Старый 19.05.2014, 21:45   #13
lepump
Пользователь
 
Регистрация: 05.04.2014
Сообщений: 10
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Все равно, не все понятно.
Ну ладно, 2 варианта.
1) Случайные независимые прыжки на случайное расстояние. То есть может быть два, три раза подряд вправо
Код:
procedure TForm1.Button1Click(Sender: TObject);
const MAX_STEP=20; // максимальная длина прыжка
begin
  Left:=Left+Random(2*MAX_STEP)-MAX_STEP;
end;
2) Прыжки вправ, потом влево, потом вправо, но на случайную длину
Код:
var
  Form1: TForm1;
  napr:Shortint;
implementation
//  и т.д. 
procedure TForm1.FormCreate(Sender: TObject);
begin
 napr:=1;
end;
procedure TForm1.Button1Click(Sender: TObject);
const MAX_STEP=20;
begin
  Left:=Left+napr*Random(MAX_STEP);
  napr:=-napr;
end;
Спасибо тебе огромное! Очень много увидел своих ошибок, буду учить.
lepump вне форума Ответить с цитированием
Старый 19.05.2014, 21:58   #14
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Да, и чтобы форма не выползала за экран, проверяйте
Left>0 - не вылазит влево
(Screen.Width-Left-Width)>0 - не вылазит вправо
type_Oleg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мишень Маруся171996 Паскаль, Turbo Pascal, PascalABC.NET 5 23.11.2013 23:03
заполнить квадратную матрицу Orakyll08 Помощь студентам 13 12.07.2011 01:46
Проверить, попадают ли заданные массивом X,Y координаты выстрелов в мишень (Turbo Pascal) Андрей П. Помощь студентам 0 20.05.2011 16:02
Заполнить квадратную матрицу ac1d_buRn Помощь студентам 3 22.12.2010 19:40