Модуль: Сюжетное рисование


5. Функции с параметрами

☰ Теория

В предыдущей задаче мы разбили программу на функции. Но настоящая польза от функций получается тогда, когда  функции принимают параметры.

Вот так может выглядеть функция рисования облака.

def draw_cloud():
    filled_circle("white", (300, 100), 30)
    filled_circle("white", (320, 80), 30)
    filled_circle("white", (340, 100), 30)
    filled_circle("white", (160, 100), 30)

Создадим функцию, которая рисует облако где угодно.

Облако состоит из четырех кругов. Обозначим центр первой окружности за (x,y).
Тогда центры остальных окружностей будут
(x + 20, y - 20), (x + 40, y) и (x + 60, y)



(Облако здесь мы нарисовали линиями, а центры - желтыми окружностями) 

Теперь можно переписать функцию рисования облака. Пусть она принимает x и y и рисует облако по этим координатам.

def draw_cloud(x, y):
    filled_circle("white", (x, y), 30)
    filled_circle("white", (x + 20, y - 20), 30)
    filled_circle("white", (x + 40, y), 30)
    filled_circle("white", (x + 60, y), 30)

Теперь мы можем одной строчкой нарисовать еще  одно облако. Нарисуем в функции draw_sky() целых три:

def draw_sky(): 
    filled_circle("yellow", (700, 100), 70, 0)
    draw_cloud(300, 100)
    draw_cloud(400, 150)
    draw_cloud(600, 120)           

Но и это еще не все. Можно например, передавать облаку цвет, и тогда рисовать серые дождевые облака, или розовые, закатные.

def draw_cloud(x, y, color):
    filled_circle(color, (x, y), 30, 0)
    filled_circle(color, (x + 20, y - 20), 30)
    filled_circle(color, (x + 40, y), 30)
    filled_circle(color, (x + 60, y), 30)

Кстати, если облака нам нужны чаще всего белые, то можно использовать значения по умолчанию.

Если мы напишем заголовок функции так:

def draw_cloud(x, y, color="white"):
   #...

То сможем вызывать функцию  и с параметром цвета и без него:

draw_cloud(100, 100)  # так рисуем белое облако
draw_cloud(130, 130, "gray") # а вот так серую тучу 

Напишите программу, которая рисует ваш собственный рисунок. Естественно, нужно использовать функции. Некоторые из них, конечно, должны принимать параметры. Тщательно продумайте какие параметры стоит принимать каждой функции. Например, лицо человека, то есть функция draw_face() может принимать цвет глаз, но вряд ли нужно передавать ей цвет каждого глаза по-отдельности.

Помните, что этот рисунок может стать мультфильмом, некоторые персонажи оживут. Например, если вы рисуете машину, думайте о том, что она потом поедет по экрану, то есть не стоит ее рисовать во весь экран.  

В качестве ответа на задание прикрепите py-файл и скриншот работы программы.


Ваш ответ Для проверки решения задачи необходимо зарегистрироваться или авторизоваться!

Последний прикрепленный файл:
Редактор ввода ответа

Выберите правильный ответ, либо введите его в поле ввода

Комментарий учителя