2014-10-31 89 views
0

这是什么错误,因为我有一段时间工作...?Python龟图形没有onkey属性

[CALCULATIONS ABOVE HERE] 

projectile = turtle.Turtle() 

# Default velocity speed 
global velocity 
velocity = 200 

# Increase projectile velocity 
def increase_velocity(): 
    up += 5 
    velocity.up 

# Decrease projectile velocity 
def decrease_velocity(): 
    down -= 5 
    velocity.down() 

# Set key bindings  
projectile.onkey(increase_velocity, "Right") 
projectile.onkey(decrease_velocity, "Left") 

AttributeError的: '海龟' 对象有没有属性 '安其'

+0

我也做了我的功能吗?全球速度是否会在增加/减少的功能中发生变化? – 2014-10-31 03:35:56

+0

'onkey'是'turtle'本身定义的函数。使用'turtle.onkey(...' – Gerrat 2014-10-31 03:38:11

+0

可以帮助我解决全局/局部变量问题,因为我无法正常工作 – 2014-10-31 03:43:41

回答

0

就解决了这个问题我自己。

我不理解推理,但即使弹丸对象继承自龟对象,“弹丸”也不会继承龟模块的所有方法。

当您为对象设置键绑定时,只需使用“onkey”,但您必须在函数中调用该对象的方法,以迫使您在弹丸类中创建方法。例如:

turtle2 = Turtle() 
def move_forward(): 
    turtle2.fd(50) 
onkey(move_forward, "up") 

这也可能是一个使用全局变量的问题。你可能想让速度变成一个类变量。

class projectile(Turtle): 
    velocity = 200 

    def increase_velocity(): 
     up += 5 
     velocity.up 

    def decrease_velocity(): 
     down -= 5 
     velocity.down() 

onkey(projectile.increase_velocity, "Right") 
onkey(projectile.decrease_velocity, "Left") 

我所知道的是,onkey方法只能由turtle模块调用,而不能通过它的类来调用。

希望这会有所帮助!

+0

你的'turtle2'是否真的有效?首先,“up”rasies an错误 - 应该是“上”。但即使纠正这一点,它根本不适用于我。 – Apostolos 2018-01-20 18:30:03