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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2008, 20:01   #1
veter_s_morya
ФорумчанинДжуниор
 
Аватар для veter_s_morya
 
Регистрация: 05.05.2008
Сообщений: 606
Печаль классы и графика в паскале!

Немного запустил 2 предмета ООП и веб. Объктно-ориентированное программирование на паскале (да, да, пока еще на паскале, не на делфи). Помогите, а то не успеваю... тут еще по вебу задали много. Помоготе, вот задача:
Задача 1.
Требуется описать иерархию классов, показанную на рисунке 1.
Класс Окружность включает поля: координаты центра, радиус, цвет, а также метод инициализации и метод прорисовки.
Класс Круг (т.е. заполненная окружность) должен добавлять поле, отвечающее за цвет заливки, переопределять методы инициализации и прорисовки (статические полиморфные методы).
Для прорисовки окружности используйте процедуру Circle. При прорисовке круга вызывайте метод Paint родительского класса, а также используйте процедуру FloodFill.
Программа должна иметь примерно следующую структуру:

Uses Graph;
{Описание классов}

var a,rg: integer;

begin
a:=Detect;
InitGraph(a,rg,'C:\program Files\Tp\Bgi'); {инициализация графического режима}
ClearDevice; {очистка экрана}
{инициализация объектов}
{прорисовка объектов}
end.
рисунок Как тут рисунок с компа вставит? Ладно... опишу рисунок! Прямоугольник поделён на 3 части. Впервой написано Окружность, во второй X,Y,R,C, в третьей Init, Paint это был один квадрат..типо класс родитель! Внизу другой квадрат, типо пдкласс. Состоит тоже из 3х частей 1я Круг, 2я СF, 3я Init, Paint. Все..рисунок на этом заканчивается...

Помогите, а то не успеваю... жесть одним словом... Пошел веб делать!
------------------------------
Ум без разума –это беда!

Последний раз редактировалось veter_s_morya; 09.11.2008 в 20:05. Причина: закончилась истерика ;-)
veter_s_morya вне форума Ответить с цитированием
Старый 11.11.2008, 20:45   #2
veter_s_morya
ФорумчанинДжуниор
 
Аватар для veter_s_morya
 
Регистрация: 05.05.2008
Сообщений: 606
По умолчанию

ребята, но с графикой у меня вообще туго! Help!!!
------------------------------
Ум без разума –это беда!
veter_s_morya вне форума Ответить с цитированием
Старый 11.11.2008, 21:02   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ниче не вразумел, чего за рисунок такой... Залей что-ли на файлообменку какую рисунок...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2008, 18:12   #4
veter_s_morya
ФорумчанинДжуниор
 
Аватар для veter_s_morya
 
Регистрация: 05.05.2008
Сообщений: 606
По умолчанию

Цитата:
чего за рисунок такой... Залей что-ли на файлообменку какую рисунок]
Я слил вордовский файл на народ. Там на него ссылка!
www.Pet2374.narod.ru
картинка в ворде!
Помоги, дружище Stilet!
------------------------------
Ум без разума –это беда!
veter_s_morya вне форума Ответить с цитированием
Старый 16.11.2008, 12:32   #5
veter_s_morya
ФорумчанинДжуниор
 
Аватар для veter_s_morya
 
Регистрация: 05.05.2008
Сообщений: 606
По умолчанию

Жесть! Я раньше не работал с графикой. Вот решил вывести простой кружок... не работает...
Код:
program trrygraphih;
uses graph;

var
gd, gm:integer;
begin
gd:=Detect;
InitGraph(gd, gm, '');
SetbkColor(1);
SetColor(5);
Circle(8, 8, 2);
readln;
CloseGraph;
end.
файл graph.tpu находится в той же папке, что и моя программа. И где тут бяка?
------------------------------
Ум без разума –это беда!
veter_s_morya вне форума Ответить с цитированием
Старый 16.11.2008, 15:15   #6
veter_s_morya
ФорумчанинДжуниор
 
Аватар для veter_s_morya
 
Регистрация: 05.05.2008
Сообщений: 606
По умолчанию

Компилятор пишет мне

Main file: trrygraphih.pas
Compiling: trrygraphih.pas

Destination: Memory Line number: 1
Free memory: 303K Total lines: 0

Жму ескейп и он выдает

Main file: trrygraphih.pas
Linking...

Destination: Memory Line number: 0
Free memory: 294K Total lines: 35

Я начал уже чесаться.... help!
------------------------------
Ум без разума –это беда!
veter_s_morya вне форума Ответить с цитированием
Старый 16.11.2008, 15:29   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

положите туда же BGI (прежде всего EGAVGA.BGI)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.11.2008, 21:20   #8
veter_s_morya
ФорумчанинДжуниор
 
Аватар для veter_s_morya
 
Регистрация: 05.05.2008
Сообщений: 606
По умолчанию

Цитата:
положите туда же BGI (прежде всего EGAVGA.BGI)
Странно, он там есть! Не работает... Скиньте мне скриншет перечня файлов... Да...Новосельцев, ваше дело труба!..
------------------------------
Ум без разума –это беда!
veter_s_morya вне форума Ответить с цитированием
Старый 16.11.2008, 21:50   #9
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

