Python游戏不起作用

时间:2016-05-08 18:40:24

标签: python-3.x tkinter tkinter-canvas

我的游戏存在问题,我认为是导致问题的功能

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

Line“if self.canvas.coords(self.Oball)[0]&lt; = 0:”返回错误并导致游戏崩溃。 我也在Eatball功能中遇到问题。 在该函数中,变量self.PlayerWon不会在每次吃球时增加。 我是编码的菜鸟,所以代码可能很乱 请帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

原因

  

线“如果self.canvas.coords(self.Oball)[0]&lt; = 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__方法中。