2015-08-24 116 views
0

我一直试图做一个刽子手游戏,如果命令!“刽子手”是iniated,这个代码将执行:的Python - Sikuli与刽子手游戏

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

回答

2

它看起来像有两件事情错了你的类,它是导致它无声无息地死去。当你调用播放函数时,你试图直接调用它,而不是从类的一个实例中调用它。

此外(我可能会脱离基础,因为我仍然在学习Python本身)类中的函数应该至少传递1个参数,通常是自我。

如果你看看下面的例子,你可以看看我是否尝试直接调用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 
>>> 
+0

神圣的废话,非常感谢!我每天都在不断学习! :)它终于有效!太糟糕了,我还不能投票给你。 – SikuliXUser