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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2009, 17:34   #1
NeXuLoN
 
Регистрация: 28.09.2009
Сообщений: 6
По умолчанию Работа с объектами

Помогите написать программу, объект «пульсирующая окружность» - потомок объекта точка.
Вот пытался сделать:

Код:
Procedure Point.Hide;
begin
SetColor(GetBkColor);
Circle(X, Y, R);
Visib := False
end;
Function Point.GetVis : Boolean;
begin
GetVis := Visib
end;
Procedure Point.ChangeColor (NewColor:Byte);
begin
Clr:=NewColor;
end;
Procedure Point.MoveTo (dX, dY : integer);
var Status : Boolean;
B, A : integer;
begin
Status := GetVis;
Hide;
A:=X+dX;
B:=Y+dY;
If A>639 Then X:= 639 else
if A<0 Then X:= 0 else x:=A;
if b>479 then y:=479 else
if b<0 then y:=0 else x:=b;
if status then show;
end;
Function point.GetX:integer;
begin
GetX:=X
end;
Function point.getY:integer;
begin
GetY:=Y
end;
var Gd, Gm:integer;
Ch:Char;
Pt:Point;
begin
Gd:=detect;
InitGraph(Gd,Gm,'');
Pt.Init(320,240,3);
Pt.Show;
Repeat Ch:=Readkey;
if Ch=#0 then begin
Ch:=Readkey;
Case Ch of
#72:Pt.MoveTo(0,-1);
#80:Pt.MoveTo(0,1);
#75:Pt.MoveTo(-1,0);
#77:Pt.MoveTo(1,0);
#59:if Pt.GetVis then Pt.Hide else Pt.Show;
end;end;
Until Ch=#13;
CloseGraph;
end.

Последний раз редактировалось Stilet; 03.12.2009 в 07:38.
NeXuLoN вне форума Ответить с цитированием
Старый 20.11.2009, 17:50   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

не вижу никаких вопросов.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 20.11.2009, 19:12   #3
NeXuLoN
 
Регистрация: 28.09.2009
Сообщений: 6
По умолчанию

Ну программа круг не выводит. Одни ошибки и я не знаю из за чего

Реально кто нибудь может помочь?

Последний раз редактировалось Stilet; 03.12.2009 в 07:38.
NeXuLoN вне форума Ответить с цитированием
Старый 21.11.2009, 16:19   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

какие ошибки?
код оформляем.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.11.2009, 07:21   #5
NeXuLoN
 
Регистрация: 28.09.2009
Сообщений: 6
По умолчанию

ошибка 131: " Header Does not match previous definition "

Код:
Program primer;
uses Graph,Crt;
type
point = object
X, Y:integer;
Clr : Byte;
Visib : Boolean;
Procedure Init (InitX, InitY: integer; InitColor:Byte);
Procedure Show;
Procedure Hide;
Procedure ChangeColor(NewColor : Byte);
Procedure MoveTo(DX, DY : integer);
Function GetX : integer;
Function GetY : integer;
Function GetVis : Boolean;
End;
Type
NEN = object(point)
R : Word;
Procedure Init(InitX, InitY, InitR:Word; InitC:Byte);
Procedure Show;
Procedure Hide;
end;

Procedure Point.Init (InitX, InitY: integer; InitR:Word; InitColor:Byte); {первая ошибка и не знаю как её исправить}
begin
R :=InitR
X :=InitX;
Y :=InitY;
Clr :=InitColor;
Visib :=False;
end;

Procedure Point.Show;
begin
SetColor(Clr);
Circle(X, Y, R);
Visib := True
end;
Procedure Point.Hide;
begin
SetColor(GetBkColor);
Circle(X, Y, R);
Visib := False
end;
Function Point.GetVis : Boolean;
begin
GetVis := Visib
end;
Procedure Point.ChangeColor (NewColor:Byte);
begin
Clr:=NewColor;
end;
Procedure Point.MoveTo (dX, dY : integer);
var Status : Boolean;
B, A : integer;
begin
Status := GetVis;
Hide;
A:=X+dX;
B:=Y+dY;
If A>639 Then X:= 639 else
if A<0 Then X:= 0 else x:=A;
if b>479 then y:=479 else
if b<0 then y:=0 else x:=b;
if status then show;
end;
Function point.GetX:integer;
begin
GetX:=X
end;
function point.getY:integer;
begin
GetY:=Y
end;
var Gd, Gm:integer;
Ch:Char;
Pt:Point;
begin
Gd:=detect;
InitGraph(Gd,Gm,'');
Pt.Init(320,240,3);
Pt.Show;
Repeat Ch:=Readkey;
if Ch=#0 then begin
Ch:=Readkey;
Case Ch of
#72:Pt.MoveTo(0,-1);
#80:Pt.MoveTo(0,1);
#75:Pt.MoveTo(-1,0);
#77:Pt.MoveTo(1,0);
#59:if Pt.GetVis then Pt.Hide else Pt.Show;
end;end;
Until Ch=#13;
CloseGraph;
End.

Последний раз редактировалось Stilet; 03.12.2009 в 07:39.
NeXuLoN вне форума Ответить с цитированием
Старый 03.12.2009, 01:55   #6
Murlokotan61
 
Регистрация: 21.06.2009
Сообщений: 6
По умолчанию

Для начала устранить сплошь и рядом отсутствие "точки с запятой".
Murlokotan61 вне форума Ответить с цитированием
Старый 03.12.2009, 07:45   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Procedure Point.Init (InitX, InitY: integer; InitR:Word; InitColor:Byte); {первая ошибка и не знаю как её исправить}
Посмотри внимательно как ты ее описал
вообще не рекомендую описывать заголовок процедур полностью в реализайии. Оставь только
Код:
Procedure Point.Init;
Второе:
У тебя в классе Point нет свойства R.
Ты его поставил в класс NEW (Ой как нехорошо ты назвал - это зарезервированное слово).
Или R перенеси в point или стратегию меняй.

Делай это а потом посмотрим.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с объектами Word в C++ Ладушка Общие вопросы C/C++ 3 22.09.2015 16:51
Работа с классами и объектами Shavminator Общие вопросы Delphi 7 18.12.2009 04:11
Работа с объектами Windows c0zak Помощь студентам 6 06.11.2009 14:05
работа с объектами (плиз, помогите разобраться) HoOpe Помощь студентам 2 11.03.2009 14:37
нужна помощь - работа с объектами и не только freemotivation Паскаль, Turbo Pascal, PascalABC.NET 6 22.11.2008 01:29