Помощь - Поиск - Пользователи - Календарь
Полная версия: Классы
Форум «Всё о Паскале» > Pascal, Object Pascal > Написание игр
Klose
Вобщем хочу в игре нечто типа законов физики. Создал главный класс и от него породил потомков. Примерно так:

type Main=class
private
F, m, g:single;//F-сила тяжести, m- масса, g-постоянная,

constructor Init;
procedure Process;
procedure Draw;

end;

Если я где-нибудь в главном классе пропишу, что F:=m*g, это будет считаться для потомков?
И если да, то для каждого потомка будет находится своя F (m у всех потомков разная) ?

P.S. Может не четко задал вопрос. smile.gif
volvo
Цитата
Если я где-нибудь в главном классе пропишу, что F:=m*g, это будет считаться для потомков?
Не совсем... Главный класс, по большому счету, вообще ничего не знает про потомков... Чтобы он узнал - надо использовать виртуальные функции...

Ты бы хотя бы 2-3 потомка показал, и заодно способ, которым ты хочешь использовать (и вычислять) эту самую F ...
volvo
Хотя, можно сделать проще:
type
TMain=object
private
m, g:single;

public
constructor Init(mass: single);
function F: single;
end;


TSecond = object(TMain)
public
constructor Init(mass: single);
end;

constructor TMain.init(mass: single);
begin
m := mass; g := 9.8;
end;
function TMain.F: single;
begin
result := m * g;
end;

constructor TSecond.init(mass: single);
begin
inherited init(mass);
end;


var
_one: TMain;
_two: TSecond;

begin
_one.init(14);
_two.init(25);
writeln(_one.F():10:4);
writeln(_two.F():10:4);
end.

Прогони и посмотри, ЧТО считается ...
Klose
Про виртуал забыл написать.
Пока у меня один потомок. И дальнейшее представляю смутно.

type TVova=class(Main)
Speed:Single;
UpDown:byte;

constructor Init;
procedure Process;override;
procedure Draw;override;
end;

constructor Init;
begin //если я в конструкторе главного запишу F:=g*m, то здесь уже будет само считаться?
g:=9.8;
m:=3000;
end;

Я без классов-то уже все делал, но так я сам в коде теряюсь и тяже что-либо найти.=)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.