我的游戏存在问题,我认为是导致问题的功能
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不会在每次吃球时增加。 我是编码的菜鸟,所以代码可能很乱 请帮我解决这个问题
答案 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__
方法中。