2016-05-08 4 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 - нет абсолютно никакой причины, чтобы любой вопрос SO никогда не начинался: «Я пишу [большой проект]. Вот вся кодовая база». –

ответ

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 'if border 'проверяется, если это None. – co2y

Смежные вопросы