2019-20 учебный год. 8 "В" класс. Июньский кружок
2 июня
Где смотреть документацию: https://www.pygame.org/docs/
Материалы к уроку: Скачать все одним архивом,
или по-отдельности программы: первая,
вторая, третья,
и котики: cat_lies.jpg,
cat_moves.gif,
cat_sits.jpeg ,
spider.png .
А вот код, который был написан на уроке: код с урока
Домашнее задание:
- Уровень 1. Нарисовать правильный многоугольник.
- Уровень 2. На n-й секунде рисовать правильный n+2-угольник
- Уровень 3. Сделать кружочек, который изначально находится где-то и летит в рандомном направлении, сделать, чтобы он отскакивал от стен по всем правилам физики
- Уровень 4. Добавить в уровень 3 препятствия
- Уровень 5. Добавить в уровень 3 другие кружочки, которые тоже могут с ним сталкиваться
- Уровень 6. Написать что-то типа солнечной системы, чтобы можно было в ней выбрать изначально разные круглые объекты с разными массами, скоростями и направлениями, чтобы там работала гравитация, можно использовать Vector2d, встроенный в пайгейм
4 июня
Программа с занятия: snake.py
Шаблон для программ: Шаблон
Домашнее задание:
- Задание 1. Исправить баг с изменением направления (если змейка шла вверх и нажали "вниз", то она съест сама себя)
- Задание 2. Сделать вместо клеток ячейки с рамкой.
- Задание 3. Сделать, чтобы по секретной клавише перемещался (или добавлялся) фрукт или ускорялась змейка
- Задание 4. Написать мемори, тетрис или похожую по сложности игру.
На этом сайте много примеров простых игр, лучше посмотреть, как игра работает, и написать самому, особо в код не подглядывая.
https://inventwithpython.com/pygame/.
9 июня. Классы
Программы с занятия: student.py и fraction.py
Домашнее задание (присылать Ване Кабакову, 45kabakovis@ в корпоративной почте):
- 1. Закрепление основ: Написать класс ученика (Student) самостоятельно (не списывая из шпаргалки).
Реализовать поле имени, класса, пола(м/ж), init, str, и парочку функций типа upgrade (+1 к классу), downgrade(-1),
а потом написать метод change_for_delta(self, x), где x это количество классов на которое меняется человек.
Продумать и сделать так, чтобы человек не мог попасть в класс ниже 1 или выше 11.
- 2. Балуемся с Magic методами. Реализовать в классе Fraction (который мы писали на уроке) n новых непохожих magic методов.
n = 3 - crook, n = 5 - hitman, n = 10+ - Mafia boss
- 3. Пишем свой полноценный класс. Здесь понадобится ваша креативность. Задача: написать класс для любого объекта из реального мира. Сложность - на ваше усмотрение. Напишите класс для чего угодно, например это может быть класс для игры в 21. Вам необходимо написать класс карты, класс колоды и возможно класс игры. В общем, включите фантазию и напишите классный класс :)
- 4. Доп задание (легкое): сделать сокращение дроби с помощью gcd (НОД), то есть сделать метод, который из 3/9 получит 1/3.
- 5. Доп задания для тех, кому СОВСЕМ нечего делать: возвращаясь к первому заданию, реализуйте поле пола через Enum, главное нужно понять зачем он там и для чего Enum нужен.
11 июня
Программа с занятия: lesson.py
Домашнее задание (присылать Юлику, 45danielym@ в корпоративной почте):
- 1) Добавить, чтобы в классе Planet можно было выбрать цвет в ините.
- 2) Можно добавить картинки для планет
- 3) Сделать, чтобы планеты оставляли траекторию
- 3.5) Добавить ускорение/замедление юзером модели в целом
- 3.75) Добавить сферический управляемый объект, который притягивается так же, как и остальные, но к нему можно применять отдельную неизвестную науке силу
- 4) Сделать, чтобы было все время видно все планеты. pygame.Surface
- 5) Реализовать столкновения для планет.
16 июня. Пишем игру в 21
Программа с занятия: cards_new.py.
А еще ссылка на рисование карт с помощью символов.
18 июня
Программа с занятия: 2_minutes_2.py
Картинки: power_up.png и spaceship.png
20 июня. Взаимодействие по сети
Сервер и клиент: server.py и client.py
Скрипт рисования рожиц: script.py