2016-10-11 11 views
-1

私はカメに問題があります。亀に問題がある

これは、これまでのコードです:

''' 
Levi Davis 
This program demonstrates my knowledge on turtles based on problem one in the 
third set of homework questions 
''' 

import turtle 
import math 

def draw_arc(t, angle, num_segments, length): 
    ''' 
    draws an arc with turtle 't' that has a number of segments equal to 'num_segments' 
    and a length equal to 'length' with a turn angle of 'angle' divided by 'num_segments' 
    ''' 

    #this is my calculations on the actual turning of the turtle 
    turn_angle = angle // num_segments 
    init_turn = ((num_segments - 1) * turn_angle) // 2 

    #the initial turn of the turtle and the loop to make the arc 
    t.right(init_turn) 
    for count in range(num_segments): 
     t.forward(length/num_segments) 
     t.left(turn_angle) 

    #undoing the final turn and the initial turn 
    t.right(turn_angle + init_turn) 

def draw_squiggle(t, angle, num_segments, length, num_squiggles): 
    ''' 
    This function utilizes draw_arc() to create a squiggly line 
    ''' 
    for x in range(num_squiggles): 
     draw_arc(t, angle, num_segments, length) 
     draw_arc(t, -(angle), num_segments, length) 

def draw_petal(t, angle, num_segments, length): 
    ''' 
    draws a filled in petal shape using 2 arcs and a 180 degree turn 
    ''' 
    t.begin_fill() 
    draw_arc(t, angle, num_segments, length) 
    t.left(180) 
    draw_arc(t, angle, num_segments, length) 
    t.left(180) 
    t.end_fill() 

def draw_leaf(t, angle, num_segments, length): 
    draw_petal(t, angle, num_segments, length) 
    t.fillcolor(t.pencolor()) 
    draw_petal(t, angle, num_segments, (length/2)) 

wn = turtle.Screen() 


bob = turtle.Turtle() 
bob.pencolor("tomato2") 
bob.pensize(5) 
bob.fillcolor("black") 


#Because clare told me to I made her into a turtle 
clare = turtle.Turtle() 
clarepen = "green" 
clarefill = "purple" 
clare.pencolor(clarepen) 
clare.pensize(3) 
clare.fillcolor(clarefill) 

#testing of functions 

    #draw_arc(bob, 100, 10, 10) 
    #draw_arc(bob, -100, 10, 10) 
    #draw_squiggle(bob, -100, 10, 10, 2) 
    #draw_petal(clare, 100, 10, 40) 
    #draw_leaf(clare, 100, 10, 40) 

#that one shape that is kind of trippy to look at... I think?... 
size = 80 
def draw_weird_shape(t1, t2): 
    startx = -size/2 
    starty = -size/2 * math.tan(math.radians(144 /2)) 
    t1.up() 
    t1.goto(startx, starty) 
    t1.down() 
    t2.up() 
    t2.goto(startx, starty) 
    t2.down() 

    t1_fill = "purple" 
    t1_pen = "green" 

    for count in range(10): 
     t1.forward(size/2) 
     t1.right(90) 
     draw_squiggle(t1, 50, 10, 20, 2) 
     draw_leaf(t1, 50, 10, 50) 
     t1.pencolor(t1_pen) 
     t1.fillcolor(t1_fill) 
     t1.right(180) 
     draw_squiggle(t1, 50, 10, 20, 2) 
     t1.right(90) 
     t1.forward(size/2) 
     t1.left(36)   
     t2.up() 
     t2.forward(size) 
     t2.left(18) 
     t2.right(90) 
     t2.down() 
     draw_petal(t2, 50, 5, 25) 
     t2.up() 
     t2.left(108) 

draw_weird_shape(clare, bob) 

''' 
clare.forward(20) 
clare.left(18) 
clare.right(90) 
clare.forward(20) 
clare.left(180) 
clare.forward(20) 
clare.right(90) 
clare.forward(20) 
''' 

wn.exitonclick() 
波線は、それはそれのように180度ターンに戻っていない戻って起動すると、問題が線100

の周りにあるように思われる

すべきだ。

答えて

0

くすぐりが戻ってきたら、180 度に戻ることはありません。

あなたの問題は、このコードです:

#this is my calculations on the actual turning of the turtle 
turn_angle = angle // num_segments 
init_turn = ((num_segments - 1) * turn_angle) // 2 

整数の除算、//を使用することで、波線の基礎となるアークコードが同じパスをたどるないことだけで十分なエラーを紹介します。代わりに、もう少し正確にそれを維持するために、浮動小数点除算、/を使用します。

# this is my calculations on the actual turning of the turtle 
turn_angle = angle/num_segments 
init_turn = ((num_segments - 1) * turn_angle)/2 

enter image description here enter image description here