2016-12-06 5 views
0

を四角形を回転させ、私はこのパターンを再現するためにタートルグラフィックスで働いている:enter image description hereシンプル広場を作るための方法およびPythonのタートルグラフィックスで

は、これはおそらく、非常に基本的な質問ですが、私はするための簡単な方法があります正方形の中で回転した正方形を作成しますか?それだけで、私はちょうど1つのカメを使って正方形にしてから、ゆっくりと2番目のカメを回転させて回転した部分を描きます。例:

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関数を追加します。ここから

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

:それでは、あなたのコード内で新しいメソッドを使用してみましょう

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

:これを行うには、使用するカメの機能だけでなく、四角の大きさを教えてあげましょう与えられたサイズの「四角形」の形を作る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) 

これにより、メインコードから図面の詳細が削除されます。

次のことは、より一般的なコードを書いて、Alexが適切な場所に移動するようにすることです。または、Alexが最初の四角形を完成させた後に移動させ、2番目の角を完成させます。

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

OUTPUT

enter image description here

タートルスタンプが自然に回転させると、スケール亀の図面はしないでください!

あなたが気づくことは、私のパターンは全く同じではないということです。オリジナルではスターを構成する2つの赤色(または黄色)の四角形はと同じサイズではありません!彼らはパターンの作業を行うために若干異なります - 私はそれを修正するOPの練習として残します。

+0

ありがとう、ありがとう!最初の大きな正方形と小さな正方形が描画され、少し大きめのバージョンが回転して上に置かれるように、いくつかの関数を使用してサイズの違いの問題を修正することができました。今私はさまざまな形状のサイズ/スケーリングを可能にしようとしている! – maio123maio

関連する問題