-
МЕХАНИКА ДВИЖЕНИЯ (MOVE, EJECT, SPLIT) а) Хранить текущую точку-направление (direction-point) движения в классе Client.Cell б) Добавить поле, kindOfCell в поле класса Client.Cell (данное поле определяет то, откуда нужно брать следующую direction-point и имеет 3 возможных значения: usual (для обычных клеток нашего игрока), ejected (для ejectedMass), splitted (для клеток которые только что раскололись) в) Сначала (avgX, avgY) изменяют свои координаты в сторону (mouseX, mouseY). Затем клетки которые имеют значение kindOfCell="usual" изменяют свои координаты в сторону (avgX, avgY). г) Direction-point клеток с kindOfCell="ejected" инициализируется один раз (при ejectMass) и больше не изменяется (то есть ejectedMass будет двигаться до этой точки и в ней остановится). д) Direction-point клеток с kindOfCell="splitted" ведут себя как "ejected" пока не попадут в свою direction-point, после этого их kindOfCell становится равным "usual". Возможно для клеток типа «splitted» нужно будет использовать повышенный SPEED SCALE FACTOR.
-
ДОРАБОТКА СЪЕДАНИЯ ЕДЫ а) Все Cells являются едой, если они не вирусы (Client.Cell.virus != true) б) Опционально: В класс Client.Cell добавляется поле z, которое указывает приоритет во время отрисовки клетки. По умоляанию z = 1, при соприкосновении 2-ух клеток клетке с меньшей массой присваивается z = 0.
-
МЕХАНИКА ВЗАИМОДЕЙСТВИЯ С ВИРУСАМИ а) При столкновении клетки с большим вирусом ничего не происходит, при столкновении с меньшим вирусом выполняется команда Split.
-
ПОРЯДОК ОТРИСОВКИ ОБЪЕКТОВ: а) еда (Food) б) клетки (Сell.virus == false) в порядке возрастании массы в случае отсутствия в программе поля Client.Cell.z или сначала клетки с z = 0, если поле Client.Cell.z присутствует. в) вирусы
-
ПОДСЧЕТ SCORES и ДОБАВЛЕНИЕ В LEADERBOARD (если это ещё не реализовано) считается ли EjectedMass всё ещё частью игрока?
-
ГЕНЕРАЦИЯ ВИРУСОВ И ЕДЫ а) Еда генерируется каждую единицу времени по tick(). Метод tick() отправляет FoodGenerationMsg в MessageSystem, где все messages последовательно выполняются (это возможно поможет избежать проблем многопоточности при работе с Food). Если messages выполняются не последовательно, это нужно реализовать. Возможно tick() можно вызывать в Mechanics, может это будет отдельный поток. б) Новый вирус генерируется тогда, когда какой-то вирус исчезает.
ARTmanq/RK3
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|