2014-05-16 35 views
-2

这是参考我创建的游戏。这是一个简单的游戏,如果球击中了方块,方块应该消失。如果我做了这样的事情:如何删除一个对象,当有东西碰到它时?

class Block: 
    def __init__(self,canvas,color): 
     self.canvas = canvas 
     self.id = canvas.create_rectangle(10,10,110,20,fill=color) 

然后:

def hit_block(self,pos): 
    block_pos = self.canvas.coords(self.block.id) 
    List = [block_pos] 
    for i in List: 
     if pos[0] >= i[0] and pos[2] <= i[2]: 
      if pos[1] >= i[1] and pos[1] <= i[3]: 
       canvas.delete(block.id) 
       self.score() 
       global a 
       a += 1 
       return True 
    return False 

块没有被删除。 那么当球击中它时你需要做些什么来删除这个块呢?

谢谢!

+1

你是什么意思*“不工作”做*?错误?意外的行为?你用什么来制作用户界面? – jonrsharpe

+0

我正在使用python画布。通过不起作用,我的意思是没有任何反应。球弹起来了,就像它应该的那样,但是球依然在那里。它不会被删除。 – Avinash12388

+0

你的意思是“tkinter帆布”?你是什​​么“进口”?您可能需要“删除(block)”而不是“delete(block.id)”。 – jonrsharpe

回答

0

canvas.delete(block.id)绝对会工作如果block.id是一个有效的代表画布上的对象的ID。如果它不起作用,那么可能不是你认为的那样。

在你的代码的问题是,你正在使用canvas.delete而不是self.canvas.delete,并block.id而不是self.block.id

+0

谢谢,我得到的问题是我必须指定自我。自从我进入Ball课后,我应该写canvas.delete(self.block.id)。 – Avinash12388

相关问题