Exemple #1
1
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
Exemple #2
0
def house():
    point_list_1 = []

    point_list_1.append(sd.get_point(230, 380))
    point_list_1.append(sd.get_point(475, 480))
    point_list_1.append(sd.get_point(720, 380))
    left_bot = sd.get_point(0, 0)
    right_top = sd.get_point(1200, 80)
    start_point = sd.get_point(250, 80)
    end_point = sd.get_point(700, 80)
    end_point_1 = sd.get_point(700, 380)

    sd.rectangle(left_bottom=left_bot, right_top=right_top, color=sd.COLOR_DARK_ORANGE, width=0)  # Земля

    v1 = sd.vector(start=start_point, angle=90, length=300, color=sd.COLOR_YELLOW, width=2)
    v2 = sd.vector(start=end_point, angle=90, length=300, color=sd.COLOR_YELLOW, width=2)
    v3 = sd.vector(start=end_point_1, angle=180, length=450, color=sd.COLOR_YELLOW, width=2)
    v4 = sd.vector(start=start_point, angle=0, length=450, color=sd.COLOR_YELLOW, width=2)

    wall(x_start=300, x_end=650, y_start=80, y_end=380, color=sd.COLOR_YELLOW)

    sd.square(left_bottom=sd.get_point(400, 145), side=150, color=sd.background_color, width=0)

    sd.square(left_bottom=sd.get_point(400, 145), side=150, color=sd.COLOR_YELLOW, width=2)

    sd.polygon(point_list=point_list_1, color=sd.COLOR_RED, width=0)
Exemple #3
0
def sun():
    x = 130
    y = 480
    point = sd.get_point(x, y)
    sd.circle(center_position=point, radius=50, color=sd.COLOR_YELLOW, width=0)
    sunbeam = 0
    for color in sunbeam_colors:
        while sunbeam < 361:
            sd.vector(start=point,
                      angle=sunbeam,
                      length=100,
                      color=color,
                      width=3)
            sd.circle(center_position=point,
                      radius=50,
                      color=sd.COLOR_YELLOW,
                      width=0)
            sunbeam += 30
    sd.circle(center_position=point,
              radius=50,
              color=sd.background_color,
              width=5)
    a = sunbeam_colors[0]
    sunbeam_colors.remove(a)
    sunbeam_colors.append(a)
Exemple #4
0
def draw_random_branches_recursive(start_point, angle, length, width):
    if length < 3:
        return
    elif length < 10:
        v1 = sd.vector(start=start_point,
                       angle=angle,
                       length=length,
                       width=width,
                       color=sd.COLOR_GREEN)
    else:
        v1 = sd.vector(start=start_point,
                       angle=angle,
                       length=length,
                       width=width,
                       color=(158, 104, 54))
    width -= 1
    random_length = length * (0.75 + 0.75 * sd.random_number(-20, 20) / 100)
    random_angle = 30 + 30 * sd.random_number(-40, 40) / 100.0
    draw_random_branches_recursive(v1,
                                   angle=angle - random_angle,
                                   length=random_length,
                                   width=width)

    random_length = length * (0.75 + 0.75 * sd.random_number(-20, 20) / 100)
    random_angle = 30 + 30 * sd.random_number(-40, 40) / 100.0
    draw_random_branches_recursive(v1,
                                   angle=angle + random_angle,
                                   length=random_length,
                                   width=width)
Exemple #5
0
def draw_a_shape(start_point, angle, length, number_of_sides, color):
    current_point = start_point
    max_angle = 360 + angle
    angle_step = 360 // number_of_sides
    for angle in range(angle, max_angle, angle_step):
        current_vector = sd.get_vector(current_point, angle, length, 3)
        sd.vector(current_point, angle, length, color=color, width=5)
        current_point = current_vector.end_point
Exemple #6
0
def draw_branches_recursive(start_point, angle, length):
    if length < 5:
        return
    length *= 0.75
    v1 = sd.vector(start=start_point, angle=angle - 30, length=length, width=1)
    v2 = sd.vector(start=start_point, angle=angle + 30, length=length, width=1)
    draw_branches_recursive(v1, angle=angle - 30, length=length)
    draw_branches_recursive(v2, angle=angle + 30, length=length)
Exemple #7
0
def draw_sun(point_for_sun, angle_of_rotation):
    length = 100

    sd.circle(center_position=point_for_sun, radius=105, color=sd.background_color, width=0)

    sd.circle(center_position=point_for_sun, radius=50, color=sd.COLOR_YELLOW, width=0)

    for angle in range(angle_of_rotation, 360 + angle_of_rotation, ANGLE_BETWEEN_RAYS):
        sd.vector(start=point_for_sun, angle=angle, length=length, color=sd.COLOR_YELLOW, width=3)
