2016-07-13 2 views
-1

Я кодирование простой игры, и я имею следующие проблемы:метод класса не работает в коде

if pidgeon.rect.y > 360: 

    pygame.mixer.music.stop() 
    pidgeon.electrocute() 
    electrocute.play() 
    time.sleep(2) 
    showGameOverScreen(score, total_score) 

Метод, который не работает на:

pidgeon.electrocute() 

Что необходимо сделать следующий:

def electrocute(self): 
    self.image=pygame.image.load(r"electrocuted_pidgeon.png").convert() 
    self.image.set_colorkey((255,255,255)) 

Но вместо изменения изображения пиджона при воспроизведении звука с электротоком. Он просто ждет 2 секунды, пока играет звук электрошока, а затем переходит на экран игры. Почему это не меняет образ?

Я пробовал в других частях кода (например, при нажатии на полосу пробела он должен меняться, и это так), поэтому изображение может измениться.

Я использую pygame в python 2.7, на всякий случай.

+0

Я не знаком с pygame (вообще), но я думаю, что вызов 'time.sleep' - это, вероятно, плохая идея. См. [Этот вопрос] (например, http://stackoverflow.com/questions/33932722/how-to-use-time-sleep-in-pygame). –

+0

Спасибо, я буду искать альтернативу. –

+0

определите свой метод перед оператором 'if' и попробуйте, а также попробуйте с небольшим удалением в методе типа' print («something») ' –

ответ

0

попытайтесь назвать это следующим образом. это небольшой пример, основанный на пользовательском значении ввода.

class fly: 
    def mymethod(self): 
     print("canada") 

def testmethod(): 
    print("this should be greater") 

for i in range(0,3): 
    userInput = int(input("Enter any number :")) 

    if(userInput > 5): 
     print("greater") 

    else: 
     testmethod() 
     s = fly() 
     s.mymethod() 
+0

Спасибо за ваши ответы, но до сих пор ничего не получилось, python все еще запускает сон (pygame.delay, pygame .wait) перед изменением изображения. –