Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
11-13, 15. Дополнительные проекты Windows Forms.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
86.77 Кб
Скачать

Проект "Рисовалка"

На странице 123 учебника описана неплохая программа "Карандаш". Предлагается расширить навыки программирования, научившись графическому выводу. Детям расскажи о двумерной графике и сообщи, что сегодня вы начнете ею заниматься. Если дети спросят о трехмерной, ответь, что это сложно, и для ее использования нужны специальные программы (например, Unity + Blender). "Кстати, у нас в компании есть специальные курсы по этим дисциплинам! Ты можешь записаться, если тебе интересно!"

В отличие от остальных, цель этого проекта - не "развлечь" детей, попутно изучая платформу .Net, а развить их абстрактное мышление, показать необходимость его применения в процессе программирования. Тебе нужно будет на практических примерах объяснить, что такое относительное положение и относительный размер. Тренироваться вы будете на простеньком рисунке танка "вид сбоку":

Если кто-то придумает себе другой рисунок - ничего страшного! Можно использовать любой. Далее будет рассмотрен пример приложения, рисующего танк из примера, но его легко будет применить к любому другому изображению.

Итак, этапы разработки:

  1. Учебник, страница 123, приложение "Карандаш". В учебнике оно описано достаточно подробно, поэтому останавливаться на этом не будем. Отметим только, что этот случай - единственное исключение из правила про домашние задания. Если на предыдущем занятии вы завершили очередной проект полностью, то этот этап можно задать на дом. Он несложен, и к нему есть конкретные указания по сборке, имеющиеся у всех учеников. Но при проверке выполненного обязательно поясни все моменты - дети вряд ли самостоятельно разберутся даже в половине информации!

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

  3. Создайте новый проект, назовите его "Drawer" ("Рисовалка"). Подключите событие Paint формы, рассмотрите объект e.Graphics в нем. Расскажи, для чего он нужен, рассмотрите его методы (в основном группы Draw и Fill). Поясни, чем отличаются пункты друг от друга, расскажи про начало координат (оно в левом верхнем углу формы) и оси (Х, как обычно, растет вправо, а У - вниз!). Спроси у ребят, что нужно знать, чтобы нарисовать линию (ответ: точки-концы и цвет). Нарисуйте какую-нибудь линию на форме, подвигайте ее туда-сюда (например, сначала сделайте ее диагональной в одном направлении, затем в другом). После того нарисуйте танк (если будут затруднения, выдай конкретные размеры - их несложно придумать глядя на рисунок). Но на этом этапе внимательно следи за состоянием группы. Не стоит развивать этот проект дальше, если на лицах ребят будет явное отвращение или непонимание!

  4. Попроси всех ребят сдвинуть танк так, чтобы ограничивающий его прямоугольник был расположен в точке (50, 50). Затем - в (100, 100). Обсуди с ребятами сложность этого преобразования. Спроси, сколько чисел им придется менять. Поразмышляйте, сколько кода нужно, чтобы уметь разместить танк в любом месте (а ведь даже самая захудалая игра умеет это!). Попроси группу предложить что-нибудь, обсудите вместе поступающие предложения. Если верного ответа не будет, расскажи детям про относительные координаты. Напишите метод DrawTank(Point Location)

  5. Теперь нужно добавить изменение размера танка. Попроси их увеличить танк вдвое, затем уменьшить вчетверо. Используя тот же подход, что и на этапе 4, расскажи про относительные размеры. Напишите метод DrawTank(Point Location, Size sz)

  6. Вы восхитительны! (Имеется в виду "Похвали ребят!")