Clone wiki

life-emulator / Home

# Описание репозитария

Репозитарий включает в себя 3 типа ветвей:

  • Ветвь webinar.номер вебинара - содержит исходный код проекта для каждого из вебинаров. Исправления ошибок после вебинара попадут в эту же ветвь.
  • Ветвь develop - содержит нестабильный исходный код проекта за пределами вебинаров. Код может содержать ошибки и работать неправильно.
  • Ветвь master - содержит стабильный исходный код проекта за пределами вебинаров.

Для скачивания исходого кода с использованием git необходимо использовать следующую команду:

git clone https://Hosh1kage@bitbucket.org/Hosh1kage/life-emulator.git

Репозитарий включает в себя 3 типа тегов:

  • Тег webinar.номер вебинара.v.год.месяц.день.часы.минуты для коммитов, относящихся к вебинарам.
  • Тег develop.v.год.месяц.день.часы.минуты для коммитов, не относящихся к вебинарам и содержащих нестабильным изменениям.
  • Тег master.v.год.месяц.день.часы.минуты для коммитов, не относящихся к вебинарам и содержащих стабильным изменениям.

Для скачивания исходного кода без использования git необходимо зайти в раздел Загрузки -> Теги, найти нужный тег в списке и нажать на нужный формат архива с исходным кодом.


# Постановка задачи №1

Разработать десктопное приложение, реализующее модель местности, для получения времени наступления момента недостаточности растительных ресурсов для выживания популяции людей (10 мужчин и 10 женщин по 30 лет).

  • Местность. Местность представляет из себя небольшой участок земли, окруженный с 3 сторон водой и имеющий один сухопутный путь на восток. На этой местности отсутствуют какие-либо живые существа, кроме людей и одного вида растений Apple. Погода на данной местности всегда благоприятная. Год здесь считается равным 300 дням, а месяц - 30 дням.
  • Энергия/Отдых. Каждый день человек тратит энергию: 1ед при стоянии на месте или приеме пищи, 2ед при перемещении по суше, 3ед при перемещении по воде и 4ед при зачатии и рождении ребенка. Для полного восполнения сил человеку необходимо спать в течение 1 дня. При этом нет никакой зависимости от текущего времени суток.
  • Сытость/Питание. Каждый день человек тратит сытость: 1ед при стоянии на месте или отдыхе, 2ед при перемещении по суше, 3ед при перемещении по воде и 4ед при зачатии и рождении ребенка. Люди могут питаться только плодами прорастающего здесь вида растения, при этом они не имеют навыков в земледелии для самостоятельного выращивания растительной пищи, а так же не склонны к каннибализму. Для полного насыщения человеку необходимо примерно 2 (в возрасте до 10 лет) или 4 (в возрасте более 10 лет) плода растения.
  • Размножение. При встрече с мужчиной женщина имеет возможность забеременеть с вероятностью 30%. Вынашивание ребенка происходит в течении 10 месяцев, при этом пол ребенка может с равной долей вероятности быть как мужским, так и женским.
  • Смерть. Средняя продолжительность жизни человека составляет 80 лет. Все люди миролюбивы и никогда не убивают своих сородичей, имеют иммунитет ко всем видам заболеваний и ядов, а так же высокий инстинкт самосохранения, поэтому смерть может наступить только естественным путем в случайный момент времени, при выходе за пределы местности (считается потерявшимся без вести) или при полном отсутствии энергии или сытости.
  • Растения. На начальном этапе на местности имеется только 20 деревьев. Среднее время роста каждого нового дерева составляет 1 день, при этом распространение деревьев происходит посредством случайного падения созревшего плода на соседние участки с вероятностью 1% в день (если плод упал в воду или на занятый участок, то он пропадает). Для полного созревания плодам необходим 1 день, а сами плоды появляются на деревьях в конце каждого месяца в количестве от 5 до 15 штук с равной долей вероятности. При этом на одном дереве не может быть одновременно более 63 плодов.

Приложение должно соответствовать следующим функциональным требованиям:

  • Структура пользовательского интерфейса должна соответствовать следующей схеме:

gui-mock.png

  • Область Map Info должна отображать основную статистику по местности.
  • Область Events Info должна содержать список всех важных событий.
  • Область Map должна визуализировать модель местности размером 65x65.
  • Область Map должна содержать следующие типы местности:
    • Глубокая и мелкая вода.
    • Низкая и высокая земля.
    • Низкая и высокая земля с травой.
  • Область Map должна быть заполнена в формате UCF и соответствовать исходным данным из файла test-data.dat (сериализованный двумерный массив 65x65).
  • Область Cell Info должна отображать содержимое выбранной на карте ячейки.
  • Область управления должна содержать следующий набор кнопок:
    • B1 - Пуск.
    • B2 - Пауза.
    • B3 - Стоп (сброс).

# Постановка задачи №2

TODO

Updated