![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#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. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 10.11.2007
Сообщений: 38
|
![]()
Насколько я понимаю, это все должно быть выполнено в борланд паскале? Я точно не помню, как там с классами и объектами, потому все одним писом. Вот набросок рисования, стирания, сдвига, заливки и полного стирания трапеции. Как повернуть, не додумался пока.
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 19.12.2007
Сообщений: 159
|
![]()
yourself, именно в борланд паскале мы и работаем. седня показала свои наброски преподавателю, он оценил мою работу (грустный замученный взгляд просящий о пощаде) и разрешил поворот не делать. Спасибо огромное, попробую присоеденить к моей программе и кину сюда что получилось, заодно если в каких то местах что то не так будет уточню.
![]()
Пока ремонтируют кукольный домик, живу на форуме.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как повернуть изображение на 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 |