我已经为一个俄罗斯方块应用程序编写了一段时间的代码,该应用程序可以使块一个接一个地系统地落下,并且不会相互重叠。我已经想出了这个代码,但不断得到一个错误,说我的小部件类已经有了父类。请帮帮忙
#Block 1 - 5 are stated above
class Block6(Widget):
vel_x = NumericProperty(0)
vel_y = NumericProperty(-5)
position = ReferenceListProperty(vel_x,vel_y)
def fall(self, pos):
self.pos = Vector(self.position) + self.pos
if self.pos[1]==0:
self.position[1] = 0
class TetrisApp(App):
def build(self):
game = TetrisGame()
x = Window.width
block1 = Block1(pos=(randint(0,x),Window.height))
block2 = Block2(pos=(randint(0,x),Window.height))
block3 = Block3(pos=(randint(0,x),Window.height))
block4 = Block4(pos=(randint(0,x),Window.height))
block5 = Block5(pos=(randint(0,x),Window.height))
block6 = Block6(pos=(randint(0,x),Window.height))
allblocks = (block1, block2, block3, block4, block5, block6)
while game:
blockchoice = randint(1,6)
if blockchoice == 1:
game.add_widget(block1)
Clock.schedule_interval(block1.fall,1/60)
for i in allblocks:
if block1.collide_widget(i):
block1.position[1] = 0
elif blockchoice == 2:
game.add_widget(block2)
Clock.schedule_interval(block2.fall,1/60)
for i in allblocks:
if block2.collide_widget(i):
block2.position[1] = 0
elif blockchoice == 3:
game.add_widget(block3)
Clock.schedule_interval(block3.fall,1/60)
for i in allblocks:
if block3.collide_widget(i):
block3.position[1] = 0
elif blockchoice == 4:
game.add_widget(block4)
Clock.schedule_interval(block4.fall,1/60)
for i in allblocks:
if block4.collide_widget(i):
block4.position[1] = 0
elif blockchoice == 5:
game.add_widget(block5)
Clock.schedule_interval(block5.fall,1/60)
for i in allblocks:
if block5.collide_widget(i):
block5.position[1] = 0
elif blockchoice == 6:
game.add_widget(block6)
Clock.schedule_interval(block6.fall,1/60)
for i in allblocks:
if block6.collide_widget(i):
block6.position[1] = 0
else:
print('this is not possible')
return game
if __name__ == '__main__':
TetrisApp().run()
我真的非常感谢任何关于错误来源的帮助
俄罗斯方块游戏
一共有七只河豚。在任何时候,只有一个泰特罗米诺坠落。请参考建议/片段
片段
解决方案-WidgetException:无法添加。。。它已经有了一个父对象
在添加每个块之前,需要检查每个块是否存在
片段
相关问题 更多 >
编程相关推荐