1

Hey Guys 私は uni の割り当てを行っており、ユーザーがスペース キーを使用して 2 つのモードを切り替えることができる塗り絵を作成する必要があります。最初のモードでは、ユーザーは線を描画せずにタートルを移動できる必要があり、2 番目のモードでは、ユーザーが描画できるペイント ブラシ モードを開始する必要があります。スペースボタンを押すとタートルが機能します。何か案は?

これは私がこれまでに持っているものです:

from turtle import *
bgpic("Colour_A_Turkey.gif") # change this to change the picture

# PUT YOUR CODE HERE
setup(800,600)
home()
pen_size = 2
color("red")
title("Colouring Book")
speed("fastest") # Doesn't make any difference to accuracy, just makes turtle turn animation faster.
drawdist=10 # Distance in pixels pen travels when arrow key is pressed

penup()
###################BUTTON INSTRUCTIONS########################
def move_up():
        seth(90)
        forward(drawdist)

def move_down():
        seth(270)
        forward(drawdist)

def move_left():
        seth(180)
        forward(drawdist)

def move_right():
        seth(0)
        forward(drawdist)

def space_bar():

        if isdown()==True:
                penup()

        if isdown()==False:
                       pendown()
####Change pen color####
def red():
        color("red")

def green():
        color("green")

def blue():
        color("blue")


################BUTTON TRIGGERS##################
s= getscreen()

s.onkey(move_up,"Up")

s.onkey(move_down,"Down")

s.onkey(move_left,"Left")

s.onkey(move_right,"Right")

s.onkey(space_bar,"space")

s.onkey(red,"r")

s.onkey(green,"g")

s.onkey(blue,"b")

listen()

done()
4

3 に答える 3

1

space_bar が呼び出されると、 isdown() は常に true になります。
スペースバーが押されたときだけトグルまたは描画しますか?

切り替えたい場合は、次のことができます。

current_state = penup
next_state = pendown
def space_bar():
    global current_state, next_state
    next_state()
    current_state, next_state = next_state, current_state
于 2013-04-08T06:26:50.930 に答える
1
from itertools import cycle

funcs = cycle([f1, f2])
next(funcs)() # alternates
于 2013-04-08T08:36:10.117 に答える
0

これは、ペンアップとペンダウンを切り替える方法です。

up = False

def pen_up():

    global up
    up = not up
    if up:
        t.penup()
    else:
        t.pendown()

ts.onkey(pen_up, 'space')
于 2013-05-17T23:24:53.613 に答える