Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.04.2011, 17:23
DooMsssDaY DooMsssDaY вне форума
Прохожий
 
Регистрация: 15.04.2011
Сообщения: 13
Репутация: 10
Радость Интересная задача на Canvas))

Доброго времени суток! У меня тут задачка есть на биологическую тематику.
Есть Хищники, Травоядные и Растения. Каждые из них живут определённое количество циклов, также по истечении определённого времени хищники поедают травоядных, травоядные растения, а растения поедают хищников+травоядных(для каждого типа своё количество циклов и количество съеденных особей). Ещё все они производят на свет себе подобных. Всё это задаётся пользователем(длительность жизни, нужное время для размножения, время поедания других существ и так далее). + Все они занимаю начальную территорию(что тоже надо первоначально задать), которую надо изобразить через Canvas(хищники - красные квадратики, травоядные - синие, и Растения - зелёные).
Т.е. зада ча состаит в том, чтобы после всех заданных параметрах пользователь нажимал на кнопру(оно нажатие - один цикл) и видел весь процесс доменирования тех или иных существ.(т.е. прошло несколько циклов- кого нибудь съели, и один квадратик убавился, и также с рождением. )
На мой взгляд довольно трудно всё это воспринять, но если кого нибудь заинтересует, прошу писать на Mail (DooM8781@mail.ru).
Ответить с цитированием
  #2  
Старый 25.04.2011, 17:30
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Где-то я видел таккую задачу.
В чем у тебя сложность?
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 25.04.2011, 18:02
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

очень на это похоже: Жизнь
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #4  
Старый 26.04.2011, 11:42
DooMsssDaY DooMsssDaY вне форума
Прохожий
 
Регистрация: 15.04.2011
Сообщения: 13
Репутация: 10
Радость

