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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2020, 21:55   #1
SerobGrigoryan
Пользователь
 
Регистрация: 09.10.2020
Сообщений: 16
По умолчанию Графика ABC

Мне вот скинули этот код , а я вообще не понимаю это на ABC написано или на ABC.net , на ABC запускаю не компилируется первую строку поменял на uses GraphABC уже на другие строки компилятор ругается помогите с кодом плиз.
Код:
Uses GRAPH,CRT;
 
Var dr, md, yntrvac, n, m : integer;
elq   : boolean;
    c    : char;
Matric : Array [1..50, 1..50] of integer;
Const DOWN=#208; UP=#200; LEFT=#203; RIGHT=#205; ESC=#27; NULL=#0; ENTER=#13; SPACE=#32;
      Mode : Array [1..4] of string[9] = ('Problem', 'Input', 'Start', 'Exit');




Function GetKey : Char;
Var c : char;
Begin {GetKey}
     c:=ReadKey;
     Repeat
           if c=NULL then
           Begin c:=ReadKey;
                 if Ord(c)>127 then c:=NULL
                 else GetKey:=Chr(Ord(C)+128);
           End
           else GetKey:=c;
     Until c<>NULL;
End;  {GetKey}







Procedure Menu;
Begin
yntrvac:=1;
   
   

   Circle(318,400,20);
   settextstyle(Triplexfont,Horizdir,2);
   outtextxy(305,390,'MD');
   Arc(320,400,45,230,60);
   Arc(337,400,45,228,50);
   Arc(291,438,220,360,12);
   Arc(290,400,240,415,60);
   Arc(302,400,240,388,78);
   Arc(275,441,240,318,30);


   setcolor(white);
   SetTextStyle(0,0,1);
   outtextxy(4,3,'Xumb` TT819-2');
   outtextxy(4,15,'Dasaxos` V.Ghukasyan.');
   outtextxy(4,27,'Usanogh` S.Margaryan.');
    setcolor(0);

     SetColor(Blue); SetLineStyle(0, 0, 3);
     Line(224, 140, 416, 140);


     SetColor(White);
     SetFillStyle(1, Blue);

SetTextStyle(Triplexfont, 0, 5);
     Bar(220, 100, 420, 150);
     OutTextXY(236, 102, 'Problem');


     bar(220, 160, 420, 210);
outtextxy(260, 162, 'Input');

     bar(220, 220, 420, 270);
outtextxy(260, 222, 'Start');

     bar(220, 280, 420, 330);
outtextxy(272, 282, 'Exit');

    
End;

Procedure problem;
Begin
settextstyle(0,0,0);
outtextxy(270,100,'XNDIR 9');
setcolor(yellow);
setlinestyle(1,0,3);
rectangle(60,130,575,300);
setcolor(white);
setcolor(white);
settextstyle(0,0,0);
outtextxy(65, 170, ' Trvac NxM chapoxakanutyamb uxxankyun matricy, vori tarrery');
outtextxy(65, 185, 'amboxjtver en, grancel faylum yev artacel tesatipi ekrani');
outtextxy(65, 200, 'vra grafikakan rejimum.');
outtextxy(65, 215, ' Kazmel cragir, vory nuyn patkeri vra kcucadri matrici syuneri');
outtextxy(65, 230, 'texasharjy depi aj ciklik exanakov. Ptuyt@ dadarecnel kamayakan');
outtextxy(65, 245, 'stexn sexmeluc heto.');
repeat
setcolor(white);
outtextxy(4,450,'Press ESC to Exit.');
delay(500);
setcolor(4);
outtextxy(4,450,'Press ESC to Exit.');
delay(500); until keypressed;
GetKey;
End;

Procedure inputdata;
Var Button, i, x : integer;
    f : file of integer;
Begin
  
     Button:=1;
     SetFillStyle(1, red);
     bar(GetMaxX div 2-200,160,GetMaxX div 2+200,210);
