2016-08-09 219 views
3

Ich versuche, eine geflieste Dreieck zu zeichnen, dieWie ein gefliestes Dreieck mit Python Schildkröte ziehen

enter image description here

mit Python Schildkröte wie diese aussieht. Ich hätte gerne 16,25,36,49 oder 64 Dreiecke.

Meine ersten Versuche sind plump, weil ich nicht herausgefunden habe, wie man die Schildkröte sauber von einem Dreieck zum nächsten bewegt.

Hier ist meine (teilweise richtig) -Code

def draw_triangle(this_turtle, size,flip):  
    """Draw a triangle by drawing a line and turning through 120 degrees 3 times""" 
    this_turtle.pendown() 
    this_turtle.fill(True) 
    for _ in range(3): 
     if flip: 
      this_turtle.left(120) 
     this_turtle.forward(size) 
     if not flip: 
      this_turtle.right(120) 
    this_turtle.penup() 

myturtle.goto(250,0) 
for i in range(4): 
    for j in range(4): 
     draw_triangle(myturtle, square_size,(j%2 ==0)) 
     # move to start of next triangle 
     myturtle.left(120) 
     #myturtle.forward(square_size) 

    myturtle.goto(-250,(i+1)*square_size) 

Es muss eine elegante Art und Weise sein, dies zu tun?

Antwort

1

Ich fand das ein interessantes Problem, wenn geändert, so dass die Schildkröte die Figur nur durch Bewegung und ohne Sprünge zeichnen muss.

Die Lösung, die ich hässlich gefunden, aber es kann ein Ausgangspunkt sein ...

def n_tri(t, size, n): 
    for k in range(n): 
     for i in range(k-1): 
      t.left(60) 
      t.forward(size) 
      t.left(120) 
      t.forward(size) 
      t.right(180) 
     t.left(60) 
     t.forward(size) 
     t.right(120) 
     t.forward(k * size) 
     t.left(60) 
    t.right(180) 
    t.forward(n * size) 
    t.right(180) 

Sie können sehen, wie das Muster here

+0

Nette Idee sieht. Ich hatte nicht daran gedacht, es so zu machen. – user2175783