簡體   English   中英

Python-Sikuli和Hangman游戲

[英]Python - Sikuli & Hangman Game

我一直在嘗試制作a子手游戲,如果啟動“!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."

看來您的班級有兩件事是導致班級無聲地死亡。 當您調用Playing函數時,您嘗試直接調用它,而不是從類的實例中調用它。

另外(而且我可能還不喜歡這個,因為我仍在學習python我自己),一個類中的函數應該傳遞至少1個參數,通常是self。

如果您看下面的示例,可以看到我是否嘗試直接調用Hangman.Playing(),但出現錯誤,因為它不是實例。

相反,如果我創建一個實例x並從中調用它,則print語句成功執行。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM