Python源码示例:turtle.forward()
示例1
def draw_tree(length, width=9):
color = 'brown'
if length < 1:
return
elif length < 3:
color = 'green'
if width < 1:
width = 1
turtle.color(color)
turtle.width(width)
turtle.forward(length)
turtle.left(30)
draw_tree(length / FACTOR, width - 1)
turtle.right(60)
draw_tree(length / FACTOR, width - 1)
turtle.left(30)
turtle.color(color)
turtle.width(width)
turtle.backward(length)
示例2
def gear(count, width, height):
angle = 90-(180/count)
for _ in range(count):
turtle.forward(width)
turtle.left(angle)
turtle.forward(height)
turtle.right(90)
turtle.forward(width)
turtle.right(90)
turtle.forward(height)
turtle.left(angle)
# --- main ---
# clear everything
示例3
def gear(count, width, height):
angle = 90-(180/count)
for _ in range(count):
turtle.forward(width)
turtle.left(angle)
turtle.forward(height)
turtle.right(90)
turtle.forward(width)
turtle.right(90)
turtle.forward(height)
turtle.left(angle)
# --- main ---
# clear everything
示例4
def draw_pattern_rectangle(x, y, width, height, count, radius, color='red'):
rotation = 360 / count
turtle.goto(x, y)
for _ in range(count):
# move from center to circle
turtle.pu()
#turtle.color('black')
turtle.forward(radius)
turtle.right(90+rotation/2)
draw_rectangle(width, height, color)
# move from circle to center
turtle.pu()
#turtle.color('black')
turtle.left(90+rotation/2)
turtle.backward(radius)
# rotate in circle
turtle.right(rotation)
示例5
def draw_pattern_circle(x, y, r, count, radius, color='red'):
rotation = 360 / count
turtle.goto(x, y)
for _ in range(count):
# move from center to circle
#turtle.pu()
turtle.color('black')
turtle.forward(radius)
turtle.right(90)
draw_circle(r, color)
# move from circle to center
#turtle.pu()
turtle.color('black')
turtle.left(90)
turtle.backward(radius)
# rotate in circle
turtle.right(rotation)
示例6
def item(lenght, level, color):
if level <= 0:
return
for _ in range(5): # 5
turtle.color(colors[color])
turtle.forward(lenght)
item(lenght/4, level-1, color+1)
turtle.penup() # there is no need to draw again the same line (and it can use differnt color)
turtle.backward(lenght)
turtle.pendown()
turtle.right(360/8) # 8
turtle.right(360/8 * 3) # 3 = 8 - 5
示例7
def move(distance):
turtle.penup()
turtle.forward(distance)
turtle.pendown()
示例8
def createHand(name, length):
turtle.reset()
move(-length * 0.01)
turtle.begin_poly()
turtle.forward(length * 1.01)
turtle.end_poly()
hand = turtle.get_poly()
turtle.register_shape(name, hand)
示例9
def createClock(radius):
turtle.reset()
turtle.pensize(7)
for i in range(60):
move(radius)
if i % 5 == 0:
turtle.forward(20)
move(-radius-20)
else:
turtle.dot(5)
move(-radius)
turtle.right(6)
示例10
def startTick(second_hand, minute_hand, hour_hand, printer):
today = datetime.datetime.today()
second = today.second + today.microsecond * 1e-6
minute = today.minute + second / 60.
hour = (today.hour + minute / 60) % 12
# 设置朝向
second_hand.setheading(6 * second)
minute_hand.setheading(6 * minute)
hour_hand.setheading(12 * hour)
turtle.tracer(False)
printer.forward(65)
printer.write(getWeekday(today), align='center', font=("Courier", 14, "bold"))
printer.forward(120)
printer.write('12', align='center', font=("Courier", 14, "bold"))
printer.back(250)
printer.write(getDate(today), align='center', font=("Courier", 14, "bold"))
printer.back(145)
printer.write('6', align='center', font=("Courier", 14, "bold"))
printer.home()
printer.right(92.5)
printer.forward(200)
printer.write('3', align='center', font=("Courier", 14, "bold"))
printer.left(2.5)
printer.back(400)
printer.write('9', align='center', font=("Courier", 14, "bold"))
printer.home()
turtle.tracer(True)
# 100ms调用一次
turtle.ontimer(lambda: startTick(second_hand, minute_hand, hour_hand, printer), 100)
示例11
def draw_koch(size, depth):
if depth > 0:
for angle in ANGLES:
draw_koch(size / 3, depth - 1)
turtle.left(angle)
else:
turtle.forward(size)
示例12
def draw_snowflake(size):
""" Draw a picture of a snowflake """
turtle.penup()
turtle.forward(10 * size)
turtle.left(45)
turtle.pendown()
turtle.color(generate_random_colour())
# draw branch 8 times to make a snowflake
for _ in range(8):
draw_branch(size)
turtle.forward(size)
turtle.left(45)
turtle.penup()
示例13
def draw_branch(size):
""" Draw an individual branch on a snowflake """
side_branch_size = size / 3
for _ in range(3):
for i in range(3):
turtle.forward(side_branch_size)
turtle.backward(side_branch_size)
turtle.right(45)
turtle.left(90)
turtle.backward(side_branch_size)
turtle.left(45)
turtle.right(90)
示例14
def draw_square(size):
""" Function to draw a square """
turtle.forward(size)
turtle.right(90)
turtle.forward(size)
turtle.right(90)
turtle.forward(size)
turtle.right(90)
turtle.forward(size)
示例15
def hexagon():
for _ in range(6):
turtle.forward(50)
turtle.left(60)
示例16
def square(x, y, size, name):
"""Draw square at `(x, y)` with side length `size` and fill color `name`.
The square is oriented so the bottom left corner is at (x, y).
"""
import turtle
turtle.up()
turtle.goto(x, y)
turtle.down()
turtle.color(name)
turtle.begin_fill()
for count in range(4):
turtle.forward(size)
turtle.left(90)
turtle.end_fill()
示例17
def draw_rectangle(size):
for _ in range(4):
turtle.forward(size)
turtle.left(90)
# --- main ---
# clear everything
示例18
def draw_rectangle(size):
for _ in range(4):
turtle.forward(size)
turtle.left(90)
# --- main ---
# clear everything
示例19
def draw_rectangle(size):
for _ in range(4):
turtle.forward(size)
turtle.left(90)
# --- main ---
# clear everything
示例20
def draw_rectangle(size):
for _ in range(4):
turtle.forward(size)
turtle.left(90)
# --- main ---
# clear everything
示例21
def draw_rectangle(size):
for _ in range(4):
turtle.forward(size)
turtle.left(90)
# --- main ---
# clear everything
示例22
def move():
if running:
t.forward(15)
angle = random.randint(-9, 9) * 10
t.left(angle)
t.ontimer(move, 25) # 25ms
示例23
def forward():
turtle.setheading(90)
turtle.forward(100)
示例24
def backward():
turtle.setheading(270)
turtle.forward(100)
示例25
def left():
turtle.setheading(180)
turtle.forward(100)
示例26
def right():
turtle.setheading(0)
turtle.forward(100)
示例27
def draw():
turtle.forward(50)
turtle.left(30)
turtle.forward(50)
turtle.left(30)
# access to tkinter - tk & root
# instead of standard
# import tkinter as tk
# root = tk.Tk()
示例28
def dragon(level=1, remove_plus_minus=False, width=5):
a = 'FX'
rule = {
'X': 'X+YF+',
'Y': '-FX-Y',
'-': '-',
'+': '+',
'F': 'F',
}
for _ in range(level):
a = ''.join(rule[x] for x in a)
print('len:', len(a))
a = a.replace('X', '').replace('Y','')
print('len without X, Y:', len(a))
if remove_plus_minus:
a = a.replace('+-', '').replace('-+', '')
print('len without -+, +-:', len(a))
for x in a:
if x == 'F':
turtle.forward(width)
elif x == '+':
turtle.right(90)
turtle.color('red')
elif x == '-':
turtle.left(90)
turtle.color('green')
print('OK')
# --- main ---
# clear everything
示例29
def flower(size):
for _ in range(36):
turtle.forward(size)
turtle.left(110)
# --- main ---
# clear everything
示例30
def flower(size):
for _ in range(36):
turtle.forward(size)
turtle.left(110)
# --- main ---
# clear everything