# сдвинуть_снежинки() - сдвигает снежинки на один шаг # номера_достигших_низа_экрана() - выдает список номеров снежинок, которые вышли за границу экрана # удалить_снежинки(номера) - удаляет снежинки с номерами из списка # снежинки хранить в глобальных переменных модуля snowfall # # В текущем модуле реализовать главный цикл падения снежинок, # обращаясь ТОЛЬКО к функциям модуля snowfall print('Сколько снежинок хотите создать?') n = int(input()) create_snowflakes(n) while True: sd.start_drawing() draw_snowflakes(sd.background_color) move_snowflakes() draw_snowflakes(sd.COLOR_WHITE) sd.finish_drawing() list_for_removing = numbers_of_snowflakes_bottom() if len(list_for_removing) > 0: remove_snowflakes(list_for_removing) create_snowflakes(len(list_for_removing)) sd.sleep(0.01) if sd.user_want_exit():
# На основе кода из lesson_004/05_snowfall.py # сделать модуль snowfall.py в котором реализовать следующие функции # создать_снежинки(N) - создает N снежинок # нарисовать_снежинки_цветом(color) - отрисовывает все снежинки цветом color # сдвинуть_снежинки() - сдвигает снежинки на один шаг # номера_достигших_низа_экрана() - выдает список номеров снежинок, которые вышли за границу экрана # удалить_снежинки(номера) - удаляет снежинки с номерами из списка # снежинки хранить в глобальных переменных модуля snowfall # # В текущем модуле реализовать главный цикл падения снежинок, # обращаясь ТОЛЬКО к функциям модуля snowfall snowfall.snowflake_list_gen(N=30, min_branch_len=15, max_branch_len=30) while not sd.user_want_exit(): # нарисовать_снежинки_цветом(color=sd.background_color) snowfall.draw_snowflakes(color=sd.background_color) # сдвинуть_снежинки() snowfall.move_snowflakes() # нарисовать_снежинки_цветом(color) snowfall.draw_snowflakes(color=sd.COLOR_RED) fallen_snowflakes = snowfall.get_fallen_snowflakes() # если есть номера_достигших_низа_экрана() то # условие грамотно упростили. Молодец. if fallen_snowflakes: # удалить_снежинки(номера) snowfall.delete_snowflake(fallen_snowflakes) # создать_снежинки(count) snowfall.snowflake_list_gen(N=len(fallen_snowflakes), left_bottom=(0, sd.resolution[1])) sd.sleep(0.1)
# удалить_снежинки(номера) - удаляет снежинки с номерами из списка # # В текущем модуле реализовать главный цикл падения снежинок, # обращаясь ТОЛЬКО к функциям модуля snowfall from snowfall import create_snowflakes, clear_snowflakes, move_snowflakes, draw_snowflakes, fallen_snowflakes, \ remove_snowflakes, new_snowflakes N = 20 create_snowflakes(N) while True: sd.start_drawing() clear_snowflakes() move_snowflakes() draw_snowflakes() sd.finish_drawing() new_list = fallen_snowflakes() remove_snowflakes(new_list) new_snowflakes(new_list) sd.sleep(0.01) if sd.user_want_exit(): break sd.pause() # создать_снежинки(N) # нарисовать_снежинки_цветом(color=sd.background_color) # сдвинуть_снежинки() # нарисовать_снежинки_цветом(color) # если есть номера_достигших_низа_экрана() то
# удалить_снежинки(номера) - удаляет снежинки с номерами из списка # снежинки хранить в глобальных переменных модуля snowfall # # В текущем модуле реализовать главный цикл падения снежинок, # обращаясь ТОЛЬКО к функциям модуля snowfall create_snowflakes(45) color = sd.background_color color_1 = sd.COLOR_YELLOW while True: # нарисовать_снежинки_цветом(color=sd.background_color) # сдвинуть_снежинки() # нарисовать_снежинки_цветом(color) # если есть номера_достигших_низа_экрана() то # удалить_снежинки(номера) # создать_снежинки(count) sd.start_drawing() draw_snowflakes(color) move_snowflakes() draw_snowflakes(color_1) fallen_flakes = number_snowflakes() if fallen_flakes: delete_snowflakes(number=fallen_flakes) create_snowflakes(45) sd.finish_drawing() sd.sleep(0.05) if sd.user_want_exit(): break sd.pause() #зачёт!
# обращаясь ТОЛЬКО к функциям модуля snowfall N = 20 COLOR = sd.COLOR_WHITE # создать_снежинки(N) snowfall.generate_snowflakes(N) while True: # нарисовать_снежинки_цветом(color=sd.background_color) # кстати, сугроб в четвёртом уроке без синих артефактов (от снежинок цвета фона) можно получить, # если перед удалением упавших снежинок делать sd.draw_background, выводить только удаляемые снежинки # и делать sd.take_background. Продемонстрировал концепт в самом модуле snowfall. # Здесь же для ускорения работы можно обойтись однократным sd.take_background перед циклом # и sd.draw_background в начале каждой итерации вместо рисования снежинок цветом фона snowfall.draw_snowflakes(sd.background_color) # сдвинуть_снежинки() snowfall.move_snowflakes() # нарисовать_снежинки_цветом(color) snowfall.draw_snowflakes(COLOR) # если есть номера_достигших_низа_экрана() то offscreen_snowflakes = snowfall.get_offscreen_snowflakes() if offscreen_snowflakes: # удалить_снежинки(номера) snowfall.delete_offscreen_snowflakes(offscreen_snowflakes) # создать_снежинки(count) snowfall.generate_snowflakes(len(offscreen_snowflakes)) sd.sleep(0.1) if sd.user_want_exit(): break
import simple_draw as sd from snowfall import create_snowflakes, draw_snowflakes, delete_snowflakes, move_down, get_reached_bottom # На основе кода из lesson_004/05_snowfall.py # сделать модуль snowfall.py в котором реализовать следующие функции # создать_снежинки(N) - создает N снежинок # нарисовать_снежинки_цветом(color) - отрисовывает все снежинки цветом color # сдвинуть_снежинки() - сдвигает снежинки на один шаг # номера_достигших_низа_экрана() - выдает список номеров снежинок, которые вышли за границу экрана # удалить_снежинки(номера) - удаляет снежинки с номерами из списка # # В текущем модуле реализовать главный цикл падения снежинок, # обращаясь ТОЛЬКО к функциям модуля snowfall N = 50 create_snowflakes(N) while True: draw_snowflakes(color=sd.background_color) move_down() draw_snowflakes() reached_bottom = get_reached_bottom() if reached_bottom: count_reached_bottom = len(reached_bottom) delete_snowflakes(reached_bottom) create_snowflakes(count_reached_bottom) sd.sleep(0.3) if sd.user_want_exit(): break sd.pause()