到目前为止,我已经设置了一种etchi-sketch风格的程序,它在按键上移动一定距离并使用onkey功能改变颜色。但是,我希望通过将其分配给另一个键(例如“space”)来填写您使用该程序绘制的内容。因此,当执行“空间”时,它将填写我所绘制的内容,例如一个正在使用我正在使用的颜色的正方形。空格键已被定义为停止绘图,但我也希望它也执行填充命令。
提前致谢。
screen_size = 600
setup(screen_size, screen_size)
maximum_coord = (screen_size/2) - 20
bgcolor("white")
goto(0,0)
speed = 5
pensize(3)
color("red")
pendown()
# Listen for the key presses
listen()
# Define all the functions that will control forward, back, left and right
def up():
if ycor() < maximum_coord:
setheading(90)
forward(speed)
def down():
if ycor() > -maximum_coord:
setheading(270)
forward(speed)
def left():
if xcor() > -maximum_coord:
setheading(180)
forward(speed)
def right():
if xcor() < maximum_coord:
setheading(0)
forward(speed)
def undo_move():
undo()
#Define space bar to make the pen go up and therefore stop drawing
current_state = penup
next_state = pendown
def space_bar():
global current_state, next_state
next_state()
current_state, next_state = next_state, current_state
#Define colours when keys are pressed
def red():
color("red")
def green():
c olor("green")
def blue():
color("blue")
#Define space bar to make the pen go up and therefore stop drawing
current_state = penup
next_state = pendown
def space_bar():
global current_state, next_state
next_state()
current_state, next_state = next_state, current_state
# Define the function to clear all the currently drawn lines on the page,
# but keep the turtle in the same position
def clear_drawing():
clear()
# Define all the functions that will control forward, back, left and right
s= getscreen()
s.onkey(up,"Up")
s.onkey(down,"Down")
s.onkey(left,"Left")
s.onkey(right,"Right")
s.onkey(space_bar,"space")
s.onkey(red,"r")
s.onkey(green,"g")
s.onkey(blue,"b")
s.onkey(undo_move,"z")
s.onkey(clear_drawing, "c")
done()
答案 0 :(得分:0)
Turtle
中有两个名为begin_fill()
和end_fill()
的函数,它们填充Turtle
以Turtle
所颜色跟踪的任何形状。棘手的是区分何时到begin_fill()
或何时到end_fill()
。
有很多方法可以做到这一点(例如,在按下键时更改变量布尔值)但是为了简单起见,我将向您展示如何使用计数器。
首先将pendown()
更改为penup()
global counter
counter = 0
def space_bar():
global counter
counter = counter + 1
if counter % 2 != 0:
pendown()
begin_fill()
else:
penup()
end_fill()
此功能可以在按下时切换进出功能,也可以填写Turtle
中跟踪的任何形状。
修改:摆脱其中一个space_bar()
并用此代码替换一个以获得结果。