Текущий архив: 2005.07.11;
Скачать: CL | DM;
Внизперемещение обектов Найти похожие ветки
← →
Lenka © (2005-06-07 01:26) [0]как можно создать в виде класса обект (например человеческая клетка), и обеспечить его перемещение?
← →
ORMADA © (2005-06-07 07:44) [1]1.
THumanCell=Class
XChromosome:string;
YChromosome:boolean;
ZSomeThing:integer;
end;
:)
2.
DragDrop юзать
← →
Skier © (2005-06-07 08:19) [2]>Lenka © (07.06.05 01:26)
Это перемещение уже сделано природой.
← →
Digitman © (2005-06-07 08:26) [3]
> как можно создать в виде класса обект
никак.
в программе можно объявить класс и создать экземпляр(ы) этого класса (иначе говоря - "объект(ы) такого-то класса")
← →
АлекейК (2005-06-07 10:32) [4]А куда перемещать собираемся?
← →
REA (2005-06-07 10:59) [5]THumanCell=Class
XChromosome:string;
YChromosome:boolean;
ZSomeThing:integer;
Public
Function Clone: THumanCell;
Procedure Mutate;
Procedure Defence(Attack: TVirus);
Procedure Repair;
end;
:)
← →
PVOzerski © (2005-06-07 11:48) [6]Вопрос сформулирован совершенно непонятно. Описать через методы и свойства можно много что, хоть клетку, хоть экосистему, хоть Вселенную. А перемещение - это о чем? По экрану некое графическое отображение объекта двигать? Или моделировать движение клетки по моделируемому пространству (совершенно необязательно визуально отображаемое)?
← →
TUser © (2005-06-07 12:10) [7]> ORMADA © (07.06.05 07:44) [1]
Да вы что - надо делать базовый, а свойства XChromosome и YChromosome вводить в наследниках, в вопросе-то не уточнено, какую именно клетку моделируем :)
← →
Ega23 © (2005-06-07 12:22) [8]в вопросе-то не уточнено, какую именно клетку моделируем :)
Давайте Сперматозоида с Яйцеклеткой моделировать?
← →
TUser © (2005-06-07 12:26) [9]> Давайте Сперматозоида с Яйцеклеткой моделировать?
А что - вопрос про человеческую клетку, не указано какую именно.
Вот только жаль - нет в Delphi множественного наследования, не всякий процесс удастся смоделировать :)
← →
Ega23 © (2005-06-07 12:27) [10]Вот только жаль - нет в Delphi множественного наследования, не всякий процесс удастся смоделировать :)
Фигня, надо будет - через интерфейсы зафигачим!
← →
Lenka © (2005-06-07 13:59) [11]да задание-то в принципе очень глупое, создать родительский класс Органела, потом через потомков смоделировать клетку и показать как она перемещается, питается, делится...
← →
Digitman © (2005-06-07 14:05) [12]
> Lenka © (07.06.05 13:59) [11]
> задание-то в принципе очень глупое
задание-то м.б. и "глупое", но вот решение ее в учебных целях оч даже не глупое, напротив - весьма эффективное и показательное, ибо задействует многие базовые принципы ООП, во многом облегчающие и делающие изящным решение такого рода задач
← →
Lenka © (2005-06-07 14:13) [13]
> Digitman
хихихи! но не в данное время, когда надо еще синтаксический анализатор за два дня написать!
← →
-=XP=- © (2005-06-07 14:21) [14]надо еще синтаксический анализатор за два дня написать
А что, задание только сегодня выдали? Что-то мне не верится.
Вы что, предлагаете Вам тут написать код под Ваше задание?
Вы даже не определили, что значит "перемещение" в контексте Вашего задания, хоть Вас об этом и справшивали.
Есть конкретные вопросы - спрашивайте.
← →
Ega23 © (2005-06-07 14:21) [15]но не в данное время, когда надо еще синтаксический анализатор за два дня написать!
Рецепт-то прост: в течении семестра надо заниматься, а не балду гонять.
← →
Digitman © (2005-06-07 14:25) [16]
> Lenka © (07.06.05 14:13) [13]
попрыгунья-стрекоза ?)
← →
Digitman © (2005-06-07 14:29) [17]
> надо еще синтаксический анализатор за два дня написать
боюсь, банан в кондуит тебе светит со страшной силой)
imho, ООП со своими классами, объектами и прочими "глупостями" - это еще "цветочки" по сравнению с "синтаксическим анализатором" ..
← →
TUser © (2005-06-07 14:47) [18]От анализируемого языка зависит. Для очень простого языка (а в учебном задании он имеет права быть очень простым) анализатор писАть - два часа работы. А вот клетку смоделировать - это задача для реальных перцев.
← →
Lenka © (2005-06-07 16:14) [19]
> -=XP=-
нет, код не нужен :) анализатор почти готов :)
а "перемещение" - чтоб по экрану ползала :)
> Ega23
хех) в течении семестра?.. остальное уже готово!
> Digitman
та ну, прорвемся! немного осталось :)
> TUser
это кому как.....делфи было дано на самостоятельное изучение недели две назад, и сразу такие проэкты. о каком учебном задании может идти речь?..а анализатор для восстановления таблицы истинности для 2-8 переменных для алебры Буля. с этим проблем уже нет :)
← →
Digitman © (2005-06-07 16:23) [20]
> Lenka © (07.06.05 16:14) [19]
> немного осталось
судя по "фундаментальности" твоего вопроса - да, немного : начать и кончить)
так в чем, собссно, проблема ?
← →
jack128 © (2005-06-07 16:36) [21]Lenka © (07.06.05 16:14) [19]
а анализатор для восстановления таблицы истинности для 2-8 переменных для алебры Буля
А.. Приснопамятный калькулятор "Серолицего", только для логических выражений... Это и за один день можно наваять..procedure TForm1.Timer1Timer(Sender: TObject);
begin
Button1.Left := Button1.Left + 1;
Button1.Top := Button1.Top + 1;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.Caption := "Клетка";
Button1.Top := 10;
Button1.Left := 10;
Timer1.Interval := 200;
end;
:-))
← →
Lenka © (2005-06-07 16:47) [22]
> Digitman
проблема в том, каким способом можно задать в классе графический объект. то есть если его рисовать на Canvas с помощью стандартных процедур, то проблем нет. но в том-то и дело, что задать это все необходимо, используя классы
← →
disider (2005-06-07 17:00) [23]Удалено модератором
← →
Просто Джо © (2005-06-07 17:03) [24]
> [22] Lenka © (07.06.05 16:47)
> то есть если его рисовать на Canvas с помощью стандартных
> процедур, то проблем нет. но в том-то и дело, что задать
> это все необходимо, используя классы
ну, так и сделай в этом классе метод Draw, который и будет рисовать объект "на канвасе". Например:
TCell = class
public
procedure Draw (ACanvas: TCanvas);
end;
implementation
procedure TCell.Draw (ACanvas: TCanvas);
begin
ACanvas.Ellipse (...);
// etc
end;
← →
Digitman © (2005-06-07 17:05) [25]
> то есть если его рисовать на Canvas с помощью стандартных
> процедур, то проблем нет
ну и рисуй на канве !
зачем изобретать велосипед, если есть готовые инструменты ?
> в том-то и дело, что задать это все необходимо, используя
> классы
в разделе interface опиши класс
THumanCell=Class(TControl)
....
public
procedure Draw;
end;
в разделе implrmentation реализуй его методы
procedure THumanCell.Draw; //отрисовка "клетки"
begin
.. здесь на какой-либо канве отрисовываешь свою клетку ..
end;
← →
-=XP=- © (2005-06-07 17:50) [26]Button1.Left := Button1.Left + 1;
Button1.Top := Button1.Top + 1;
Посмею предложить свой вариант ;)procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
Randomize;
for i := 0 to 20 do
CreateCellButton(Random(10) + 100, Random(10) + 100);
Timer1.Interval := 200;
end;
procedure TForm1.CreateCellButton(X, Y: integer);
begin
with TButton.Create(Self) do
begin
Parent := Self;
SetBounds(X, Y, 2, 2);
OnClick := OnButtonClick;
end;
end;
procedure TForm1.OnButtonClick(Sender: TObject);
var
Btn: TButton;
begin
if Sender is TButton then
begin
Btn := TButton(Sender);
CreateCellButton(Btn.Left, Btn.Top);
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
i: integer;
Btn: TButton;
L: integer;
T: integer;
const
SexAge = 18;
DeathAge = 70;
StepsPerYear = 10;
ClimaxAge = 50;
const
Step: integer = 0;
function PartnerPresent(Btn: TButton): boolean;
var
i: integer;
C: TControl;
begin
Result := false;
for i := 0 to ControlCount - 1 do
begin
C := Controls[i];
Result := (C <> Btn) and (C is TButton) and
(C.Left = Btn.Left) and (C.Top = Btn.Top) and
(C.Width >= SexAge);
if Result then Exit;
end;
end;
begin
for i := ControlCount - 1 downto 0 do
if (Controls[i] is TButton) then
begin
Btn := TButton(Controls[i]);
L := Btn.Left + Random(7) - 3;
T := Btn.Top + Random(7) - 3;
if L < 0 then L := 0;
if L + Btn.Width > Width then
L := Width - Btn.Width;
if T < 0 then T := 0;
if T + Btn.Height > Height then
T := Height - Btn.Height;
if Step mod StepsPerYear = 1 then
Btn.SetBounds(L, T, Btn.Width + 1, Btn.Height + 1)
else
Btn.SetBounds(L, T, Btn.Width, Btn.Height);
if (Btn.Width >= SexAge) and (Btn.Width < ClimaxAge) and PartnerPresent(Btn) then
CreateCellButton(Btn.Left, Btn.Top);
if (Btn.Width + Random(20) > DeathAge) then
Btn.Free;
end;
integer((@Step)^) := Step + 1;
end;
← →
TUser © (2005-06-07 18:30) [27]Проблема начинает проясняться. Я бы делал все эти классы наследниками от TGraphicControl. Ну а дальше - зависит от конкретной детализации задачи - что там должно двигаться как.
← →
-=XP=- © (2005-06-07 18:35) [28]Я бы делал все эти классы наследниками от TGraphicControl
И еще им "мир" нужен - от TWorld = class(TCustomControl) ;)
← →
Lenka © (2005-06-08 19:00) [29]всем огромнейшее спасибо, мне ваши советы действительно очень помогли! остался вопрос, каким образом можно сохранить изображение на канве в jpeg-файл?
← →
MacroDenS © (2005-06-08 19:13) [30]to Ega23 © (07.06.05 14:21) [15]
Рецепт-то прост: в течении семестра надо заниматься, а не балду гонять.
Так вот он по хлду и занимался етим вопросом весь семестр (в плане тепепатических догадок сперматозойд-яйцеклетка), а теперь вот модель нужно забацать... Еще погоди, месяцев церез 3-9 придется целую человеческую систему моделировать, учитывая при этом такие параметры, как: размер степендии, место жительство, одежка, еда и т.д и т.п.
← →
MacroDenS © (2005-06-08 19:15) [31]Сори не посмотрел на ник, тогда таже фраза но с обращением к девушке (плз без обид)
← →
Lenka © (2005-06-09 00:18) [32]
> MacroDenS
хм......
← →
ЮЮ © (2005-06-09 06:00) [33]>каким образом можно сохранить изображение на канве в jpeg-файл?
Нарисовать всё тоже самое на TBitmap.Canvas
TJPEGImage.Assign(TBitmap)
TJPEGImage.SaveToFile
← →
TUser © (2005-06-09 10:54) [34]> каким образом можно сохранить изображение на канве в jpeg-файл?
> Нарисовать всё тоже самое на TBitmap.Canvas
Можно в этот битмап скопировать - BitMap.Canvas.CopyRect, только перед этим битмапу Height и Width выставить.
← →
ORMADA © (2005-06-09 12:36) [35]2 -=XP=- реально прикольна получилось :)
← →
Antol (2005-06-11 16:19) [36]ORMADA
а можна увидеть, то прикольное, что у тебя получилось?
Страницы: 1 вся ветка
Текущий архив: 2005.07.11;
Скачать: CL | DM;
Память: 0.54 MB
Время: 0.042 c