我想做一个小程序,让敌人朝屏幕左边跑去,你必须把他扔掉才能阻止他。我将"敌人"作为分散部件的子类,并将其添加到关卡类中。但它告诉我,我没有太多的缩进。下面是代码:
class Enemy(Scatter):
intv = NumericProperty(0/10.)
gravity = NumericProperty(0.01)
velocity = NumericProperty()
imgp = StringProperty('enemy.png')
def __init__(self, **kwargs):
super(Enemy, self).__init__(**kwargs)
self.My_Clock = Clock# declaring the clock for later usage
self.My_Clock.schedule_interval(self.Update, self.intv)
def Update(self, *args):
self.x -= 1
if self.y > 0:
self.velocity += self.gravity
self.y -= self.velocity
else:
if self.velocity > 0.5:
print 'death'
class level(Widget):
zicie = NumericProperty(10)# the variable containg the life of the player
zloto = NumericProperty(0)
e_killed = NumericProperty(0)
intv1 = NumericProperty(2/1.)
pu = BooleanProperty(True)
def __init__(self, **kwargs):
super(level, self).__init__(**kwargs)
self.l_Clock = Clock
def Update(self, *args):# this funktion generates enemys
pass
#obj = Root.ids.level
#obj.add_widget(Enemy(pos=(500,0))) # the widget enemy is added here
Root = Builder.load_string('''
FloatLayout:
level:
Enemy:
pos: 500,0
<Enemy>:
Image:
pos: root.pos
source: 'enemy.png'
''')
FloatLayout:
level:
Enemy:
Widget名称必须以大写字母开头,因为kv用它来区分属性和Widget。在这种情况下,它可能认为level是一个属性,在这种情况下缩进确实是无效的(尽管正如其他人评论的那样,您应该复制和粘贴错误,以便于确认类似的事情)。