Kodomo

Пользователь

ДЗ 4

Дедлайн этого и следующих заданий – задание должно быть отправлено до начала следующего занятия.

Оценки.

  • Оценка за модуль выводится как среднее арифметическое оценок за блоки.
  • Оценка за блок выводится либо по итогам одной большой задачи, либо как среднее арифметическое оценок за занятия (если иное не оговорено специально). На экзамене будет возможность улучшить оценку за блок, решив задачу по его теме, либо можно оставить накопленную оценку на автомат
  • В пределах одного занятия оценка ставится как максимальная из оценок за задачи, заданные на занятии (если иное не оговорено специально).
  • Баллы, указанные в скобках после задачи – это максимальный балл, который можно получить за задачу. Тем не менее, я всегда рекомендую делать задачи последовательно – предшествующие задачи подготавливают почву и часть решения для следующих.

Критерии оценок:

  • 6 баллов и выше можно получить только если программа выполняет именно то, что требуется в задании
  • с решения может сниматься 1 или 2 балла за огрехи в оформлении, но это никогда не должно опускать оценку ниже 6 баллов
  • если решение не выполняет условия задания, то оно не может получить оценку выше 6 баллов
  • задачи на 6 баллов близко повторяют примеры, которые были на занятии. Жестких требований к оформлению кода в этом случае нет
  • задачи на 8 баллов требуют творчества или вдумчивости, но должны быть решаемы теми знаниями, которые вы приобрели на занятии без дополнительных источников
  • задачи на 10 баллов, как правило, требуют поиска материалов за пределами рассказанного

Критерии оформления решений на этот раз (будут уточняться с каждым заданием):

  • Во всех программах должны быть содержательные имена переменных
  • Во всех программах не должно быть строк длиннее 75 символов, а если такие строки возникли, часть таких строк нужно выносить в отдельные переменные или функции.
  • Функции должны сопровождаться docstring
  • Программа не должна содержать (в разумных пределах) дублирования кода
  1. (6 баллов) Сделайте графический редактор a'la перо. Программа создаёт холст, на котором можно рисовать, двигая курсором при зажатой кнопке мыши. При этом программа оставляет на экране наклонные линии фиксированной длины с центром под курсором.

  2. (8 баллов) Сделайте тренажёр для пушки. Программа создаёт холст, в левом-нижнем углу которого расположена пушка. (Для простоты её можно символоизировать кругом). По щелчку мыши пушка стреляет снарядом со скоростью, пропорциональной расстоянию от пушки до курсора мыши и с начальной скоростью, направленной на курсор мыши. Снаряд пролетает фиксированное время (скажем, 10 тактов) и исчезает. Программа сохраняет на экране целиком трассу снаряда. (То есть в точности то же, что и фонтанчики, только начальная скорость задана положением мыши). Напоминаю необходимые законы физики:

    • vx' = vx + ax * delta_t
    • vy' = vy + ay * delta_t
    • x' = x + vx' * delta_t
    • y' = y + vy' * delta_t
    • ax = 0
    • ay = 9.8 м/с^2
  3. (10 баллов) Аналогично задаче 2, но при этом на экране отображается в случайном месте мишень. Цель игрока – попасть в мишень. При попадании снаряда в мишень, она перекрашивается в другой цвет.

  4. (10 баллов) Напишите программу, которая примитивно рисует пушку (корпус в виде прямоугольника, башня в виде полукруга, дуло толстой линией фиксированной длины), которая водит дулом вслед за курсором, но никогда не опускает дуло ниже корпуса.

Для задач 3 и/или 4 вам потребуется отыскать документацию и разобраться в canvas.delete.