Рубрики
Без рубрики

Рисование круги с Python Turtle Graphics

Узнайте, как нарисовать красочные круги с графикой Python Turtle, сосредоточенной в определенных координатах.

Автор оригинала: Robin Andrews.

В этом уроке мы собираемся научиться рисовать круги с графикой Python Turtle. Затем мы изменим по умолчанию круг Метод, чтобы мы могли центрировать наши круги в определенные (х, у) Координаты, а затем повеселитесь немного с созданием цели стрельбы и добавлять некоторую интерактивность.

Как вы уже можете знать, Python Turtle Graphics является фантастическим способом узнать о программировании, а также о математике. В целом, кажется, мало интеграции между этими двумя предметами на уровне школы, что я надеюсь увидеть изменения. Многие мои посты в этом блоге написаны, чтобы помочь дальнейшему этой причине. Смотрите компьютерную математику категории для соответствующих сообщений.

Прежде чем начать, обратите внимание, что есть много способов достижения той же цели с графикой Python Turtle. Хотя это может быть хорошо, это также может привести к путанице. По этой причине я сделал вещи, это определенный способ, которым я считаю, дает лучшее основание для полного использования потенциала этого модуля. Например:

  • Я создаю экран объект, чтобы я мог контролировать свой цвет и заголовок и т. Д.
  • Я использую функции, которые имеют существующую черепаху как аргумент, чтобы помочь отговорить использование глобальных переменных и предоставлять дополнительную гибкость, поэтому та же функция может работать для нескольких черепах.

Не беспокойтесь об этих деталях, если они не дают вам общий смысл. Кодекс довольно решающий, и есть комментарии, чтобы помочь.

Рисование кругов с Python

Способ по умолчанию для создания кругов с Python Turtle Graphics – это просто использовать круг Способ, как в следующем примере.

import turtle

# Set up screen
screen = turtle.Screen()
screen.title("Circle")
screen.setup(450, 450)
screen.bgcolor("cyan")

# Create a turtle
toby = turtle.Turtle()
toby.speed(0)
toby.width(5)
toby.hideturtle()
toby.color("red")

# Draw a circle starting at (x, y)
radius = 100
toby.circle(radius)

# Make it all work properly
turtle.done()

Это хорошо для многих целей, но он может быть расстраивает, поскольку он не дает вам контроль над тем, где находится центр круга. Обратите внимание, как в примере выше круг нецентрирован в расположении черепахи (называется toby ), который вступил в существование в расположении по умолчанию (0, 0) Отказ Используя метод по умолчанию, круг вытягивается из глянцевой точки, поэтому отправная точка находится на окружности.

Чертежные круги сосредоточены на (x, y)

Следующая программа демонстрирует, как рисовать круги, сосредоточенные в определенные (х, у) координаты. Это делает это с помощью функции draw_circle () который принимает несколько аргументов, как описано в коде.

Используя эту функцию, относительно легко нарисовать цель луки. Смотрите программу ниже.

import turtle


def draw_circle(tur, x, y, radius, color="black"):
    """
    Draws a circle with center at (x, y), radius radius and color color.
    Create your turtle elsewhere and pass it in as tur.
    """
    tur.color(color)
    tur.pu()
    tur.goto(x, y - radius)  # -radius because the default circle method starts drawing at the border.
    tur.pd()
    tur.begin_fill()
    tur.circle(radius)
    tur.end_fill()


# Set up screen
screen = turtle.Screen()
screen.title("Archery")
screen.setup(450, 450)
screen.bgcolor("cyan")

# Draw the target
toby = turtle.Turtle()
toby.speed(0)
toby.width(5)
toby.hideturtle()

draw_circle(toby, 0, 0, 160, "black")  # Draw a black circle at coords (0, 0) with radius 160 pixels
draw_circle(toby, 0, 0, 120, "blue")
draw_circle(toby, 0, 0, 80, "red")
draw_circle(toby, 0, 0, 40, "yellow")

