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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2008, 19:35   #1
faster
 
Регистрация: 21.12.2007
Сообщений: 3
По умолчанию

Помогите пожалуста грамотно написать за что отвечает(и делает) каждый цикл, процедура и переменная в программе...
Задание:
Создание элементов оконного интерфейса в текстовом режиме

Необходимо создать программу, позволяющую работать с элементами оконного интерфейса. Базовые действия (создание элемента, прорисовка элемента, и т.д.) реализовать через соответствующие процедуры и функции.
Генерирование последовательности окон. У каждого окна, заголовок - номер окна, а также свои цвета текста и фона. Активное окно рисуется с двойной рамкой, пассивные - с одинарной. Активное окно рисуется поверх остальных окон. Размеры окон задаются с помощью генератора случайных чисел (функции randomize, random) Реализовать обязательные функции, плюс одну дополнительную.

Обязательные функции:
-добавление/удаление окна (клавиши Ins, Del);
-сортировка по возрастанию/убыванию окон (клавиши I, D);


Дополнительные функции:
-Изменение размеров активного окна при нажатии клавиш <+>, <->/

Это прога использует модуль CRT,выводит окна по цветам а дальше не понял.

Идёт завершение проги если окон больше 30

а с циклами надеюсь легко,что какой делает

For,while,repeat и т.д

Последний раз редактировалось Alex21; 04.07.2008 в 16:00.
faster вне форума Ответить с цитированием
Старый 12.05.2008, 19:37   #2
faster
 
Регистрация: 21.12.2007
Сообщений: 3
По умолчанию

Код:
Program CT;
uses CRT;
type
    t_win=record
    x1,x2,y1,y2:byte;
    cvet_ram:byte;
    cvet_fon:byte;
    s:byte;
end;
var
    win:array[1..30] of t_win;
    c,H,V:char;
    l,f,g,k: integer;
    i,w,n,j,q:byte;
    procedure param_win(i:byte);
    begin
       repeat
          win[i].cvet_ram:=1+ random(8);
          win[i].cvet_fon:=1+random(8);
          until win[i].cvet_fon<>win[i].cvet_ram;
       repeat
          win[i].x1:=random(100);
          win[i].y1:=Random(30);
          win[i].x2:=random(80);
          win[i].y2:=random(25);
       until((win[i].x2-win[i].x1)>10) and  ((win[i].y2-win[i].y1)>2) and (win[i].x1>11)
       and (win[i].y1>3) and ((win[1].x2-win[1].x1)>38) and (win[i].y2-win[i].y1<6);;
    end;
procedure okno(i:byte;activ:boolean);
begin
   if activ then
   begin
      H:=#205;
      V:=#186;
   end
   else
   begin
      H:=#196;
      V:=#179;
   end;
   TextBackground(win[i].cvet_fon);
   TextColor(win[i].cvet_ram);
   Window(win[i].x1,win[i].y1,win[i].x2,win[i].y2);
   ClrScr;
   gotoxy(2,1);
   for k:=win[i].x1+2 to win[i].x2-2 do Write(H);
   gotoxy(2,2);
   with win[i] do
   for k := y1+1 to y2-1 do
   begin
      Write(V);
      gotoxy(2,wherey+1);
   end;
   for k:= win[i].x1+2 to win[i].x2-2 do Write(H);
   Gotoxy(win[i].x2-win[i].x1,2);
   for k := win[i].y1+1 to win[i].y2-1 do
   begin
      Write(V);
      gotoxy(win[i].x2-win[i].x1,wherey+1);
   end;
   gotoxy(3,2);
   write('Okno ',i);
   end;
   begin
   textbackground(0);
   clrscr;
   randomize;
   textcolor(14);
   write ('vvedite kol-vo okon(ne bolee 30): ');
   readln(n);
   clrscr;
   textcolor(15);
   window(1,1,80,25);
   gotoxy(1,25);
   write('Sozdat''-Ins, Udalit''-Del, Yvelt_','+',', Yment_','-',' Sort-''A''' );
   for i:=1 to n do
         param_win(i);
   for i:=1 to n-1 do
         okno(i,false);
   okno(n,true);

   repeat
      c:=readkey;
      if c=#0 then
      begin
         c:=readkey;
         case c of
         #82:
         if n<=30 then
         begin
            if k<>1 then
            okno(n,false)
         else n:=0;
         n:=n+1;
         param_win(n);
         okno(n,true);
         end;
     #83: if n>1 then
     begin
     window(1,1,80,24);
     textbackground(0);
     clrscr;
     for i:=1 to n-2 do
     okno(i,false);
     n:=n-1;
     okno(n,true);
