Прыгающий мячик

Создадим двигающийся мячик: Добавим отражение от стен. Для этого, после изменения координат добавим проверку на пересечение границы Запустите программу. Должна появится ошибка: Подумайте, что нужно сделать, чтобы исправить программу. Пока мячик летает «в невесомости». Добавим тяготение (притяжение к нижней части экрана). Для этого каждый кадр будем добавлять к скорости 1: Для того, чтобы мяк прыгал […]

Основы ООП (план)

Классы методы, свойства Наследование(?) Класс мячик Класс прыгающий мячик Много прыгающих мячиков Летающие мячики Фонтаны и т.д. Аналог agar.io ___ отдельными статьями: угадай пару (поставить перед PIL??) аэрохоккей на двоих (до ООП) Чужие (древний консольный вариант) Чужие (вид сверху с перемещениями) Сапер Пак-мен Бомбермен Тетрис

PIL

Для того, чтобы выводить изображения на Canvas, придется установить PIL (Python Image Library), точнее ее форк: pillow. Для установки выполните следующие действия: Если у вас windows: 1. Пуск-выполнить (или сочетание клавиш Win+R) 2. Напечатать cmd и нажать Enter (откроется консоль — черное окно с текстом. Или не черное, но все равно с текстом) 3. В […]

Выполнять, пока получается. Цикл while

Рисовать, пока не будет нарисован красный: 1. Рисовать, пока не будет нарисовано два красных 2. Рисовать, пока не будет нарисован красный и синий 3. Рисовать, пока не будет нарисован красный или синий 4. По щелчку создать в этом месте круг, который начинает двигаться в случайном направлении и двигается, пока не удариться 3 раза о любую […]

Ветвление, оператор if

Для того, чтобы получить анимацию, нужно несколько раз в секунду выводить новое изображение и удалять старое. Круг, который движется вправо: Сделаем так, чтобы круг остановился у правой границы: 1. Сделать круг, который движется от центра влево и останавливается у левой границы 2. Сделать круг, который движется от центра вверх и останавливается у верхней границы 3. […]

Делать определенное количество раз. Цикл for

Мы уже использовали ранее цикл for для повторения действий определенное количество раз, когда управляли Черепашкой. Воспользуемся им еще раз и порисуем. Начнем с одного круга в случайном месте и нарисуем его по щелчку мыши: 1. Нарисовать 20 кругов в случайных местах 2. Нарисовать 40 кругов в случайных местах случайного размера, случайного цвета 3. Нарисовать 20 […]

Работаем в Tkinter с клавиатурой

Для того, чтобы в Tkinter вызывать действия по нажатию клавиш (реагировать на клавиатуру), используется почти такой же bind, как и для реакции на мышь, только привязывать надо не к холсту (Canvas), а к главному окну (root): root.bind(‘<Key>’,keypress). По нажатию на любую клавишу круг двигается вправо: Чтобы с помощью клавиш управления курсором управлять кругом, нужно знать […]

Удаление всего, отдельного элемента, группы элементов

Рассмотрим удаление элементов на холсте. Для удаления будем использовать метод delete(): canv.delete(ALL) удаляет все объекты на холсте. Если нужно удалить не все, а только часть, то есть два пути: удалять по имени и удалять по тегу (метке) Удаление по имени позволит удалить только один объект. А удаление по метке — сколько угодно, в том числе […]

Работаем с мышью в Tkinter

Возьмем самый простой вариант создания окна и холста: С функциями (командами) вы уже знакомы, так что данный код не должен вызвать непонимание: Сначала создается функция click, которая рисует окружность, а потом эта функция вызывается. Теперь сделаем так, чтобы она вызывалась по щелчку мыши. Однажды мы это уже делали, но с Черепашкой. В Tkinter немного иначе. […]

Черепашка меняет скорость и отражается от стен

В прошлом уроке мы рассмотрели, как остановить Черепашку, когда она дошла до определенной границы. Теперь сделаем так, чтобы Черепашка разворачивалась, когда доходила до правой стороны экрана (x = 200) 1. Черепашка после запуска программы ползет влево и, достигнув координаты x = -200, разворачивается и начинает ползти вправо 2. Черепашка ползает влево-вправо, разворачиваясь на границах x […]

Черепашковый зоопарк. Несколько Черепашек сразу на одном экране

(черновик) Убрать, не делать. Несколько черепашек создать, и запустить Проверка расстояния одной черепашки от другой Хождение цепочкой (одна выбирает случайное направление, а другие идут за ней) Гонки Черепашек

Маршрут для Черепашки

(черновик) Щелкать мышью и запомнить координаты. Черепашке — ползти по ним. Когда закончатся — останавливаться Добавить несколько фигур: слоник, кот, дом, паутина

Черепашка принимает решения

В прошлый раз мы рассмотрели, как научить Черепашку начинать движение после щелчка мыши. Теперь научим ее останавливаться. Чтобы остановить движение Черепашки, нужно отменить вызов ontimer или обнулить скорость. Кроме того, нужно решить, когда останавливать Черепашку. Черепашка ползет вправо, начиная из точки с координатами (0,0). Остановим ее, когда она уползет вправо на 100. Для этого будем […]

Реакция Черепашки на нажатие клавиш