# Make it all work properly
turtle.done()

Эта программа использует множество функций, которые вы можете использовать в своих собственных программах. Вы можете использовать столько же, сколько вам нравится, но экспериментируйте с идеями. Если у вас нет много идей, попробуйте просто внести небольшие изменения, такие как изменение цветов или размеров кругов. Некоторые из цветов, доступных в Python Turtle Graphics, можно найти здесь Отказ

Следующий уровень

Этот раздел содержит более современные методы программирования Python, поэтому, если вы являетесь относительным новичком, вы можете оставить его на дальше.

Например, это включает в себя

  • Обнаружение событий с Python Turtle Graphics
  • Функции обратного вызова события
  • Передача дополнительных аргументов обратным вызовам, используя лямбда
import turtle

CROSS_SIZE = 20


def draw_circle(tur, x, y, radius, color="black"):
    """
    Draws a circle with center at (x, y), radius radius and color color.
    Create your turtle elsewhere and pass it in as tur.
    """
    tur.color(color)
    tur.pu()
    tur.begin_fill()
    tur.goto(x, y - radius)  # -radius because the default circle method starts drawing at the border.
    tur.pd()
    tur.circle(radius)
    tur.end_fill()


def draw_plus(tur, x, y, length=CROSS_SIZE):
    """
    Draws a cross centered at (x, y) with existing turtle tur and length given by CROSS_SIZE.
    """
    tur.penup()
    tur.goto(x, y - (length / 2))
    tur.pendown()
    tur.goto(x, y + (length / 2))
    tur.penup()
    tur.goto(x - (length / 2), y)
    tur.pendown()
    tur.goto(x + (length / 2), y)
    print("Mouse click at", x, ",", y)  # for useful feedback about where you clicked.


screen = turtle.Screen()
screen.title("Archery")
screen.setup(450, 450)
screen.bgcolor("cyan")
screen.listen()

# Draw cross when screen is clicked
cross_turtle = turtle.Turtle(visible=False)
cross_turtle.color("green")
cross_turtle.width(4)
cross_turtle.speed(0)
# The lambda here is a useful trick to enable additional arguments to be passed to the onclick callback.
screen.onclick(lambda x, y, tur=cross_turtle: draw_plus(tur, x, y))
screen.onkey(lambda: cross_turtle.clear(), "space")  # Clear crosses on keypress.

# Draw the target
toby = turtle.Turtle()
toby.speed(0)
toby.width(5)
toby.hideturtle()

draw_circle(toby, 0, 0, 160, "black")  # Draw a black circle at coords (0, 0) with radius 160 pixels
draw_circle(toby, 0, 0, 120, "blue")
draw_circle(toby, 0, 0, 80, "red")
draw_circle(toby, 0, 0, 40, "yellow")

# Make it all work properly.
turtle.done()

Здесь есть много ингредиентов, что вы можете использовать в своих собственных проектах. Как и прежде, перейдите вперед и отредактируйте биты программы или используйте биты в собственном проекте. Программа в настоящее время не игра как такая, но я ожидаю, что это может быть сделано в один. Можете ли вы думать о том, как? Я думаю, что какое-то случайное позиционирование крестов или рефлекторной тестирования. В этой статье мы не посмотрели таймеры и анимации, но наверняка они возможно с графикой Python Turtle. Может быть, идея, которую вы можете стать возможными с небольшим количеством знаний, поэтому, возможно, сделать записку и вернуться к нему позже. Если у вас есть идея, с которой вы хотите помочь, дайте мне знать в комментариях, и я посмотрю, смогу ли я помочь.

Этот урок показал вам, как рисовать круги, используя графику Python Turtle, а затем, как улучшить основную функциональность и добавлять некоторые интерактивные функции. Я надеюсь, что вы нашли это весело и интересно.

Счастливые вычисления!