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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2008, 00:04   #1
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
Злость Нарисовать,стереть,повернуть,отрази ть в паскале!

В задании предлагается определить классы и их иерархию (построить иерархию), а также продемонстрировать использование введенных конструкций при работе. Вершина, выпуклый четырехугольник, трапеция (нарисовать, стереть, закрасить, передвинуть, повернуть).
Строить иерархию это у меня прекрасно получается и если какие ошибочки именно в этом, не волнуйтесь я все поправлю, у меня снова проблема с рисованием. Помогите пожалуйста неудавшейся художнице. Смысл в том что сначало на экране должна появиться вершина, с заданными с клавиатуры координатами(ввод координат организовать могу и с клавы и в проге).Потом из этой вершины должен вырисовываться выпуклый четырехугольник, а потом по нажатию кнопки энтер допустим должно появиться повернутое изображение фигуры, потом как то его надо передвинуть,а потом закрасить, но самое интересное в слове стереть. просто убрать все изображение с экрана или какую то часть?сама не пойму. Все тоже самое должно проделаться и с трапецией,вершина которой одна из них должна совпасть с той первой вершиной. Изображать ли вершину точкой или еще как, пока не придумала. Может кто то сможет подсказать как нарисовать,пердвинуть,закрасить эти фигуры,буду очень признательна. Вот текст моей програмки, постепенно буду вносить в нее коррективы.

program ierarxia;
uses crt, graph;
type
verwina=object
x,y.cv:byte;
procedure init(xn,yn,cvn:byte);
procedure risuem;
procedure stirat;
procedure sdvig;

end;
procedure verwina.risuem;
{тут я нарисую точечку -вершину};
End;

procedure verwina.sdvig;
{не знаю как передвинуть};
End;
procedure verwina.stiraem;
{думаюнад этим};
End;

procedure verwina.init(xn,yn,cvn:byte);
begin

x:=xn;
y:=yn;
cv:=cvn;

end;


var verwinavar:verwina;
nx: integer;
ny: integer;
begin
with verwinavar do
begin
Write(' Vvedite koordinatu x: '); Readln(nx);
Write(' Vvedite koordinatu y: '); Readln(ny);
init(nx,ny,1);
risuem;
sdvig;
stirat;
end;
readkey;
end;

type vipmnog = object(verwina)
x2,y2,x3,y3,x4,y4:byte;
procedure init (xn,yn,cvn, x2,y2,x3,y3,x4,y4:byte);
procedure risuem;
procedure stirat;
procedure sdvig;
procedure povorot;
procedure zakrasit;
end;

procedure vipmnog.init
begin
verwina.init(xn,yn,cvn);
x2:=x2n;
y2:=y2n;
x3=x3n;
y3=x3n;
x4:=x4n;
y4:=x4n;
end;

procedure vipmnog.risuem;
const N:=4;
VAR X,Y, I :LongInt; GD,GM :Integer; Alfa :REAL;
begin
Repeat

ClrScr;

Alfa:=360/N;
GD:=DETECT; InitGraph(GD, GM, '');

X:=Round( R*Cos(1* ((Alfa*Pi)/180) ) +GetMaxX/2);
Y:=Round( R*Sin(1* ((Alfa*Pi)/180) ) +GetMaxY/2);
MoveTo(X, Y);
For I:=2 To N+1 DO
begin
X:=Round( R*Cos(I* ((Alfa*Pi)/180) ) +GetMaxX/2);
Y:=Round( R*Sin(I* ((Alfa*Pi)/180) ) +GetMaxY/2);
LineTo(X, Y);
end;

Readln;
CloseGraph;
Write(' CHTOBI VIYTI NAZHMITE ESC ...');
Until ReadKey=#27;
end;


procedure stirat;
procedure sdvig;
procedure povorot;
procedure zakrasit;

{не знаю как сделать}

var vipmnogvar: vipmnog;
begin
with vipmnogvar do
begin
init(x,y,1, x2,y2,x3,y3,x4,y4);
risuem;
sdvig;
povorot;
zakrasit;
stirat;
end;
readkey;
end;

type trapecia = object(vipmnog)
x5,y5,x6,y6,x7,y7:byte;
procedure init (xn,yn,cvn, x5,y5,x6,y6,x7,y7:byte);
procedure risuem;
procedure stirat;
procedure sdvig;
procedure povorot;
procedure zakrasit;
end;

procedure trapecia.init
begin
verwina.init(xn,yn,cvn);
x5:=x5n;
y5:=y5n;
x6=x6n;
y6=x6n;
x7:=x7n;
y7:=x7n;
end;

procedure trapecia.risuem;

procedure stirat;
procedure sdvig;
procedure povorot;
procedure zakrasit;

{не знаю как сделать}

var trapeciavar: trapecia;
begin
with trapecia var do
begin
init(x,y,1 x5,y5,x6,y6,x7,y7);
risuem;
sdvig;
povorot;
zakrasit;
stirat;
end;
readkey;
end;

отдельное спаисбо тем кто прочитал всю мою длинную писанину. Итог:не могу нарисовать трапецию, повернуть ее, закрасить,передвинуть и стереть. Четырехугольник тож не знаю как пердвинуть, ну думаю если кто-то знает принцип как закрашивать и перемешать, то по аналогу справлюсь.
Пока ремонтируют кукольный домик, живу на форуме.

Последний раз редактировалось Барби; 22.04.2008 в 14:02.
Барби вне форума Ответить с цитированием
Старый 22.04.2008, 17:02   #2
yourself
Пользователь
 
Аватар для yourself
 
Регистрация: 10.11.2007
Сообщений: 38
По умолчанию

Насколько я понимаю, это все должно быть выполнено в борланд паскале? Я точно не помню, как там с классами и объектами, потому все одним писом. Вот набросок рисования, стирания, сдвига, заливки и полного стирания трапеции. Как повернуть, не додумался пока.
Вложения
Тип файла: rar GEOMETRY.rar (423 байт, 30 просмотров)
yourself вне форума Ответить с цитированием
Старый 23.04.2008, 00:24   #3
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как повернуть изображение на 180 градусов? kl45gp Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 11.05.2013 13:10
Дана матрица размера M*N.Зеркально отразить ее элементы Ильдар ХАЛИКОВ Паскаль, Turbo Pascal, PascalABC.NET 6 09.04.2008 22:22
Как быстро переверннуть(отразить) изображение? Paul Hindenburg Мультимедиа в Delphi 2 10.01.2008 12:51
Стереть винчестер Veytarn Свободное общение 4 10.02.2007 10:12