2016-12-06 53 views
0

Я работаю в черепашьих графики, чтобы воссоздать эту картину: enter image description hereпростой способ сделать квадрат и вращали квадрат в Python Turtle графики

Это, вероятно, очень простой вопрос, но есть более простой способ для меня создать этот вращающийся квадрат в квадратной форме? Как бы то ни было, я просто использую одну черепаху, чтобы сделать нормальный квадрат, затем медленно перемещаю вторую черепаху в положение, чтобы нарисовать вращающуюся часть. Пример:

import turtle 
alex = turtle.Turtle() 
tess = turtle.Turtle() 

for i in range(4): 
    alex.fd(50) 
    alex.lt(90) 
tess.pu() 
tess.fd(25) 
tess.rt(90) 
tess.fd(10) 
tess.rt(225) 
tess.pd() 
for i in range(4): 
    tess.fd(50) 
    tess.lt(90) 

Что мне неуклюжим в лучшем случае, и не работает, если я изменю боковые длины (которые я намерен делать).

Большое спасибо!

ответ

3

Это прекрасное время для начала использования функций! Используя функции, вы можете создать многоразовый кусок кода, который может повторить определенную задачу - например, рисование квадрата или квадратной формы.

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

def square(this_turtle, side_length): 
    for i in range(4): 
     this_turtle.fd(side_length) 
     this_turtle.lt(90) 

Теперь давайте использовать новый метод в вашем коде:

square(alex, 50) 
tess.pu() 
tess.fd(25) 
tess.rt(90) 
tess.fd(10) 
tess.rt(225) 
tess.pd() 
square(tess, 50) 

Отсюда вы можете подумать о том, как вы можете сделать функцию star, которая образует квадратную форму любого заданного размера. Удачи!

Вот более подробные объяснения о том, как вы можете использовать функции: http://openbookproject.net/thinkcs/python/english3e/functions.html (! Я подозреваю, что это учебник вы уже ниже)

1

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

def draw_square(tortuga, size): 
    for i in range(4): 
     tortuga.fd(size) 
     tortuga.lt(90) 

Это удалит детали чертежа из вашего основного кода.

Следующее, что вы делаете, это написать более общий код, чтобы Тесс следовал за Алексом в нужное место - или чтобы Алекс двигался после завершения первого квадрата, делая второй сам.

3

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

from turtle import Turtle, Screen 

BASE_UNIT = 20 

def tessellate(turtle, start, stop, step): 
    for x in range(start, stop + 1, step): 
     for y in range(start, stop + 1, step): 
      turtle.goto(x * BASE_UNIT, y * BASE_UNIT) 
      turtle.stamp() 
      turtle.left(45) 
      turtle.stamp() 

alex = Turtle(shape="square") 
alex.shapesize(8) 
alex.color("red") 
alex.penup() 

tessellate(alex, -12, 12, 12) 

tess = Turtle(shape="square") 
tess.shapesize(4) 
tess.color("gold") 
tess.penup() 

tessellate(tess, -6, 6, 12) 

screen = Screen() 

screen.exitonclick() 

ВЫВОД

enter image description here

черепахи марки естественно вращать и масштабировать, которые черепахи рисунки не делают!

Одна вещь, которую вы заметите, это то, что мой рисунок не совсем то же самое.В оригинале два красных (или желтых) квадрата, которые составляют звезду , имеют одинаковый размер! Они немного отличаются, чтобы заставить шаблон работать - я оставляю его как упражнение для OP, чтобы исправить это.

+0

Спасибо, спасибо! Мне удалось исправить вопрос о разнице в размерах, используя еще несколько функций, чтобы были нарисованы первые большие и маленькие квадраты, а затем несколько более крупные версии, повернутые, были заложены сверху. Теперь я застрял, пытаясь разрешить разные размеры фигур/масштабирование! – maio123maio

Смежные вопросы