Не, на "жизнь" это точно не похоже. Здесь суть в том, что бы посмотреть что произойдёт через,примерно 10 циклов(нажатия кнопки 10 раз).
А сделать я не могу сам потому что я очень не дружу с массивами(((. Да там наверно ещё и денамический надо использовать.
Даа, то условие которое я написал, очень трудно для понимания, но я уже не знаю как более корректно объяснить. Но если что то более менее понятно, задавайте вопросы, отвечу.
Ответить с цитированием
  #5  
Старый 26.04.2011, 11:47
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

1. Сделай полное описание жизненных циклов объектов (растения, травоядные, хишники).
2. Сделай полное описание взаимодействий между объектами (растения, травоядные, хишники).
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #6  
Старый 26.04.2011, 19:50
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Там далеко все не так просто. Скажем вот примерно такой базовый класс Организм:
Код:
TOrganizm = class
   private
    fName: String; // Собственно что за тварь
    fSpeed: Integer; // Максимальная скорость ее передвижения по миру
    fOld: Integer; //Текущий возраст - задается в днях
    fStartReproduction: Integer; // Когда она это самое могет
    fFinishReproduction: Integer; // Когда она уже это самое не может и грустит
    fMaxOld: Integer; //Максимальный возраст после которого грабки отбрасывает
    fMaxChilds: Integer; //Сколько потомков может настругать когда могет это самое
   public
    property Name: String read fName write fName;
    property Speed: Integer read fSpeed write fSpeed default 0;
    property Old: Integer read fOld write fOld default 0;
    property StartReproduction: Integer read fStartReproduction write fStartReproduction;
    property FinishReproduction: Integer read fFinishReproduction write fFinishReproduction;
    property MaxOld: Integer read fMaxOld write fMaxOld;
    property MaxChilds: Integer read fMaxChilds write fMaxChilds;
  end;
и описание так будет:
Код:
 with TOrganizm.Create
 do begin
    Name := 'Трава';
    Speed := 0;
    StartReproduction := 10;
    FinishReproduction := 20;
    MaxOld := 40;
    MaxChilds := 20;
    end;
 with TOrganizm.Create
 do begin
    Name := 'Кролик';
    Speed := 3;
    StartReproduction := 90;
    FinishReproduction := 720;
    MaxOld := 900;
    MaxChilds := 6;
    end;
А вот как задать кто кого кушает и при каких обстоятельствах я что-то не соображу.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 26.04.2011 в 19:55.
Ответить с цитированием
  #7  
Старый 26.04.2011, 21:16
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Вот вот, данных маловато. А сама идея довольно интересная.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #8  
Старый 26.04.2011, 21:45
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Кто кого кушает - можно для каждого смотреть в N клеток вокруг, выбирать жертву (рандом) и соответственно производить нужные действия.
Например: хищник стоит на клетке (5;5), а на клетке (7,6) стоит травоядное. => хищник его видит и может съесть. Если не съел никого за M "ходов" - умер сам. Если лень считать точки, попадающие в окружность, можно "аппрокмимировать" повернутым на 45 градусов квадратом. А если совсем лень, то можно и не повернутым
Воспроизведение соответственно тоже, по заданному времени в соседней клетке появляется такой же.

потом можно добавить рандом, мол хищник не смог поймать травоядное, или травоядное подавилось растением. Еще можно например сделать чтобы если хищник съедает травоядного, то перемещается на его клетку. Или чтобы просто все периодически немного двигались, т.е. если существу из рандом(6) выпало счастливое число 0, то он на одну-две клетки куда-нибудь переезжает.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 26.04.2011 в 22:08.
Ответить с цитированием
  #9  
Старый 27.04.2011, 05:46
DooMsssDaY DooMsssDaY вне форума
Прохожий
 
Регистрация: 15.04.2011
Сообщения: 13
Репутация: 10
По умолчанию

Господа программисты, всё на много проще чем вы думаете.)) Графическое отображение проекта нужно только лишь для того, что бы следить за изменением количества Красных(хищников) Зелёных(растений) и синих(млекопитающих) квадратиков. Не важно есть ли кто рядом или нет, животное или растение в любом случае будет и умирать и размножаться.
Вот ВСЕ вводные данные:
Штук(Integer):
k1 - первоначальное количество Хищников.
k2 - первоначальное количество Млекопитающих.
k3 - первоначальное количество Растений.

В циклах(Integer)(цикл-одно нажатие кнопки):
x1 - Длительность жизни Хищников.
x2 - Длительность жизни Млекопитающих.
x3 - Длительность жизни Растений.

В штуках(real)(ведь может быть и 0.5 штук, т.е 1 съеденная особь за 2 цикла):
y1 - Хищники потребляют за один цикл млекопитающих.
y2 - Млекопитающие потребляют за один цикл Растений.
y3 - Растения потребляют за один цикл Хищников+млекопитающих.

В штуках(real):
z1 - Хищники за один цикл производят на свет себе подобных.
z2 - Млекопитающие производят за один цикл на свет себе подобных.
z3 - Растения производят за один цикл на свет себе подобных.

Вот вроде и всё что нужно. И надо создать процедуру выведения через Канвас красных зелёных и синих квадратиков.
Получается пользователь задаёт все эти данные, и при нажатиях на кнопку наблюдает за увеличением или уменьшением тех или иных видов существ.
Ещё раз приношу свои извинения за предыдущее непонятное изложение задачи.
Ответить с цитированием
  #10  
Старый 27.04.2011, 06:42
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 660
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Ряд вопросов:
1. Зачем тогда вообще рисовать цветные точки на поле, если расположение вообще не влияет на процесс? Может достаточно лейбла в капшене которого будет указано число особей на данный момент? Если нет - по какому принципу располагаются "точки" на поле?
2. Если есть некого? Все равно продолжаем размножаться и жить дальше?
3. А у кого приоритет выше? Кто кого первым съедает?
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #11  
Старый 27.04.2011, 11:42
DooMsssDaY DooMsssDaY вне форума
Прохожий
 
Регистрация: 15.04.2011
Сообщения: 13
Репутация: 10
По умолчанию

1. Дело в том, что надо обязательно в графическом виде изобразить, и именно через Канвас. я могу отобразить это в виде простой круговой диограммы, но её тоже нельзя. Расположение точек скорее всего должно быть так: Хищные с верхнего левого угла развиваются, Млекопитающие с левого нижнего, и Растения с центра правой стороны.

2. Да, на счёт этого я забыл упомянуть. Конечно же должны быть соответствующие последствия при нехватке еды.Уменьшение размножения и длительности жизни.

3. А вот на счёт этого я даже не думал... как здесь будет более менее логично сделать...
Ответить с цитированием
  #12  
Старый 27.04.2011, 11:47
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

А как они питаются если по углам сидят? Они же не достают друг друга. Или они перемещаются по полю в процессе жизненного цикла? А как перемещаются, если не секрет? А что за секрет, если не секрет?
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #13  
Старый 27.04.2011, 12:13
DooMsssDaY DooMsssDaY вне форума
Прохожий
 
Регистрация: 15.04.2011
Сообщения: 13
Репутация: 10
По умолчанию

Никакого секрета нет.)) В виде графики отображается только их количество и всё.)) больше от графики ничего не требуется(ну если не считать полного заполнения поля, но это врятли). Мы просто моделируем процесс. Что да как там происходит, пользователь должен представлять сам(в виде роликов или фотографий ). Нужно просто результаты расчётов вывести в какой нибудь скрытый лэйбл или эдит, и уже исходя из этих данных просто рисовать квадратики с помощью канваса
Ответить с цитированием
  #14  
Старый 27.04.2011, 12:33
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Нуууу... Так даже не интересно...

Хорошо, описывай по порядку что должен уметь каждый объект. И будем пробовать переводить это в код.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #15  
Старый 29.04.2011, 07:26
DooMsssDaY DooMsssDaY вне форума
Прохожий
 
Регистрация: 15.04.2011
Сообщения: 13
Репутация: 10
По умолчанию

Описать програмно? но зачем? Ведь каждый из них только рождается живёт и поедает... Может быть я чего не понимаю, но мне кажеться что это не имеет смысла.
А на счёт сложности... мне бы хотя бы к такой проге движок написать, да и изобразить всё это, а потом можно уже и усложнить. Хотя там наверно потом для усложнения придётся всю программу переделывать.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:57.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter