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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2009, 20:57   #1
Walter
Пользователь
 
Регистрация: 03.11.2008
Сообщений: 43
По умолчанию Движение ломанной линии Делфи

Вечер добрый... можете подсказать одну вещь, как создать массив Data и что в нём надо указывать... есть код, но в задании дано, что надо создать массив для начала, и его использовать в обработчике.
Т.е. может этот массив должен содержать какие то координаты точек или ещё чего??? Есл кто может обьясните плз
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  gr: array[1..50] of TPoint;
  x0,y0: integer;
  dx,dy: integer;
  i:integer;
begin
  x0:=10; y0:=200;
  dx:=5; dy:=5;
    for i:=1 to 50 do
     begin
      gr[i].x:=x0+(i-1)*dx;
      gr[i].y:=y0-Data[i]*dy;
     end;
    with form1.Canvas do
    begin
      MoveTo(x0,y0);  LineTo(x0,10);
      MoveTo(x0,y0);  LineTo(200,y0);
      Polyline(gr);
    end;
end;

end.
Walter вне форума Ответить с цитированием
Старый 17.05.2009, 21:38   #2
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Как видно из текста, массив дата должен быть целым числом(integer), значит массив для Data будет
data: array[0..2] of Integer;
Числа в массиве зависят от того, какая ломанная вам нужна.
ЗЫ: Сам ничего не знаю, просто так думаю
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 18.05.2009, 00:14   #3
Walter
Пользователь
 
Регистрация: 03.11.2008
Сообщений: 43
По умолчанию

Понятно... попробуем поэксперементировать )
Walter вне форума Ответить с цитированием
Старый 18.05.2009, 00:39   #4
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
Движение ломанной линии Делфи
Не совсем понятно... Что именно должно получаться-то?
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 18.05.2009, 19:00   #5
Walter
Пользователь
 
Регистрация: 03.11.2008
Сообщений: 43
По умолчанию

Ну вообщем, она у меня ещё не полная, а должно получиться следующее:
В PaintBox случайно движется ломанная из 4-х случайно построенных звеньев длины 10. Следующий шаг ломанная выбирает в одном из 4-х направлений (вверх, вниз, вправо, влево). Длина шага также выбираеться случайно.
Walter вне форума Ответить с цитированием
Старый 23.05.2009, 01:00   #6
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

А сама ломанная изменяется при движении? И что это за "шаг"..?
Она вообще плавно должна двигаться или рывками?
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 23.05.2009, 07:32   #7
Walter
Пользователь
 
Регистрация: 03.11.2008
Сообщений: 43
По умолчанию

Насчёт плавно или рывками ненаю, наверн рывками... изменения не происходят, т.е. просто она как то по кускам наверн двигаеться, ну т.е. каждое звено, а шаг я так понимаю расстояние которое оно движеться в какое то определённое направление. Ну эт я как понял, т.к. в задаче тока это и написано )))
Walter вне форума Ответить с цитированием
Старый 23.05.2009, 15:50   #8
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Лампочка

Я к тому, что дано мало данных для решения задачи...
"звенья длины 10" - длина постоянная?
"Следующий шаг ломанная выбирает в одном из 4-х направлений" - целиком или для каждого звена?
"длина шага" - это что ещё за длина такая?

В общем не понятно (С)...


Ну... Предположим, что она должна целиком вся двигаться:
Код:
Var Line: Array [0..4] Of TPoint;
...
Procedure GenerateRandomLine;
Var i, Ang: Integer;
Begin
Line[0].X:=Random(120)+180;  // первые координаты задаются случайно
Line[0].Y:=Random(120)+180;
For i:=1 To 4 Do
      Begin
      Ang:=Random(360);  // случайный угол
      Line[i].X:=Round(Line[i-1].X+100*Cos(Ang*Pi/180));  // остальные - через угол, чтоб длина отрезков была равной 100 (при 10-ти они получались слишком мелкими)
      Line[i].Y:=Round(Line[i-1].Y+100*Sin(Ang*Pi/180));
      End;
End;

Procedure TForm1.FormCreate(Sender: TObject);
Begin
GenerateRandomLine;
Timer1.Interval:=100;
Timer1.Enabled:=True;
End;

Procedure TForm1.SpeedButton1Click(Sender: TObject);
Begin
GenerateRandomLine;
End;

Procedure TForm1.Timer1Timer(Sender: TObject);
Var i, n, m: Integer;
Begin
n:=Random(6)+4; // это будет случайный "шаг"
m:=Random(3); // случайное направление
For i:=0 To 4 Do
      Begin
      Case m Of    // проверяем куда двигаться
            0:
                  Line[i].X:=Line[i].X+n;  // вправо
            1:
                  Line[i].X:=Line[i].X-n;  // влево
            2:
                  Line[i].Y:=Line[i].Y+n;  // вниз
            3:
                  Line[i].Y:=Line[i].Y-n;  // вверх
            End;
      End;
Image1.Canvas.FillRect(Image1.Canvas.ClipRect);  // заливаем рисунок
Image1.Canvas.Polyline(Line);  // рисуем линию
End;
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 23.05.2009, 19:42   #9
Walter
Пользователь
 
Регистрация: 03.11.2008
Сообщений: 43
По умолчанию

Так вообщем длина остаёться не изменной, т.е. рисуються 4 линии в любом направлении. К примеру вправо, вниз, вправо, вниз, ну т.е. как они рисуються, ну и эту всю конструкцию мона двигать целиком, т.е. на какое то определённое количество точек вверх, вниз, вправо, влево. А длина шага, эт тип 1 точка в какую то сторону )
Walter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вертикальные линии в отчете Nikolaeva БД в Delphi 3 30.07.2019 09:45
Находятса ли 3 точьки на одной линии?(Паскаль) Iceman Помощь студентам 2 22.04.2009 23:08
Макрос: параметры линии на диаграмме rzrwolf Microsoft Office Excel 3 09.01.2009 07:45
сменить цвет линии в компоненте TChart Blondinka Общие вопросы Delphi 1 24.12.2007 15:52
Метод постоения линии тренда в Excel zetrix Microsoft Office Excel 0 31.10.2006 07:44