Exemple #8
0
def draw_sun(_x, _y, _color=sd.COLOR_YELLOW, _step=30):
    # """Функция рисуюет смайл"""
    for i in range(0, 360, _step):
        sd.vector(start=sd.get_point(_x, _y), angle=i, length=80, color=_color)
    center_position = sd.Point(_x, _y)
    radius = 50
    sd.circle(center_position=center_position,
              radius=radius,
              color=sd.COLOR_YELLOW,
              width=0)
Exemple #9
0
 def draw(self, color=sd.COLOR_WHITE):
     start_point = sd.get_point(self.x, self.y)
     for i in range(6):
         new_point = sd.vector(start=start_point,
                               angle=i * 60,
                               length=self.line_len * 0.55,
                               color=color)
         for j in range(3):
             sd.vector(start=new_point,
                       angle=(i * 60 - 35 + j * 35),
                       length=self.line_len * 0.45,
                       color=color)
Exemple #10
0
def sun():
    sd.circle(center_position=sd.get_point(200, 500),
              radius=40,
              color=sd.COLOR_YELLOW,
              width=0)
    x = 0
    for _ in range(13):
        sd.vector(start=sd.get_point(200, 500),
                  angle=x,
                  length=100,
                  width=2,
                  color=sd.COLOR_YELLOW)
        x += 30
Exemple #11
0
def sun():
    position = sd.get_point(275, 700)
    radius = 50
    sd.circle(center_position=position,
              radius=radius,
              color=sd.COLOR_YELLOW,
              width=0)
    for i in range(0, 360, 36):
        sd.vector(start=position,
                  angle=i,
                  length=radius + 35,
                  color=sd.COLOR_YELLOW,
                  width=3)
Exemple #12
0
def draw_sun(x, y, length):
    global angle
    radius = length // 2
    sd.start_drawing()
    sd.vector(sd.get_point(x, y),
              angle=angle,
              length=length,
              color=sd.background_color,
              width=3)
    angle += 30
    sd.vector(sd.get_point(x, y),
              angle=angle,
              length=length,
              color=(255, 255, 0),
              width=3)
    sd.vector(sd.get_point(x, y),
              angle=angle + 30,
              length=length,
              color=(255, 255, 0),
              width=3)
    sd.vector(sd.get_point(x, y),
              angle=angle + 60,
              length=length,
              color=(255, 255, 0),
              width=3)
    sd.finish_drawing()
    sd.circle(sd.get_point(x, y), radius=radius, width=0)
    sd.sleep(0.01)
Exemple #13
0
def second_screen():
    sd.start_drawing()
    sd.vector(start=sd.Point(x=230, y=260),
              angle=70,
              length=200,
              color=sd.COLOR_PURPLE,
              width=2)
    for i in range(10):
        point = sd.random_point()
        color = sd.random_color()
        radius = sd.random_number(20, 60)
        sd.circle(center_position=point, radius=radius, color=color, width=0)
    sd.finish_drawing()
    if TAKE_SNAPSHOTS:
        sd.take_snapshot(file_name='second_screen.png', path=SNAPSHOTS_PATH)
Exemple #14
0
def hexagon(point, color, angle=30, length=100):
    v1 = sd.vector(start=point,
                   angle=angle,
                   length=length,
                   color=color,
                   width=3)
    return v1
def common_part(start_point, angle, length, color, kol_povt):
    for _ in range(kol_povt):
        start_point = sd.vector(start=start_point,
                                angle=angle,
                                length=length,
                                color=color)
        angle += 360 / kol_povt
Exemple #16
0
def draw_branches(start_point, angle, length):

    if length < 10:
        return

    plus_point = sd.vector(start_point, angle + 30, length, width=2)
    minus_point = sd.vector(start_point, angle - 30, length, width=2)

    next_plus_point = sd.get_point(plus_point.x, plus_point.y)
    next_minus_point = sd.get_point(minus_point.x, minus_point.y)
    next_length = length * (0.75 + (sd.random_number(-15, 15) / 100))
    next_plus_angle = angle + 30 + sd.random_number(-12, 12)
    next_minus_angle = angle - 30 - sd.random_number(-12, 12)

    draw_branches(next_plus_point, next_plus_angle, next_length)
    draw_branches(next_minus_point, next_minus_angle, next_length)
Exemple #17
0
def count_angle(start_point, zero_angle, side_length, sides_count, color_id):
    end_point = start_point
    angle_shift = int(360 / sides_count)
    for angle in range(0, 360 - angle_shift, angle_shift):
        start_point = sd.vector(start_point, angle + zero_angle, side_length, colors[color_id])

    sd.line(start_point, end_point, colors[color_id])
