Задание: реализовать классическую игру “Змейка”.

Описание игры: есть клетчатое поле, по которому ползает Змейка. В одной из клеток появляется Мухомор (зеленый Мухомор). Когда Змейка наползает головой на Мухомор - длина Змейки увеличивается на одну клетку, и на поле появляется новый Мухомор. Если Змейка наползает на свой хвост или выходит за пределы поля - игра останавливается.

Пример того, как это может выглядеть:

Snake screenshot

Вся задача будет разбита на несколько частей:

  1. сдать до 21 января [условие] Реализация классов, описывающих объекты этого мира (Змейка, Сама Вселенная и т.п.)
  2. сдать до 28 января [условие] Визуализация состояния мира (отрисовка Змейки и Мухомора в окошке)
  3. сдать до 4 февраля [условие] Логика мира (Змейка ползет во времени и пространстве, ею можно управлять)
  4. (добровольное) Собственные идеи развития игры, например:
    • Добавить счет, выводить его в консоли или в окне
    • Каждый Мухомор ускоряет движение Змейки
    • Мухомор появляется случайного цвета, когда Змейка кушает этот Мухомор - она меняет свой цвет на цвет Мухомора, цвет мира при этом меняется на случайный
    • Усли длина Змейки больше половины площади поля - цвет мира имеет шанс стать такого же цвета как и съеденный Мухомор (и соответственно - как и цвет Змейки)
    • Добавить Единорогов
    • Добавить препятствия (для Змейки они как границы поля, а Единороги через них могут перепрыгивать)
    • При выходе за пределы поля голова Змейки появлалась с другой стороны поля (тороидальное поле)
    • Сделать поле бесконечным, при этом стены генерируются случайно по мере продвижения (а Мухомор в пределах видимости)
    • Рисовать голову Змейки с учетом ее текущего направления движения (не квадратом, а стрелочкой например)
    • Рисовать Мухомор не квадратом
    • Рисовать хвост Змейки симпатично, а углы ее тела - закругленными

Общая архитектура выглядит примерно так:

Diagram photo