【问题标题】:class method not running inside the code类方法不在代码中运行
【发布时间】:2016-07-13 11:56:20
【问题描述】:

我正在编写一个简单的游戏,但我遇到了下一个问题:

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))  

但不是改变 pidgeon 图像,而是播放电击声音。它只是等待 2 秒,同时播放电刑声音,然后进入游戏结束屏幕。为什么它不改变图像?

我已经在代码的其他部分尝试过(例如,当按下条形空间时它应该改变,并且确实如此),所以图像可以改变。

我在 python 2.7 中使用 pygame,以防万一。

【问题讨论】:

  • 我不熟悉 pygame(一点也不),但我认为调用 time.sleep 可能是个坏主意。例如,请参阅this question
  • 谢谢,我会寻找替代方案。
  • if 语句之前定义你的方法并尝试,并尝试在print("something") 等方法中使用小输出
  • 该方法是之前定义的,在 Pidgeon 类内部。
  • 你必须先创建一个类的实例,然后才能调用类内部的方法。我将添加一个小例子

标签: python python-2.7 pygame


【解决方案1】:

试着这样称呼它。这是一个基于用户输入值的小例子。

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()

【讨论】:

  • 感谢您的回答,但到目前为止,没有任何效果,python 在更改图像之前仍在运行 sleep(pygame.delay, pygame.wait)。
猜你喜欢
  • 2019-01-15
  • 2015-03-05
  • 2011-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多