Exemple #18
0
def draw_house(start_of_wall, end_of_wall, height_of_wall, height_brick=50):

    wall.paint_wall(start_of_wall=start_of_wall, end_of_wall=end_of_wall,
                    height_of_wall=height_of_wall, height_brick=height_brick)
    point_for_wall = sd.get_point(start_of_wall, 0)
    sd.vector(start=point_for_wall, angle=90, length=height_of_wall)
    point_for_wall = sd.get_point(end_of_wall+height_brick, 0)
    sd.vector(start=point_for_wall, angle=90, length=height_of_wall)

    point_for_window_left_bottom = sd.get_point((end_of_wall-start_of_wall)/2+start_of_wall-150, 100)
    point_for_window_right_top = sd.get_point((end_of_wall-start_of_wall)/2+start_of_wall+50, height_of_wall-50)
    sd.rectangle(point_for_window_left_bottom, point_for_window_right_top, width=0, color=sd.COLOR_BLUE)
    list_for_roof = [sd.get_point(start_of_wall-50, height_of_wall),
                     sd.get_point(end_of_wall+100, height_of_wall),
                     sd.get_point((end_of_wall-start_of_wall)/2+start_of_wall, height_of_wall+100)]
    sd.polygon(point_list=list_for_roof, color=sd.COLOR_BLUE, width=0)
def draw_tree(x=650,
              trunk_length=150,
              init_branch_length=100,
              color=simple_draw.COLOR_BLUE):
    """Рекурсивно риует дерево: ствол и рандомизованные ветви

    Parameters
    ----------

    x: int, default=0
        Горизонтальная координата, из которой будет расти дерево.
        вертикальная не нужна, ибо она очевидно равна нулю.

    trunk_length: int, default=100
        Длина ствола

    init_branch_length: int, default=100
        Начальная длина веток

    color: tuple(int, int, int), default=(0, 0, 255)
        Цвет ствола и начальный цвет веток. Это кортеж (red, green, blue),
        где для каждый из трёх элементов цвета принимает значения от 0 до 255 включительно
    """
    pass
    root_point = simple_draw.get_point(x, 0)
    init_branches_point = simple_draw.vector(start=root_point,
                                             angle=90,
                                             width=2,
                                             length=trunk_length,
                                             color=color)
    _draw_branches(start_point=init_branches_point,
                   angle=90,
                   length=init_branch_length,
                   color=color)
def draw_sun(center_x=0,
             center_y=0,
             angle=0,
             ray_length=100,
             core_radius=50,
             ray_gap=10,
             ray_count=8,
             ray_width=3):
    """Рисует солнце в соответствии с параметрами

    Parameters
    ----------
    center_x, center_y: int, default=0, 0
        Координаты центра солнца

    angle: int, default=0
        Угол поворота лучей солнца

    ray_length: int, default=100
        Длина лучей

    core_radius: int, default=50
        Радиус внутренней части

    ray_gap: int, default=10
        Расстояние между ядром и лучами

    ray_count: int, default=8
        Количество лучей

    ray_width: int, default=3
        Толщина лучей

    """
    origin = simple_draw.get_point(center_x, center_y)
    angle_step = round(360 / ray_count)
    for next_angle in range(angle, 360 + angle, angle_step):
        ray_start_point = simple_draw.get_vector(origin,
                                                 next_angle,
                                                 length=core_radius +
                                                 ray_gap).end_point
        simple_draw.vector(start=ray_start_point,
                           angle=next_angle,
                           length=ray_length,
                           width=ray_width)
    simple_draw.circle(origin, core_radius, width=0)
Exemple #21
0
def closed_figure(start_point,
                  angle=0,
                  step=90,
                  length=100,
                  color=(255, 255, 255)):
    point = sd.vector(start=start_point,
                      angle=angle,
                      length=length,
                      color=color,
                      width=1)
    for next_angle in range(step, 359, step):
        point = sd.vector(start=point,
                          angle=angle + next_angle,
                          length=length,
                          color=color,
                          width=1)
    sd.line(start_point=point, end_point=start_point, color=color, width=1)
Exemple #22
0
def draw_a_shape(start_point, angle, length, number_of_sides):
    current_point = start_point
    max_angle = 360 + angle
    angle_step = 360 // number_of_sides
    for angle in range(angle, max_angle, angle_step):
        # I've removed two extra lines and all still work correctly! It's magic!
        # current_vector = sd.get_vector(current_point, angle, length, 3)
        current_point = sd.vector(current_point, angle, length)
