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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2014, 18:31   #1
mrKosmos
 
Регистрация: 14.02.2014
Сообщений: 3
По умолчанию Орнамент

Помогите. Нужно что бы данная фигура, которая получилась, дублировалась по всему экрану.
Код:
uses graphabc;
var
  cx : integer := WindowCenter.X;
  cy : integer := WindowCenter.Y;
 
procedure ornament(n,r,h:integer);
begin
var a:=pi/2;
for var i:=1 to n do
 begin
  var arr: array of Point := (
     new point (trunc(cx + r*cos(a)), trunc(cy - r*sin(a))),
     new point (trunc(cx + r*cos(a + 2*pi/3)), trunc(cy - r*sin(a+2*pi/3))), 
     new point (trunc(cx + r*cos(a + 4*pi/3)), trunc(cy - r*sin(a+4*pi/3))));
  
  Setpencolor(clRandom);
  Setbrushstyle(bsClear);
  Polygon(arr);
  r:=r+h;
 end; 
end;
 
var n,r,h:integer;
begin
n:=20;
r:=20; 
h:=10;
ornament(n,r,h);
end.
mrKosmos вне форума Ответить с цитированием
Старый 14.02.2014, 20:03   #2
OlegPrograming5
Пользователь
 
Регистрация: 12.01.2009
Сообщений: 42
По умолчанию

Версию паскаля не подскажете?
OlegPrograming5 вне форума Ответить с цитированием
Старый 14.02.2014, 20:05   #3
mrKosmos
 
Регистрация: 14.02.2014
Сообщений: 3
По умолчанию

Цитата:
Сообщение от OlegPrograming5 Посмотреть сообщение
Версию паскаля не подскажете?
Pascal ABC
mrKosmos вне форума Ответить с цитированием
Старый 14.02.2014, 20:26   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

1) В Pascal ABC у меня не скомпилировался, только в Pascal ABC NET заработал
2) Эх, чему только учит этот "паскаль"
3) Вам осталось рассчитать правильно пределы для циклов по j и k (чтобы заполняли экран полностью, лишнего за пределами не рисовали)
Код:
uses
  graphabc;

var
  cx: integer := WindowCenter.X;
  cy: integer := WindowCenter.Y;

procedure ornament(n, r, h: integer);
begin
  var a := pi / 2;
  var x := (r + h * (n - 1)) * sqrt(3);
  var y := (r + h * (n - 1)) * 1.5;
  var d := r;
  for var j := -10 to 10 do
    for var k := -10 to 10 do
    begin
      r := d;
      for var i := 1 to n do
      begin
        var arr: array of Point := (
           new point(trunc(cx + j * x + r * cos(a)), trunc(cy + k * y - r * sin(a))),
           new point(trunc(cx + j * x + r * cos(a + 2 * pi / 3)), trunc(cy + k * y - r * sin(a + 2 * pi / 3))),
           new point(trunc(cx + j * x + r * cos(a + 4 * pi / 3)), trunc(cy + k * y - r * sin(a + 4 * pi / 3))));
        Setpencolor(clRandom);
        Setbrushstyle(bsClear);
        Polygon(arr);
        r := r + h;
      end;
    end;
end;

var
  n, r, h: integer;

begin
  n := 5;
  r := 20;
  h := 10;
  ornament(n, r, h);
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 14.02.2014, 23:08   #5
mrKosmos
 
Регистрация: 14.02.2014
Сообщений: 3
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
1) В Pascal ABC у меня не скомпилировался, только в Pascal ABC NET заработал
2) Эх, чему только учит этот "паскаль"
3) Вам осталось рассчитать правильно пределы для циклов по j и k (чтобы заполняли экран полностью, лишнего за пределами не рисовали)
Код:
uses
  graphabc;

var
  cx: integer := WindowCenter.X;
  cy: integer := WindowCenter.Y;

procedure ornament(n, r, h: integer);
begin
  var a := pi / 2;
  var x := (r + h * (n - 1)) * sqrt(3);
  var y := (r + h * (n - 1)) * 1.5;
  var d := r;
  for var j := -10 to 10 do
    for var k := -10 to 10 do
    begin
      r := d;
      for var i := 1 to n do
      begin
        var arr: array of Point := (
           new point(trunc(cx + j * x + r * cos(a)), trunc(cy + k * y - r * sin(a))),
           new point(trunc(cx + j * x + r * cos(a + 2 * pi / 3)), trunc(cy + k * y - r * sin(a + 2 * pi / 3))),
           new point(trunc(cx + j * x + r * cos(a + 4 * pi / 3)), trunc(cy + k * y - r * sin(a + 4 * pi / 3))));
        Setpencolor(clRandom);
        Setbrushstyle(bsClear);
        Polygon(arr);
        r := r + h;
      end;
    end;
end;

var
  n, r, h: integer;

begin
  n := 5;
  r := 20;
  h := 10;
  ornament(n, r, h);
end.
Спасибо.
Вот такой вопрос. Можно ли как-то перевести этот код в обычный Pascal ABC, что б компилился?
mrKosmos вне форума Ответить с цитированием
Старый 15.02.2014, 01:59   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Думаю можно . Просто это нудная работа. Скопировать код. Попробовать скомпилировать. Прочесть жалобы компилятора. Исправить их. Повторять последние 3 пункта до победного.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработать орнамент Ольга Артуровна C++ Builder 1 13.09.2013 23:29
Ребят, как нарисовать орнамент?? Юлия94 Помощь студентам 5 20.02.2011 20:54