2016-05-08 88 views
-1

我有我的游戏的一个问题是在这里,我认为是造成问题Python的游戏不工作

def move(self): 

     self.canvas.move(self.Oball,self.move_x,0) 
     if self.canvas.coords(self.Oball)[0] <= 0: 
      self.move_x = 1 
     elif self.canvas.coords(self.Oball)[2] >= 700: 
      self.move_x = -1 



def EatBall(self): 

    if self.canvas.coords(self.ball) == self.canvas.coords(ball1.Oball): 
     canvas.delete(ball1.Oball) 
     self.PlayerWon += 1 

    elif self.canvas.coords(self.ball) == self.canvas.coords(ball2.Oball): 
     canvas.delete(ball2.Oball) 
     self.PlayerWon += 1 

    elif self.canvas.coords(self.ball) == self.canvas.coords(ball3.Oball): 
     canvas.delete(ball3.Oball) 
     self.PlayerWon += 1 

    if self.PlayerWon == 3: 
     time2 = time() 
     TimeItTook = time2 - self.time1 
     canvas.create_text(350,100,text="You Won",font=("Arial",22)) 
     canvas.create_text(350,200,text="It took you %s seconds to eat all the balls" % int(TimeItTook),font=("Arial",18)) 
     self.PlayerWon = 10 

行“的功能,如果self.canvas.coords(self.Oball)[0] < = 0:“正在返回一个错误,并导致游戏崩溃。 另外我在Eatball功能中遇到问题。 在函数中,变量self.PlayerWon在每次吃球时都不会增加。 我在编码所以小白代码可能是混乱 请帮我解决这个问题

+0

请阅读http://stackoverflow.com/help/mcve - 绝对没有理由说任何问题都应该开始,“我正在写一个[大型项目],下面是整个代码库。” –

回答

0

的原因

行“,如果self.canvas.coords(self.Oball)[0] = < 0:”返回一个错误 ,它会导致游戏崩溃

是被吃掉了一个球之后,self.canvas.coords(self.Oball)返回None,那么这将提高index out of range例外

所以你可以改变你的代码,这样

border = self.canvas.coords(self.Oball) 
if border and self.canvas.coords(self.Oball)[0] <= 0: 
    self.move_x = 1 
elif border and self.canvas.coords(self.Oball)[2] >= 700: 
    self.move_x = -1 

和你说

变量self.PlayerWon不增加每一个球 吃

因为每次时间它分配给0,所以你应该把self.PlayerWon = 0__init__方法。

+0

感谢您修复我的程序,但我不完全明白您是如何修复它的。你所做的只是添加一个边界变量,并检查它是否为0索引值小于或等于0.请你解释为什么这个代码工作 – Crafterguy

+0

@Crafterguy'如果边界'检查,如果它是无。 – co2y