【问题标题】:Python - Sikuli & Hangman GamePython - 斯库里和刽子手游戏
【发布时间】:2015-11-18 11:54:17
【问题描述】:

我一直在尝试制作一个刽子手游戏,如果启动命令“!hangman”,则此代码将执行:

def cmdHangman(event):
    print("!hangman") #this print works
    type("Game: Hangman")
    type(Key.ENTER, Key.SHIFT)
    Hangman.Playing()

Hangman.Playing() 通向:

listOfWords = ["example", "says", "python", "rocks"]
guessWord = random.choice(listOfWords)
board = [" * " for char in guessWord]
alreadySaid = ""

class Hangman():

    def Playing():
        print("Playing") #print not showing
        global guessWord, board, alreadySaid    

        whatplayersaid = hangmanRegion.text()
        hangmanRegion.stopObserver()

        if whatplayersaid in guessWord:
          board = [char if char == whatplayersaid or char in alreadySaid else " * " for char in guessWord]
          board = "".join(board)
          type(board)
          type(Key.ENTER)
        else:
         type("Nope")
         type(Key.ENTER)
        alreadySaid = alreadySaid + whatplayersaid
        Hangman.PlayBuffer()

    def gotoPlaying(event):
        print("gotoPlaying") #print not showing
        Hangman.Playing()

    def PlayBuffer():
        print("PlayBuffer") #print not showing
        wait(1)
        hangmanRegion.onChange(Hangman.gotoPlaying)
        hangmanRegion.observe(FOREVER)

它应该使用hangmanRegion.text() 扫描下一个聊天输入中的字母,因此如果群聊中有人键入:“A”,whatplayersaid 应该等于“A”

奇怪的是,它甚至不起作用。完全没有。 没有错误日志或任何东西。我尝试在class Hangman() 中到处打印,但在日志中没有看到任何打印。

有人能指出我的代码中的缺陷吗?它没有被执行还是 Sikuli IDE 出现故障?还是我真的很累?

输入命令后登录:

!hangman
[log] TYPE "Game: Hangman"

[log] ( Shift ) TYPE "#ENTER."

【问题讨论】:

    标签: python python-2.7 sikuli sikuli-script


    【解决方案1】:

    您的班级似乎有 2 个问题导致它默默地死掉。当您调用 Playing 函数时,您是在尝试直接调用它,而不是从类的实例中调用它。

    另外(我可能对这个不太了解,因为我自己还在学习 python)类中的函数应该至少传递 1 个参数,通常是 self。

    如果您查看下面的示例,您可以看到我是否尝试直接调用 Hangman.Playing(),我会收到关于它不是实例的错误。

    如果我创建一个实例 x 并从中调用它,打印语句将成功执行。

    Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> class Hangman:
    ...     def Playing(self):
    ...             print "Playing"
    ...
    >>> Hangman.Playing()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unbound method Playing() must be called with Hangman instance as     first argument (got nothing instead)
    >>> x = Hangman()
    >>> x.Playing()
    Playing
    >>>
    

    【讨论】:

    • 天哪,非常感谢!我每天都在学习! :) 它终于奏效了!太糟糕了,我还不能投票给你。
    猜你喜欢
    • 2014-10-19
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多