首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python - Sikuli & Hangman游戏

Python - Sikuli & Hangman游戏
EN

Stack Overflow用户
提问于 2015-08-24 22:31:41
回答 1查看 108关注 0票数 0

我一直在尝试制作一个刽子手游戏,如果命令"! hangman“是错误的,这段代码将执行:

代码语言:javascript
复制
def cmdHangman(event):
    print("!hangman") #this print works
    type("Game: Hangman")
    type(Key.ENTER, Key.SHIFT)
    Hangman.Playing()

其中,Hangman.Playing()导致:

代码语言:javascript
复制
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出现故障?还是我真的累了?

键入命令后登录:

代码语言:javascript
复制
!hangman
[log] TYPE "Game: Hangman"

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-24 23:08:05

看起来,您的类有两个错误,导致它安静地死去。当您调用class函数时,您试图直接调用它,而不是从类的实例中调用它。

另外(而且我可能还没有掌握这个函数,因为我自己还在学习python )类中的函数应该至少传递一个参数,通常是self。

如果查看下面的示例,可以看到如果我尝试直接调用Hangman.Playing(),就会发现它不是一个实例的错误。

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

代码语言:javascript
复制
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
>>>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32192794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档