outtextxy(GetMaxX div 2-70,162,'Random');
     SetFillStyle(1, blue);
     bar(GetMaxX div 2-200,220,GetMaxX div 2+200,270);
outtextxy(GetMaxX div 2-64,226,'Manual');

     C:=GetKey;
     While C<>ENTER do
     Begin
          if (C=UP) and (Button=2) then
          Begin
               Button:=1;
               SetFillStyle(1, red);
               bar(GetMaxX div 2-200,160,GetMaxX div 2+200,210);
outtextxy(GetMaxX div 2-70,162,'Random');
               SetFillStyle(1, blue);
               bar(GetMaxX div 2-200,220,GetMaxX div 2+200,270);
outtextxy(GetMaxX div 2-64,226,'Manual');
          End
          else if (C=DOWN) and (Button=1) then
          Begin
               Button:=2;
               SetFillStyle(1, blue);
               bar(GetMaxX div 2-200,160,GetMaxX div 2+200,210);
outtextxy(GetMaxX div 2-70,162,'Random');
               SetFillStyle(1, red);
               bar(GetMaxX div 2-200,220,GetMaxX div 2+200,270);
outtextxy(GetMaxX div 2-64,226,'Manual');
          End;
          C:=GetKey;
          end;

     Assign(f, 'input.txt'); Rewrite(f);
         if button=1 then
         begin
         Randomize;
         N:=Random(10)+3;
         M:=N+random(5);
         write(f,n,m);
         for i:=1 to n*m do
         begin
         x:=random(100);
         write(f,x);
         end;
         end
         else
         begin
RestoreCrtMode;
 Write('N= '); Readln(N);
     write('M = '); Readln(m);
    write(f,n,m);
writeln('         MATRIC       ');
     for i:=1 to n*m do
     begin
          read(x);
          write(f, x);
     end;

setgraphmode(getgraphmode);
end;
 close(f);
 end;



Begin {Main}
      dr:=0;
      InitGraph(dr, md, '');

      SetFillStyle(0, blue);
SetBkColor(LightRed);
      Bar(0, 0, GetMaxX, GetMaxY);
      Menu; 

elq:=false;
      Repeat
            c:=GetKey;
            if (c=DOWN) and (yntrvac<4) then
            Begin

        SetFillStyle(1, Blue);
                 Bar(220, 40+(yntrvac*60) , 420, 90+(yntrvac*60));
                 SetColor(White);
                 OutTExtXY(320-length(Mode[yntrvac])*12, 42+(yntrvac*60), Mode[yntrvac]);
yntrvac:=yntrvac+1;
                 SetFillStyle(1, Red);
                 Bar(220, 40+(yntrvac*60) , 420, 90+(yntrvac*60));
                 OutTExtXY(320-length(Mode[yntrvac])*12, 42+(yntrvac*60), Mode[yntrvac]);
            End
            else if (c=UP) and (yntrvac>1) then
            Begin

        SetFillStyle(1, blue);
                 Bar(220, 40+(yntrvac*60) , 420, 90+(yntrvac*60));
                 SetColor(White);
                 OutTExtXY(320-length(Mode[yntrvac])*12, 42+(yntrvac*60), Mode[yntrvac]);
yntrvac:=yntrvac-1;
                 SetFillStyle(1, Red);
                 Bar(220, 40+(yntrvac*60) , 420, 90+(yntrvac*60));
                 OutTExtXY(320-length(Mode[yntrvac])*12, 42+(yntrvac*60), Mode[yntrvac]);
            End
            else if c=ENTER then
            Begin

           SetFillStyle(1, LightRed);
                 Bar(0, 0, GetMaxX, GetMaxY);
                 case yntrvac of
                 1 : problem;
                 2 : inputdata;
               {  3 :  START   ;  }
                 4 : elq:=true;
                 end;

        SetFillStyle(1, black);
