0

これまでのところ、キーを押すと特定の距離を移動し、onkey 関数を使用して色を変更する、一種のエッチング スケッチ スタイルのプログラムをセットアップしました。ただし、「スペース」などの別のキーに割り当てて、プログラムで描画したものを埋めたいと思います。したがって、「スペース」が実行されると、現在使用している色の正方形など、描画したものが塗りつぶされます。スペースバーはすでに描画を停止するように定義されていますが、塗りつぶしコマンドも実行したいと思います。

前もって感謝します。

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()
4

1 に答える 1

0

Turtle呼び出されbegin_fill()た関数と、色でトレースされたend_fill()形状を塗りつぶす関数が 2 つあります。注意が必要なのは、いつからか、いつからかを区別することです。TurtleTurtlebegin_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

編集:他の1つを取り除き、1space_bar()つをこのコードに置き換えて結果を取得します。

于 2013-04-15T10:36:08.883 に答える