2016-12-06 174 views
0

我的烏龜圖形努力重建這個模式旋轉方:enter image description here,使一個正方形和更簡單的方法在Python烏龜圖形

這可能是一個很基本的問題,但有一個簡單的辦法,我在方形內創建旋轉的正方形?就這樣,我只用一隻烏龜製作一個正方形,然後慢慢地將第二隻烏龜移動到繪製旋轉部分的位置。例如:

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) 

從這裏然後你可以考慮如何製作一個功能,它可以製作任何給定尺寸的「方形」形狀。祝你好運!

這裏是你如何使用功能的詳細的解釋: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