Спецкурс |
|
|||||
Основная информация | ||||||
№ | Пункт | Содержание | ||||
1 | Направление | Третий Путь | ||||
2 | Класс | 9 - 11 | ||||
3 | Тип курса | зачётный только для 9-11-ти классников | ||||
4 | Преподаватели | Кузнецов Дмитрий | ||||
5 | Стажёры | Нет | ||||
6 | Время проведения | Среда 18:55 - 20:15 | ||||
7 | Цель курса | Развить у школьников навыки алгоритмизации и программирования путём создания двухмерных компьютерных игр | ||||
8 | Задачи курса | 1. Освоение методов программирования на языке Python 2. Изучение логического устройства различных настольных и компьютерных игр 3. Освоение библиотеки pygame и методов реализации игровых алгоритмов |
||||
9 | Особенности курса | Курс обучает многим аспектам программирования, которых нет в школьных курсах. Мы проходим основы написания кода быстрее, фокусируясь на практическом применении сложных вещей в интересном формате — создании компьютерных игр. | ||||
10 | Формат проведения занятия (включая использование classroom) | Занятия по Python проводятся в формате семинара. Большинство других занятий проводится в виде интерактивной лекции, где ученики получают баллы за участие в обсуждении темы. | ||||
11 | Целевая аудитория | Школьники, заинтересованные в программировании и желающие научиться понимать сложные концепции разработки игр. | ||||
12 | Краткое описание курса | Курс программирования начального уровня по созданию двухмерных компьютерных игр от шахмат до симуляторов на языке Python. | ||||
13 | Количество слушателей | до 10 человек | ||||
14 | Отбор | На первой паре будет проведена контрольная работа, включающая в себя математические и логические задачи, а также диагностический тест на определение навыка программирования, если он есть. Отбор будет произведён по результатам контрольной работы. | ||||
15 | Формы контроля и система отчётности |
В обоих семестрах: Посещаемость: 15% Работа на семинаре: 20% Домашние задания: 25% Проект: 40% Проект первого полугодия представляет собой игру-симулятор эволюции. Программист задаёт начальные условия и условия для перехода на следующее поколение, наблюдая за результатом. После занятия 08.12 будет проведена предварительная оценка работы. Защита проектов происходит на занятии 15.12, пересдача — на занятии 22.12. Проект второго полугодия предполагает написание полноценной двухмерной игры. Критерии полноценной игры: наличие физики (скорость, ускорение и гравитация объектов), определение столкновений объектов, наличие готового игрового уровня (уровней) или редактора уровней, управление персонажем или игрой при помощи клавиатуры и мыши, явные условия победы и/или повышения ступени прогресса в игре, наличие главного меню, из которого можно запустить игровой процесс. После занятия 06.04 будет проведена предварительная оценка работы. Для 11-классников защита проектов происходит на занятии 20.04, пересдача — на занятии 27.04. Для 9-10-классников защита проектов происходит на занятии 27.04, пересдача — на занятии 04.05. |
||||
16 | Формат курса: онлайн/оффлайн/гибрид. План действий в случае всеобщего дистанта | Курс проводится офлайн. В первый месяц, ровно как и при объявлении локдауна, учащиеся будут подключаться к занятию в Discord и работать с языком программирования на своих домашних компьютерах. | ||||
20 | Дополнительная информация о курсе | На компьютерах ЭФ для программирования будет использоваться
онлайн-компилятор repl.it, позволяющий работать с pygame, а также
онлайн-приложение Discord для доступа к лекциям. Для занятий в режиме онлайн, а также выполнения домашних заданий требуется домашний компьютер с 4 ГБ оперативной памяти и набор программ для использования языка Python. В течение первой недели занятий учащиеся должны установить Python 3.7 или выше и IDE PyCharm 2021.2 или выше. Допускается возможность использования онлайн-компилятора repl.it вместо вышеуказанных программ, в таком случае объём оперативной памяти не имеет значения. Необходимые инструкции для установки будут выложены в группе курса ВКонтакте и в Discord. |
||||
Позанятийный план | ||||||
№ занятия | Дата (Среда) | Тематический блок | План занятия | |||
1 | 06.10.2021 | Введение | Знакомство с учениками. Вступительный тест для определения уровня навыков учащихся. Обсуждение планов курса и демонстрация примеров игровых приложений. Установка программ. | |||
2 | 13.10.2021 | Основы Python | Начало знакомства с языком Python. Настройка среды для работы с Python. Переменные, оператор присваивания, математические и логические операторы, циклы. | |||
3 | 20.10.2021 | Основы Python | Продолжаем знакомиться с языком Python. Кортежи, массивы, словари, множества. | |||
4 | 27.10.2021 | Основы Python | Осваиваем более сложные понятия Python. Классы, атрибуты, функции. Библиотеки os, math, random, time. | |||
5 | 03.11.2021 | Основы Python | Укрепляем знания о Python. Системы координат. Практикум по решению школьных задач с помощью полученных знаний. | |||
6 | 10.11.2021 | Основы pygame | Введение в pygame. Шаблон проекта. Основные понятия. События клавиатуры и мыши. Рендер простой геометрии и шрифтов. Создаём крестики-нолики и простой графический редактор. | |||
7 | 17.11.2021 | Основы pygame | Учимся искать картинки в интернете. Обработка изображений. Рендер графики. Дорабатываем крестики-нолики при помощи полученных знаний. | |||
8 | 24.11.2021 | Разработка алгоритмов | Делаем тетрис. Игровое поле, создание объектов для фигур, поведение фигур, условия победы или поражения. Начало работы над проектами «Клеточный автомат» или «Чашка Петри» | |||
9 | 01.12.2021 | Разработка алгоритмов | Разработка шахмат. Более сложное поведение фигур. Просчитывание компьютером возможных ходов. Игра вдвоём на одном компьютере. | |||
10 | 08.12.2021 | Базы данных | Что делать с сохранениями и настройками? На помощь приходит SQL! Осваиваем работу с базами данных: таблицы, запросы, создание, изменение и удаление ячеек. Дорабатываем тетрис и шахматы. | |||
11 | 15.12.2021 | Защита проектов | Защита проектов «Клеточный автомат» или «Чашка Петри» | |||
12 | 22.12.2021 | Чаепитие | Пересдача и чаепитие. | |||
29.12.2021 | ||||||
05.01.2022 | ||||||
12.01.2022 | ||||||
13 | 19.01.2022 | Python | Математика. Решение школьных задач при помощи Python. Построение графиков при помощи mathplotlib. Шифрование математических выражений и уравнений в строки. | |||
14 | 26.01.2022 | Алгоритмы и игры | Карточная игра Fluxx. Игра для нескольких игроков. Разработка простых игровых механик: несколько типов карт, динамические правила и условия победы. | |||
15 | 02.02.2022 | Алгоритмы и игры | Алгоритмы поиска пути. Создание генератора уровней. Применение алгоритма Дейкстры для прохождения лабиринтов. | |||
16 | 09.02.2022 | Графика и рендеринг | Вид сбоку или вид сверху? А может, изометрия? Квадраты или хексы? Графический дизайн 2D-игр. Виды графики в двухмерных играх. Движение камеры. | |||
17 | 16.02.2022 | Алгоритмы и игры | Разделение проекта на файлы. Создание юнитов и предметов. Написание класса с собственными свойствами. Библиотека ast и сохранение в файлы данных. | |||
18 | 23.02.2022 | Алгоритмы и игры | Пишем физический движок. Обработка столкновений. Скорость и ускорение объектов, игровые тики. Снаряды. | |||
19 | 02.03.2022 | Графика и рендеринг | Анимация персонажей. Смена анимаций. Добавление звука и музыки. | |||
09.03.2022 | ||||||
20 | 16.03.2022 | Графика и рендеринг | Графический интерфейс. Кнопки. Диалоговые окна. Начало работы над проектами. | |||
21 | 23.03.2022 | Алгоритмы и игры | Способности и модификаторы юнитов. Библиотека Numba для ускорения работы игры. | |||
22 | 30.03.2022 | Алгоритмы и игры | Физический движок pymunk и его особенности. Создание небольшой физической симуляции. | |||
23 | 06.04.2022 | Системный дизайн | Лекция об особенностях игровых жанров: пошаговая стратегия и стратегия в реальном времени. Игровая экономика и баланс. | |||
24 | 13.04.2022 | Системный дизайн | Лекция об особенностях игровых жанров: аркадный шутер, гонки, tower defense. Дизайн уровней и юнитов. | |||
25 | 20.04.2022 | Защита проектов | Защита проектов по созданию прототипа полноценной игры. | |||
26 | 27.04.2022 | Продолжение следует… | Пересдача для 11-классников и защита оставшихся проектов. Лекция об устройстве трёхмерной графики и современных движков. Эффект «Рыбьего глаза». Модели и материалы. | |||
27 | 04.05.2022 | Чаепитие | Пересдача и чаепитие. | |||
11.05.2022 | ||||||
18.05.2022 | ||||||
25.05.2022 | ||||||
01.06.2022 | ||||||
08.06.2022 | ||||||
15.06.2022 | ||||||
22.06.2022 | ||||||
29.06.2022 | ||||||
Список литературы | ||||||
1 | Лучано Рамальо. «Python. К вершинам мастерства» | |||||
2 | Tynan Sylvester. «Designing Games. A guide to engineering experiences» | |||||
3 | Документация Python. // Интернет-источник: https://pydocs.ru/ | |||||
4 | Документация pygame. // Интернет-источник: https://www.pygame.org/docs/ | |||||
5 | Pygame. Введение в разработку игр на Python. // https://younglinux.info/pygame/pygame | |||||
6 | Как создаются изометрические миры // https://habr.com/ru/post/332922/ | |||||
7 | Примеры игр, созданных на pygame // https://itch.io/games/made-with-pygame | |||||
8 | Простое объяснение алгоритмов поиска пути и A* // https://habr.com/ru/post/444828/ |