Setbkcolor(LightRed);
                 Bar(0, 0, GetMaxX, GetMaxY);
                 Menu;
            End;
      Until elq;
End.
SerobGrigoryan вне форума Ответить с цитированием
Старый 27.11.2020, 21:57   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Это Turbo Pascal, а у PascalABC иной графический интерфейс. Придется переписывать, заменяя на аналоги процедуры рисования, если они, конечно, есть в ABC. Вообще этот Паскаль никому нафиг не нужен. Неужели есть преподы, которые дают задания на PascalABC?
Arigato вне форума Ответить с цитированием
Старый 27.11.2020, 22:56   #3
SerobGrigoryan
Пользователь
 
Регистрация: 09.10.2020
Сообщений: 16
По умолчанию

Вообще-то препод разрешил на любом языке , просто мне сказали , что это на abc . Так будет ли он на turbo pascal е работать , и если нет , то что нужно исправить рас это на ТБ написанно
SerobGrigoryan вне форума Ответить с цитированием
Старый 27.11.2020, 23:42   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

TP сам по себе не факт, что будет нормально работать, уж больно старая среда. Если можно использовать любой ЯП, то возьмите что-то более современное. Скажем, Лазарус.
Arigato вне форума Ответить с цитированием
Старый 27.11.2020, 23:49   #5
SerobGrigoryan
Пользователь
 
Регистрация: 09.10.2020
Сообщений: 16
По умолчанию

Честно говоря впервые слышу , только что на ТП запустил вроде ошибку не выдает , но консоль теперь не открывается , можете Вы на чем то проверить компилируется ли этот код и сказать мне я уже скачаю все что угодно
SerobGrigoryan вне форума Ответить с цитированием
Старый 28.11.2020, 00:01   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Этот код для TP, но у меня нет TP и нет желания пытаться запустить этого динозавра
Arigato вне форума Ответить с цитированием
Старый 28.11.2020, 00:07   #7
SerobGrigoryan
Пользователь
 
Регистрация: 09.10.2020
Сообщений: 16
По умолчанию

Ок , спс
SerobGrigoryan вне форума Ответить с цитированием
Старый 28.11.2020, 02:40   #8
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Попробовал с Free Pascal.
Программа откомпилировалась и запустилась.
По моим понятиям в ней неверно реализована функция
Код:
Function GetKey : Char;
По нажатию клавиши и Enter выводится непонятный текст.
Это какой язык?
Код:
outtextxy(65, 170, ' Trvac NxM chapoxakanutyamb uxxankyun matricy, vori tarrery');
outtextxy(65, 185, 'amboxjtver en, grancel faylum yev artacel tesatipi ekrani');
outtextxy(65, 200, 'vra grafikakan rejimum.');
outtextxy(65, 215, ' Kazmel cragir, vory nuyn patkeri vra kcucadri matrici syuneri');
outtextxy(65, 230, 'texasharjy depi aj ciklik exanakov. Ptuyt@ dadarecnel kamayakan');
outtextxy(65, 245, 'stexn sexmeluc heto.');
Но если затем нажать клавишу (я о символьных), экран восстанавливается.
Цитата:
но консоль теперь не открывается
Это о чём речь?
После запуска программы открывается графический экран, но консольное окно остаётся, возможно под ним. Т.е. уменьшаешь размер графического окна (у меня мышкой получается), под ним консольное окно. Переводишь на него фокус и нажимаешь клавиши.

PS: Это точно не ABC Паскаль. Возможно, что и на TP70 заработает.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
графика в Pascal ABC Валера146 Паскаль, Turbo Pascal, PascalABC.NET 1 14.01.2015 22:08
Графика в ABC makroys Паскаль, Turbo Pascal, PascalABC.NET 11 17.10.2012 01:05
ABC - графика Form_13 Паскаль, Turbo Pascal, PascalABC.NET 2 11.10.2011 15:13