Luke Jordan wrote:
Hi -

I'm working on a command-line game. Is there anything wrong with
having each 'chapter' of the game be a function that links to other
chapters by calling them? I only ask because when a recent traceback
returned about 40 lines worth of error message, I realized that the
functions are all being run 'within each other' (ah-ha!).

Technically it's OK but conceptually it isn't really right. After all, when you finish a chapter you don't go back to the chapter you came from!


I would use a central dispatcher. Each chapter function could return a token indicating which chapter is next, or it could return the actual next chapter function.

Here is a simple example:

#########

def dispatch(chapter):
    while chapter is not None:
        chapter = chapter()

def chapter1():
    print 'This is chapter 1'
    raw_input('Press return to continue')
    return chapter2

def chapter2():
    print 'You see a heffalump.'
    yn = raw_input('Do you kill the heffalump? ')
    if yn == 'y':
        return chapter3
    else:
        return chapter4

def chapter3():
    print 'The heffalump is dead. Congratulations, you win!'
    return None

def chapter4():
    print 'The heffalump kills you and eats you.'
    print 'You have died!'
    return None

dispatch(chapter1)

#############

Kent

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to