Простой способ сделать квадрат и повернутый квадрат в графике 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 Solutions collect form web for “Простой способ сделать квадрат и повернутый квадрат в графике Python Turtle”

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

Давайте возьмем ваш код и добавим 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 (я подозреваю, что это учебник, который вы уже читаете!)

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

 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() 

ВЫВОД

введите описание изображения здесь

Черепашные марки естественным образом вращаются и масштабируются, какие рисунки черепах нет!

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

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

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

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

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

  • Обнаружение столкновения в игре на черепе Python
  • Turtle Module в python не импортирует
  • Понимание функций в Python
  •  
    Interesting Posts for Van-Lav

    Где мои данные JSON в моем входящем запросе Django?

    Задержка цикла Python без time.sleep ()

    Маркер с 404 номерами с плавающей точкой в ​​URL-адресе

    Python: чтение потокового ввода из subprocess.communicate ()

    python eval vs ast.literal_eval против декодирования JSON

    Найти все перестановки строк в Python

    В Python, как я могу поместить поток в сон до определенного времени?

    Открытие файла excel вручную позволяет запускать формулы, открывая файл excel с помощью VBScript или PowerShell или win32com от Python.

    Каков самый чистый способ извлечения URL-адресов из строки с помощью Python?

    Pandas Python Regex: ошибка: ничего не повторять

    Кто-нибудь преуспел в использовании Google App Engine с Python версии 2.6?

    В pdb (отладчик python) можно установить точку останова на встроенную функцию?

    Virtualenv не работает на OS X Yosemite с OSError

    PDB.run – перезапуск сеанса pdb

    Не удалось запустить .py-файл из putty, Синтаксическая ошибка: слово неожиданно (ожидается «)»)

    Python - лучший язык программирования в мире.