можешь посмотреть пример моей прошлогодней работы, там рисуются окружность и квадрат, закрашиваются в разные цвета и обводку. Посмотришь как раз пример построения классов и добавишь еще метод закраски и будет тебе твоя задача
Код:
Program _color;

uses Graph;

type

  Class_Color = object
    
    current_color : integer;
    current_bk_color : integer;
    colors : array [0..15] of string;
    
    center_x, center_y : integer;
    
    Procedure Init;
    Procedure Init_Graph;
    Procedure Close_Graph;
    
    Procedure Set_Color(c : integer);
    Procedure Set_BkColor(c : integer);
    
    Function Get_Color: integer;
    Function Get_BkColor: integer;
    
    Procedure GetColorName(var cname : string);
    Procedure GetBkColorName(var cname : string);
    
    Procedure DrawCircle(rad : integer);
    Procedure DrawQuadro(side : integer);
    
  end;
  
  
  Procedure Class_Color.DrawCircle(rad : integer);
  begin
       moveto(0, 0);
    circle(center_x, center_y, rad);
    FloodFill(center_x, center_y, current_color);
  end;

  Procedure Class_Color.DrawQuadro(side : integer);
  begin
       moveto(0,0);
    Rectangle(center_x div 2, center_y div 2, (center_x div 2) + side, (center_y div 2) + side);
    FloodFill(center_x + 2, center_y + 2, current_color);
  end;
  
  Procedure Class_Color.Set_Color(c :integer);
  begin
    current_color := c;
  end;
  
  Procedure Class_Color.Set_BkColor(c :integer);
  begin
    current_bk_color := c;
  end;
  
  Procedure Class_Color.Init_Graph;
  var
    max_x, max_y, d, r : integer;
          
  begin
          
    d := Detect;
                  
                  
                  
    InitGraph(d, r, '');
                          
                          
                          
    max_x := getmaxx-1;
                              
    max_y := getmaxy-1;
                                          
                                          
                                         
    center_x := max_x div 2;

    center_y := max_y div 2;
                                                          
    setcolor(current_color)                                                      ;
    setbkcolor(current_bk_color);
                                                          
  
  end;
  
  Procedure Class_Color.Init;
  begin
    colors[0] := 'BLACK';
    colors[1] := 'BLUE';
    colors[2] := 'GREEN';
    colors[3] := 'CYAN';
    colors[4] := 'RED';
    colors[5] := 'MAGENTA';
    colors[6] := 'BROWN';
    colors[7] := 'LIGHTGRAY';
    colors[8] := 'DARKGRAY';
    colors[9] := 'LIGHTBLUE';
    colors[10]:= 'LIGHTGREEN';
    colors[11]:= 'LIGHTCYAN';
    colors[12]:= 'LIGHTRED';
    colors[13]:= 'LIGHTMAGENTA';
    colors[14]:= 'YELLOW';
    colors[15]:= 'WHITE';

    current_color := 15;
    current_bk_color := 0;
  end;

  Procedure Class_Color.Close_Graph;
  begin
    closegraph;
  end;
  
  Function Class_Color.Get_Color: integer;
  begin
    Get_Color := current_color;
  end;

  Function Class_Color.Get_BkColor: integer;
  begin
    Get_BkColor := current_bk_color;
  end;
  
  Procedure Class_Color.GetColorName(var cname : string);
  begin
    cname := colors[current_color];
  end;
  
  Procedure Class_Color.GetBkColorName(var cname : string);
  begin
    cname := colors[current_bk_color];
  end;

var
  input_act, input_int : integer;
  col_name, bk_col_name : string;
  
  colour : Class_Color;

begin
  
  colour.Init;
  
  input_act := 0;
  
  while input_act <> 5	do
  begin
  
  colour.GetColorName(col_name);
  colour.GetBkColorName(bk_col_name);
  
    Writeln;
    Writeln('Color : ', col_name);
    Writeln('Back color : ', bk_col_name);
    Writeln;
    Writeln('1. Set color');
    Writeln('2. Set background color');
    Writeln('3. Draw circle');
    Writeln('4. Draw quadro');
    Writeln('5. Exit');
    
    Readln(input_act);
    
    case input_act of

      1:
      begin
        Writeln;
        Write('Enter color number : ');
        Readln(input_int);

        colour.Set_Color(input_int);
      end;

      2:
      begin
        Writeln;
        Write('Enter background color number : ');
        Readln(input_int);
        
        colour.Set_BkColor(input_int);        
      end;
      
      3:
      begin
        Writeln;
        Write('Enter radius : ');
        Readln(input_int);

        colour.Init_Graph;

        colour.DrawCircle(input_int);

        Readln;
        colour.Close_Graph;
      end;

      4:
      begin
        Writeln;
        Write('Enter side : ');
        Readln(input_int);

        colour.Init_Graph;

        colour.DrawQuadro(input_int);

        Readln;
        colour.Close_Graph;
      end;
    end;

  end;
    
end.
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 16.11.2008, 21:51   #10
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

кстати у меня тоже были проблемы с графикой, оказалось что у меня была какая то усеченная версия где модуль граф не поддерживался, так что проверь свою
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика в Паскале =)) barahlysh Помощь студентам 4 13.12.2009 19:31
Графика на паскале..... КиношкА Помощь студентам 8 10.01.2008 10:09
Графика в Паскале Win't Паскаль, Turbo Pascal, PascalABC.NET 2 16.12.2007 21:54