【发布时间】:2012-10-08 12:54:35
【问题描述】:
我在 Python 3 中使用 Turtle Graphics 创建了一个程序,用于绘制美国国旗:
import turtle
import time
import random
def draw_rectangle(length, height):
turtle.up()
x = -150
y = 150
C = height*(7/13)
D = length*(2/5)
L = stripe_width = float(round(height/13,1))
## Draw rectangle first.
turtle.color(0,0,0)
turtle.begin_fill()
turtle.setpos(x,y)
turtle.down()
turtle.forward(length)
turtle.right(90)
turtle.forward(height)
turtle.right(90)
turtle.forward(length)
turtle.right(90)
turtle.forward(height)
turtle.end_fill()
## Then draw the stripes.
x1 = -150
y1 = 150-L
for z in range(13):
if z%2 == 0:
r = s = t = 0
else:
r = s = t = 1
turtle.up()
turtle.speed(100)
turtle.setpos(x1,y1)
turtle.setheading(90)
turtle.down()
turtle.color(r,s,t)
turtle.begin_fill()
turtle.forward(L)
turtle.right(90)
turtle.forward(length)
turtle.right(90)
turtle.forward(L)
turtle.right(90)
turtle.forward(length)
turtle.end_fill()
y1 -= L
## Finally draw the stars rectangle overlapping the stripes, next is stars.
x2 = -150+D
y2 = 150.5-C
turtle.up()
turtle.setpos(x2,y2)
turtle.down()
turtle.color(0,0,0)
turtle.begin_fill()
turtle.forward(D)
turtle.right(90)
turtle.forward(C)
turtle.right(90)
turtle.forward(D)
turtle.right(90)
turtle.forward(C)
turtle.end_fill()
turtle.up()
turtle.bye
draw_star(-length, height)
def draw_star(l, h):
for z in range(50):
if z < 7:
row = 140
draw_starrows(row)
if z < 14:
row = row - 20
draw_starrows(row)
if z < 21:
row = row - 20
draw_starrows(row)
if z < 28:
row = row - 20
draw_starrows(row)
if z < 35:
row = row - 20
draw_starrows(row)
## This gets the turtle pen out of the way at the very end.
turtle.up()
turtle.setpos(-180,100)
break
def draw_starrows(row):
x = -160
y = 150
for z in range(10):
x += 15
turtle.up()
turtle.color(1,1,1)
turtle.speed(100)
turtle.setpos(x,row)
turtle.begin_fill()
turtle.down()
turtle.forward(6.154)
turtle.left(144)
turtle.forward(6.154)
turtle.left(144)
turtle.forward(6.154)
turtle.left(144)
turtle.forward(6.154)
turtle.left(144)
turtle.forward(6.154)
turtle.left(144)
turtle.end_fill()
turtle.bye
##def get_color():
## r = g = b = 0
## color = r = g = b
## return color
def draw_flag():
A = 200
height = int(A)
## length = height*1.9
## C = height*(7/13)
## D = length*(2/5)
## E = F = union_height/10
## G = H = union_length/12
## stripe_width = height/13
## diameter_star = stripe_width*(4/5)
draw_rectangle(height*1.9, height)
draw_flag()
现在对于最后一步,我想用一个函数 def get_color(color) 替换所有的 turtle.color(0,0,0) 和 (1,1,1),但是,我我对如何做到这一点有点困惑。其他需要用到颜色函数的函数有:
draw_rectangle(长度、高度、颜色) draw_star(l, h, color)
我也不想使用任何全局变量。
哦,我无法解决的另一件事是为什么我的图形窗口在您运行程序时没有关闭,我在适当的地方使用了 turtle.bye()(我认为),但我总是必须手动关闭乌龟窗口。
任何帮助将不胜感激,谢谢。
2015 年 3 月编辑:
这是更新后的 get_color 解决方案:
def get_color(color2):
## If color2 equals 1, then make the color white.
if color2 == 1:
r = g = b = 1
return (r, g, b)
## If color2 equals 0, then make the color red.
if color2 == 0:
r = 1
g = 0
b = 0
return (r, g, b)
## If color2 equals 2, then make the color black.
if color2 == 2:
r = 0
g = 0
b = 1
return (r, g, b)
【问题讨论】:
-
您希望代码是什么样的?我不确定你用
get_color(color)替换所有turtle.color(0,0,0)是什么意思。 -
哦,对不起,我的意思不是手动输入颜色 (0,0,0) 和 (1,1,1) 我想要一个函数将它们预定义为一个变量,然后将该变量分配给海龟.color()
-
我已经编辑了我的答案。这有帮助吗?
标签: python function turtle-graphics