def main(): points = [Point(x=230, y=450), Point(x=240, y=460), Point(x=230, y=470), Point(x=240, y=480)] polygon(point_list=points) points2 = [Point(p.x + 20, p.y + 20) for p in points] lines(point_list=points2, color=COLOR_DARK_ORANGE) line(start_point=Point(x=20, y=20), end_point=Point(x=40, y=300)) square(left_bottom=Point(400, 300, ), side=100) rectangle( left_bottom=Point(x=200, y=200), right_top=Point(x=300, y=300), color=COLOR_DARK_GREEN ) rectangle( left_bottom=Point(x=400, y=300), right_top=Point(x=300, y=400), color=COLOR_DARK_GREEN ) sleep(2) clear_screen() vector(start=Point(x=230, y=260), angle=70, length=200, color=COLOR_PURPLE) for i in range(10): point = random_point() color = random_color() radius = random_number(20, 60) circle(center_position=point, radius=radius, color=color, width=0) sleep(2) clear_screen() for i in range(10): point = random_point() color = random_color() dx = random_number(30, 100) dy = random_number(30, 100) right_top = Point(x=point.x + dx, y=point.y + dy) ellipse(left_bottom=point, right_top=right_top, color=color) v3 = Vector(start_point=Point(0, 0), direction=45, length=50) for direction in range(0, 181, 20): v = Vector(start_point=Point(x=300, y=300), direction=direction, length=100) v.draw() v2 = Vector(start_point=v.end_point, direction=direction + 30, length=50) v2.draw(color=COLOR_GREEN) v2.add(v3) v2.draw(color=COLOR_ORANGE) snowflake(center=Point(), length=60, factor_b=0.2, factor_c=100) sleep(2) for k in range(2): y = 500 for i in range(10): clear_screen() y -= 30 for x in [100, 200, 300, 400, 500]: radius = random_number(30, 50) point = Point(x=x, y=y) snowflake(center=point, length=radius) mouse_point, mouse_buttons = get_mouse_state() print("mouse_state is {} + {}".format(mouse_point, mouse_buttons)) if user_want_exit(sleep_time=0.1): break if user_want_exit(0): break
def snowflakes(quantity): x_list = [] y_list = [] size_list = [] length_list = [] for _ in range(quantity): new_x = sd.random_number(50, 1150) x_list.append(new_x) new_y = sd.random_number(0, 600) y_list.append(new_y) new_size = sd.random_number(10, 40) size_list.append(new_size) new_length = round(sd.random_number(10, 90) / 100, 1) length_list.append(new_length) while True: sd.start_drawing() sd.clear_screen() for i, x in enumerate(x_list): if y_list[i] < 0: y_list[i] = 600 point = sd.get_point(x_list[i], y_list[i]) sd.snowflake(center=point, length=size_list[i], factor_b=length_list[i]) y_list[i] -= 10 sd.finish_drawing() sd.sleep(0.1) if sd.user_want_exit(): break
def snowfall(N): snowflake = [] for _ in range(N): snowflake.append(([sd.random_number(-50, 1250), sd.random_number(550, 1600), sd.random_number(23, 47)])) while True: sd.start_drawing() for snow in snowflake: x, y, length = snow point = sd.get_point(x, y) sd.snowflake(center=point, length=length, color=sd.background_color, factor_a=0.6) if y > 50: snow[1] -= 10 snow[0] -= 10 point_fall = sd.get_point(x, y) sd.snowflake(point_fall, length=length, color=sd.COLOR_WHITE) else: last_point = sd.get_point(x, y - 1) sd.snowflake(last_point, length, color=sd.COLOR_WHITE) snow[1] += 1250 sd.finish_drawing() sd.sleep(0.05) if sd.user_want_exit(): break sd.clear_screen()
def main(): sd.set_screen_size(600, 700) zero_screen() first_screen() sd.sleep(2) sd.clear_screen() second_screen() sd.sleep(2) sd.clear_screen() third_screen() sd.sleep(2) snowfall()
def snowflakes(quantity): for _ in range(quantity): new_x = sd.random_number(50, 1150) x_list.append(new_x) new_size = sd.random_number(10, 40) size_list.append(new_size) new_length = round(sd.random_number(10, 90) / 100, 1) length_list.append(new_length) for y in range(600, 0, -5): sd.clear_screen() for i, x in enumerate(x_list): point = sd.get_point(x, y) sd.snowflake(center=point, length=size_list[i], factor_b=length_list[i]) sd.sleep(0.1)
def snowfall(): for k in range(2): y = 500 for i in range(10): sd.clear_screen() y -= 30 for x in [100, 200, 300, 400, 500]: radius = sd.random_number(30, 50) point = sd.Point(x=x, y=y) sd.snowflake(center=point, length=radius) mouse_point, mouse_buttons = sd.get_mouse_state() print("mouse_state is {} + {}".format(mouse_point, mouse_buttons)) if sd.user_want_exit(sleep_time=0.1): break if sd.user_want_exit(0): break
def snowflake(x, y): a = 1 while True: sd.clear_screen() for i in range(len(x)): point = sd.get_point(x[i],y[i]) sd.snowflake(center=point, length=50, color='white') h = sd.randint(0, 20) y[i] -= h if y[i] < 50: break a = sd.randint(-1,1) x[i] = x[i] + h*a sd.sleep(0.05) if sd.user_want_exit(): break
def snowfall(): x = [randint(100, 500) for i in range(20)] y = [randint(450, 600) for i in range(20)] length_list = [randint(5, 50) for i in range(20)] while True: sd.clear_screen() for i in range(20): point = sd.get_point(x[i], y[i]) sd.snowflake(center=point, length=length_list[i]) y[i] += (randint(5, 15) * -1) if y[i] < 0: break x[i] += randint(-15, 15) sd.sleep(0.1) if sd.user_want_exit(): break sd.sleep(0.1) if sd.user_want_exit(): break
next_angle_plus = angle + 30 next_angle_minus = angle - 30 next_length = length * .75 draw_branches(start_point=next_point_1, angle=next_angle_plus, length=next_length) draw_branches(start_point=next_point_2, angle=next_angle_minus, length=next_length) root_point = sd.get_point(300, 30) draw_branches(start_point=root_point, angle=90, length=100) sd.user_want_exit(1) sd.clear_screen() # 4) Усложненное задание (делать по желанию) # - сделать рандомное отклонение угла ветвей в пределах 40% от 30-ти градусов # - сделать рандомное отклонение длины ветвей в пределах 20% от коэффициента 0.75 # Возможный результат решения см lesson_004/results/exercise_04_fractal_02.jpg # Пригодятся функции # sd.random_number() def draw_branches(start_point, angle, length, is_random=True, is_summer_tree=True):
def clear_previus_picture(self): sd.clear_screen()
def print_fallen_snowflakes(qnty_snowflakes, y_list): for i in qnty_snowflakes: if y_list[i] == 10: print('снежинка номер {} упала'.format(i)) qnty_snowflakes.remove(i) sd.clear_screen()
def clear(self): sd.clear_screen()
#!/usr/bin/env python # -*- coding: utf-8 -*- # нарисовать снегопад - 7 движужихся снежинок радиусом от 10 до 60 # снежинки падают с высоты 500 пикселов со скоростью 30 пикселов за такт # на расстоянии 100 пикселов друг от друга from simple_draw import clear_screen, Point, snowflake, sleep, end y = 500 for i in range(10): clear_screen() y = ... # как изменяется y для всех снежинок for i in range(7): point = Point(...) snowflake(point) sleep(0.3) # + нарисовать снежинки разных радиусов, для этого хранить список радиусов radiuses = [30, 20, 40, 10, 50, 70, ] # + сделать скорость падения уникальной для каждой снежинки, # для этого хранить список координат Y и скоростей по Y coordinates = [...] velocity = [...] # ++ сделать реальный снегопад, что бы снежинки порхали из стороны в сторону end()