Never saw this specific game. Some suggestions on additional factoring out of duplicate code.
def next_page(this_page): print "\n" if this_page == 0: page = 0 return
The following elif switch can be replaced by calling a selection from a list of functions:
[None, page1, pag2, ... page57][this_page]()
elif this_page == 1: page1() return elif this_page == 2: page2() return
...
elif this_page == 57: page57() return
Also, a chose3 function to complement your chose (chose2) function would avoid repeating the choose-from-3 code used on multiple pages.
Terry J. Reedy
This is what I love about this list. Where else is someone going to look at 1200+ lines of code and give you useful advice?! ;) Very cool. (Thanks Terry!)
While we're making suggestions, you might consider writing dice_roll as: def dice_roll(num, sides): return sum(random.randrange(sides) for _ in range(num)) + num for Python 2.4 or def dice_roll(num, sides): return sum([random.randrange(sides) for _ in range(num)]) + num for Python 2.3.
You also might consider writing all the pageX methods in a class, so all your globals can be accessed through self, e.g.:
class Game(object):
def __init__(self):
...
self.page = 1
self.computer_request = 0
... def page2():
print ...
if self.computer_request == 1:
new_clone(45)
else:
new_clone(32)
...You could then have your class implement the iteration protocol:
def __iter__(self):
try:
while True:
self.old_page = self.page
yield getattr(self, "page%i" % page)
except AttributeError:
raise StopIterationAnd then your main could look something like:
def main(args):
...
instructions()
more()
character()
more()
for page_func in Game():
page_func()
print "-"*79Anyway, cool stuff. Thanks for sharing!
Steve -- http://mail.python.org/mailman/listinfo/python-list