(черновик) Черепашка стоит, по нажатию на стрелки — ползет. … придумать дрифт и хватит нарисовать картинку с дорогой и положить на фон — погонять bgpic(‘bg.gif’) изображение

Реакция Черепашки на щелчки и перемещения мыши

Сделаем так, чтобы Черепашка начинала ползти после щелчка мыши: onscreenclick — указание выполнить команду после щелчка мышью на экране. Команда(функция), которая будет выполнена по щелчку, обязательно должна принять два значения: x,y — координаты щелчка. Передачу параметров в команду(функцию) мы разбирали, когда рисовали фигуры разного размера. Попробуйте изменить fd(100) на fd(1000) и fd(10). Что меняется? Однако, […]

34. Отвлечемся от списков. Простые задачи. Простые игры.

Предлагаю подумать и сделать несколько простых программ (игр). Для тренировки. Никаких подсказок давать не буду, попробуйте придумать и реализовать все сами, от начала и до конца. Разбирать эти задания будем позже. 1. Игра «Ним»: игроки по очереди берут спички из кучи. За один ход можно взять от одной до трех спичек. Выигрывает тот, кто взял […]

33. Решаем проблемы с двумерным списком

На прошлом уроке мы успешно погрузились в трудности, связанные с отображением ячеек двумерного списка. Надеюсь, вы дали себе достаточно времени подумать о проблеме. На самом деле, для ее решения нужно не так уж и много: убрать информацию о позиции ячейки из самой ячейки и передавать ее (r,c) в метод paint при каждой перерисовке. Я настоятельно […]

32. Неразрешимые трудности, дублирование информации, проблема

Продолжаем работать с двумерными списками (таблицами). В прошлом уроке была создана программа для удобной работы с таблицей ячеек: Рассмотрим некоторые задачи предыдущего урока. Отметить всех соседей можно по-разному, например так: Если выделять соседей не только по сторонам, но и по дагоналям, то лучше использовать два цикла: Обратите внимание, чтобы в обоих случаях мы берем и […]

31. Двумерные списки (массивы, матрицы) в Python

Прежде, чем мы сделаем игру «Сапер» и «Блоки» нужно научится работать с двумерными списками. Если просто, то двумерный список — это таблица. У каждой ячейки таблицы есть номер строки и номер столбца. Т.е. каждая ячейка имеет не один номер, как в обычном списке, а два: номер строки и номер столбца. Поэтому такие списки и называют […]

30. Разбор задач предыдущего урока (без новых заданий)

Рассмотрим некоторые задачи предыдушего урока. Не то, чтобы они были сильно важны для работы со списками, но не вижу причины, почему бы не сделать эти задачи сейчас. Перетаскивание шарика. Перетаскивать шарики можно разными способами. Например так: У этого способа есть один недостаток — шарики могут «теряться» при резком движении мыши. Что ж, зайдем с другой […]

29. Списки и геометрия, забавные задачи

Продолжим работать со списками. Теперь шарики не выстроены в ряд, а раскиданы по экрану. Добавим немного геометрии в наши задания. Некоторые задания просто забавны, другие же являются частью будущих игр. Задания выполнять в функции task, вызывать ее нажатием правой кнопки мыши на экране. Левая — очищает и создает новый список. Рассмотрим некоторые приемы, которые понадобятся […]

28. Продолжаем работать со списками

Продолжим работать со списками. На этот раз вернемся к рисованию «шариков» и работе с списком объектов. Задания выполнять в функции task, вызывать ее нажатием правой кнопки мыши на экране. Левая — очищает и создает новый список. 1. Посчитать количество синих 2. Найти общую площадь зеленых 3. Удалить красные 4. Удалить красные, если их граница синяя […]

27. Списки и еще раз списки в Python: отличия числового списка от списка объектов и приемы работы

Сегодня еще один урок, в котором будем работать со списками. Подготовим два списка, один из которых будет заполнен числами, а другой — объектами. Найдем самое большое значение. Начинающие всегда пытаются сравнивать соседние значения, чтобы найти самое большое. Но это тупиковый путь. Представьте что вы находитесь возле 1000 людей, которые стоят в ряд и на вид […]

26. Списки в Python. Несколько вопросов

Продолжаем работать со списками в Python. Прежде, чем двигаться дальше, подведем промежуточные итоги. Напомню, что числовые списки и списки, содержащие объекты различаются по своему «поведению». Когда вы используете перебор по значению, то не можете изменить элемент списка: В первом и втором случае мы видим одни и те же значения, потому что x += 1 повлияет […]

25. Работаем со списками в Python (удалять лучше с конца)

Продолжаем работать со списками. Разберем задания, которые (должны) были вызвать у вас трудности. Напомню, что в данный момент мы работаем с числовыми списками. Для создания списка, заполненного случайными значениями, удобно использовать такой прием: А теперь попробуем удалить все нули. Вариант с использованием count и remove мы рассматривать не будем, надеюсь с ним все понятно. Предположим, […]

24. Работа со списками в Python, часть вторая

В прошлом уроке мы создали список, содержащий объекты ball для отработки приемов работы со списками. В конце урока я дал задания по удалению элементов из списка. Эти задания должны были вызвать проблемы. Прежде, чем мы вернемся к шариками, нужно рассмотреть вариант попроще: список, состоящий из чисел. Этот урок будет полностью посвящен работе с числовым списком. […]