end
else
begin
window(1,1,80,24);
textbackground(0);
clrscr;
k:=1;
end;

end;
end  else
if c=#97 then
begin
textbackground(0);
window(1,1,80,24);
clrscr;
win[i].s:=(win[i].x2-win[i].x1){*(win[i].y2-win[i].y1)};
for j:=1 to n do
for i:=2 to n do
begin
if win[i].s>win[i-1].s then
begin
l:=win[i].x2;win[i].x2:=win[i-1].x2;win[i-1].x2:=l;
l:=win[i].y2;win[i].y2:=win[i-1].y2;win[i-1].y2:=l;
l:=win[i].x1;win[i].x1:=win[i-1].x1;win[i-1].x1:=l;
l:=win[i].y1;win[i].y1:=win[i-1].y1;win[i-1].y1:=l;
l:=win[i].cvet_ram;win[i].cvet_ram:=win[i-1].cvet_ram;win[i-1].cvet_ram:=l;
l:=win[i].cvet_fon;win[i].cvet_fon:=win[i-1].cvet_fon;win[i-1].cvet_fon:=l;
end;
end;
          q:=win[1].x2-win[1].x1;
         w:=win[1].y2-win[1].y1;
         win[1].x1:=3;
         win[1].y1:=1;
         win[1].x2:=win[1].x1+q;
         win[1].y2:=win[1].y1+w;
         for i:=2 to n do
         begin
         f:=win[i].x2-win[i].x1;
         g:=win[i].y2-win[i].y1;
         win[i].x1:=win[i-1].x1+3;
         win[i].y1:=win[i-1].y1+2;
         win[i].x2:=win[i].x1+f;
         win[i].y2:=win[i].y1+g;
         end;
         for i:=1 to n-1 do
         okno(i,false);
         i:=i+1;
         okno(i,true);
end;
if c=#43 then begin
window(1,1,80,24);
     textbackground(0);
     clrscr;
     for i:=1 to n-1 do
     okno(i,false);
     i:=i+1;
     win[i].x2:=win[i].x2+3;
     win[i].x1:=win[i].x1-3;
     win[i].y2:=win[i].y2+1;
     win[i].y1:=win[i].y1-1;
     if win[i].x2>77 then win[i].x2:=win[i].x2-3;
     if win[i].x1<3 then win[i].x1:=win[i].x1+3;
     if win[i].y2>24 then win[i].y2:=win[i].y2-1;
     if win[i].y1<1 then win[i].y1:=win[i].y1+1;

     if win[i].x1<3 then
     begin
     win[i].x2:=win[i].x2+3;
     win[i].x1:=win[i].x1+3;
     end;
     okno(n,true);
end;
if c=#45 then begin
window(1,1,80,24);
     textbackground(0);
     clrscr;
     for i:=1 to n-1 do
     okno(i,false);
     i:=i+1;
     win[i].x2:=win[i].x2-3;
     win[i].x1:=win[i].x1+3;
     win[i].y2:=win[i].y2-1;
     win[i].y1:=win[i].y1+1;
     if win[i].x2-win[i].x1<10 then
     begin
     win[i].x1:=win[i].x1-3;
     win[i].x2:=win[i].x2+3;
     end;
     if win[i].y2-win[i].y1<3 then
     begin
     win[i].y1:=win[i].y1-1;
     win[i].y2:=win[i].y2+1;
     end;
     if win[i].x1<3 then
     begin
     win[i].x2:=win[i].x2+3;
     win[i].x1:=win[i].x1+3;
     end;
     okno(n,true);
end;
until c=#27;
end.

Последний раз редактировалось Alex21; 04.07.2008 в 16:00.
faster вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите объяснить программку Panda Помощь студентам 2 03.07.2008 08:21
Delphi. Объяснить прогу. Bomber Помощь студентам 0 02.06.2008 19:59
Как мне объяснить эти задачи препадователю? trunx Microsoft Office Excel 10 30.11.2007 00:54
Помогите исправит прогу!!! Ванька Помощь студентам 1 25.11.2007 14:47
помогите отредактировать прогу finch Помощь студентам 3 25.06.2007 07:42