Exemple #23
0
    def sun_core(self):
        sd.start_drawing()

        if self.ANGLES is None:
            self.ANGLES = [angle for angle in range(0, 361, 10)]
        for num_ray, angle in enumerate(self.ANGLES):
            sd.vector(self.point_centre,
                      angle=self.ANGLES[num_ray],
                      length=90,
                      color=sd.background_color,
                      width=3)
            angle += 3
            self.ANGLES[num_ray] = angle
            sd.vector(self.point_centre, angle=angle, length=90, width=3)
            self.body_sun()

        sd.finish_drawing()
Exemple #24
0
def draw_animate_sun(x_center=100,
                     y_center=100,
                     radius=50,
                     ray_len=80,
                     ray_width=8,
                     shift_angle=5):
    sd.circle(sd.get_point(x_center, y_center),
              radius=ray_len + 5,
              width=0,
              color=sd.background_color)
    sd.circle(sd.get_point(x_center, y_center), radius=radius, width=0)

    # Крутим лучиками
    for angle in range(shift_angle, shift_angle + 361, 60):
        # angle += animate_factor
        sd.vector(start=sd.get_point(x_center, y_center),
                  angle=angle,
                  width=ray_width,
                  length=ray_len)
Exemple #25
0
def build_roof(
        start_point=sd.get_point(100, 100), length=50, color=sd.COLOR_YELLOW):
    for roof_length in range(length):
        vector_start_point = start_point
        for figure_angle in range(0, 240, 120):
            rib = sd.vector(start=vector_start_point,
                            angle=figure_angle,
                            length=roof_length,
                            color=color,
                            width=2)
            vector_start_point = rib
        sd.line(start_point, vector_start_point, color=color)
def draw_branches(start_point, start_angle, branch_length):
    if branch_length < 10:
        return
    start_point = sd.vector(start_point, start_angle, branch_length)
    delta = 30
    branch_length *= .75

    shift_angle = start_angle + delta
    draw_branches(start_point, shift_angle, branch_length)

    shift_angle = start_angle - delta
    draw_branches(start_point, shift_angle, branch_length)
def draw_line(sides, start, stop, angle, length, width, colored):

    decode_color = figure_color[colored]

    zero_point = sd.get_point(start, stop)

    amount_sides_angle = int(360 / sides)

    for i in range(0, 360, amount_sides_angle):
        draw_lines = sd.vector(zero_point, angle, length, decode_color, width)
        zero_point = sd.get_point(draw_lines.x, draw_lines.y)
        angle += amount_sides_angle
def draw_random_branches(start_point, start_angle, branch_length):
    if branch_length < 8:
        return
    start_point = sd.vector(start_point, start_angle, branch_length)
    delta = int(30 + rand_delta(30, percent=40))
    branch_length *= (.75 + rand_delta(0.75, percent=20, is_positive=True))
    print(rand_delta(30, percent=40), rand_delta(0.75, percent=20))
    shift_angle = start_angle + delta
    draw_random_branches(start_point, shift_angle, branch_length)

    shift_angle = start_angle - delta
    draw_random_branches(start_point, shift_angle, branch_length)
Exemple #29
0
def sun_draw(point, angle_list):
    sd.start_drawing()

    def plus(number):
        return number + 5

    for index, angle in enumerate(angle_list):
        sd.vector(start=point,
                  angle=angle,
                  length=130,
                  color=sd.background_color,
                  width=3)
    angles = list(map(plus, angle_list))
    for index, angle in enumerate(angles):
        sd.vector(start=point,
                  angle=angle,
                  length=130,
                  color=sd.COLOR_YELLOW,
                  width=3)
    sd.circle(center_position=point, radius=70, color=sd.COLOR_YELLOW, width=0)
    sd.finish_drawing()
    return angles
def figure(face, point, angle=0, length=300, color=sd.COLOR_YELLOW):
    if face < 3:
        print('Количество граней должно более 2')
        return None
    # if face > 20:
    #     print('Количество граней не должно быть более 20')
    #     return None
    start_point = point
    current_angle = angle
    current_length = (length * 5) / face
    for n in range(face-1):
        start_point = sd.vector(start=start_point, angle=current_angle, length=current_length, width=2, color=color)
        current_angle = current_angle + 360/face
    sd.line(start_point=start_point, end_point=point, width=2, color=color)
Exemple #31
0
def wall(color, width):
    raw_step = 50
    col_step = 100

    for num_r, raw in enumerate(range(100, 701, raw_step)):
        sd.vector(start=sd.get_point(0, 700 - raw),
                  angle=0,
                  length=600,
                  color=color,
                  width=5)

        for num, col in enumerate(range(0, 701, col_step)):
            start = 0
            if num_r % 2:
                start = -(col_step / 2)  # col_step ширина кирпича

            x = col_step + col
            y = raw - col_step
            sd.vector(start=sd.get_point(start + x, y),
                      angle=90,
                      length=50,
                      color=color,
                      width=width)