My game has an error

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • pythonnoob83
    New Member
    • Aug 2010
    • 2

    My game has an error

    I am working on this Questor game.
    I keep getting an error thats posted below.
    I am using Python IDLE 2.6.5
    Someone please help me fix this error and make the game work
    I have spent too much time on it already.

    Thanks

    -----

    Traceback (most recent call last):
    File "G:\Class\Modul e 4\Module 4 SLP\slp project num3.py", line 5, in <module>
    result = Qnode('Phython' );
    NameError: name 'Qnode' is not defined

    Code:
    # define some constants for future use
    
    kQuestion = 'question'
    kGuess = 'guess'
    result = Qnode('Phython');
    
    def yesno(prompt):
        ans = raw_input(prompt)
        return (ans[0]=='y' or ans[0]=='Y')
    
    class Qnode:
        newAnsNode='';
        newanswer = '';
        oldAnsNode = '';
        nodes = {}
        def __init__(self,guess):
            self.nodetype = kGuess
            self.desc = guess
    
    
        def query(self):
            if (self.nodetype == kQuestion):
                return self.desc + " "
            elif (self.nodetype == kGuess):
                return "Is it a " + self.desc + "? "
            else:
                return "Error: invalid node type!"
    
    
        def nextnode(self,answer):
            return self.nodes[answer]
    
    
        def makeQuest( self, question, newitem, newanswer ):
    
    
            newAnsNode = Qnode(newitem)
            newAnsNode.newanswer = newanswer;
            oldAnsNode = Qnode(self.desc)
    
    
            self.nodetype = kQuestion
            self.desc = question
    
            self.nodes = {newanswer:newAnsNode, not newanswer:oldAnsNode}
    
    def traverse(fromNode):
        yes = yesno( fromNode.query() )
    
        if (fromNode.nodetype == kGuess):
            if (yes):
                print "I'm a genius!!!"
               
                return fromNode
    
        return traverse( fromNode.nextnode(yes) )
    
    def run():
        topNode = Qnode('python')
        item = ''
        done = 0
    
        while not done:
            result = traverse( topNode )
    
        if (result):
            item = raw_input("OK, what were you thinking of? ")
            print "Enter a question that distinguishes a",
            print item, "from a", result.desc + ":"
    q = raw_input()
    item = q
    ans = yesno("What is the answer for " + item + "? ")
    result.makeQuest( q, item, ans )
    print "Got it."
    
    print
    done = not yesno("Do another? ")
    print
    
    if __name__ == '__main__':
        run()
        print raw_input("press Return>")
    else:
        print "Module questor imported."
    print "To run, type: questor.run()"
    print "To reload after changes to the source, type: reload(questor)"
  • bvdet
    Recognized Expert Specialist
    • Oct 2006
    • 2851

    #2
    Your error is obvious. "Qnode" is not defined. What is "Qnode" anyway?

    "Qnode" is a class object that is defined later. Make the statement using "Qnode" after the class definition.

    Comment

    Working...