2013-04-08 135 views
1

嘿,伙计们我正在为uni做一件事,我必须制作一本使用户可以使用空格键在两种模式之间切换的着色书。在第一种模式下,用户必须能够移动龟画出任何线条,第二种模式必须启动用户可以绘制的画笔模式。我希望能够在penup()和pendown()之间切换,当按下空格按钮时龟会起作用。有任何想法吗?当使用Python按键时在功能之间切换功能

这是我到目前为止有:

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() 
+0

刚才编辑原来的问题 – 2013-04-08 06:23:15

回答

1

当space_bar被调用,isdown()总是真。
是否仅当空格键被按下时才切换或绘制?

如果你想切换,这里是你可以做什么:

current_state = penup 
next_state = pendown 
def space_bar(): 
    global current_state, next_state 
    next_state() 
    current_state, next_state = next_state, current_state 
+0

我只想移动龟和绘画方式请 – 2013-04-08 06:52:34

+0

谢谢老兄现在的工作希望我能投你了,但我没有足够的代表:( – 2013-04-08 07:03:28

+0

快乐之间切换我也是新来的,但我认为你可以将它标记为你的问题的答案或其他什么... – avrahamy 2013-04-08 07:25:14

1
from itertools import cycle 

funcs = cycle([f1, f2]) 
next(funcs)() # alternates 
0

这是你的笔了与落笔之间如何切换。

up = False 

def pen_up(): 

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

ts.onkey(pen_up, 'space')