[Tutor] results not quite 100 percent yet

Jeff Younker jeff at drinktomi.com
Thu Feb 21 18:36:20 CET 2008


Here is a strict translation of your code.  The algorithm remains the  
same,  but
it has been cleaned up a bit.  Duplications have been removed, and the  
various
logical bits have been broken down into separate functions.

I suspect you don't know about random.randint(low, high).  It  
generates random
integers between the low and high inclusively.  E.g. random.randint(0,  
1)
will generate either 0 or 1.


import random

entrance = 6
exit = 11
death_room = 13

low_treasure_value = 10
high_treasure_value = 110

treasure_rooms = 3
monster_rooms = 4

table= [[ 0, 2, 0, 0, 0, 0, 0],
        [ 1, 3, 3, 0, 0, 0, 0],
        [ 2, 0, 5, 2, 0, 0, 0],
        [ 0, 5, 0, 0, 0, 0, 0],
        [ 4, 0, 0, 3,15,13, 0],
        [ 0, 0, 1, 0, 0, 0, 0],
        [ 0, 8, 0, 0, 0, 0, 0],
        [ 7,10, 0, 0, 0, 0, 0],
        [ 0,19, 0, 0, 0, 8, 0],
        [ 8, 0,11, 0, 0, 0, 0],
        [ 0, 0,10, 0, 0, 0, 0],
        [ 0, 0, 0,13, 0, 0, 0],
        [ 0, 0,12, 0, 5, 0, 0],
        [ 0,15,17, 0, 0, 0, 0],
        [14, 0, 0, 0, 0, 5, 0],
        [17, 0,19, 0, 0, 0, 0],
        [18,16, 0,14, 0, 0, 0],
        [ 0,17, 0, 0, 0, 0, 0],
        [ 9, 0, 0,16, 0, 0, 0]]


def distribute_treasure(table, number_pieces):
       for x in range(0, number_pieces):
           place(table, random_treasure())

def distribute_monsters(table, number_monsters):
      for x in range(-number_monsters, 0):
           place(table, x)

def place(table, item):
      table[any_available_room(table)][6] = item

def any_available_room(table):
      room = random_room(table)
      while not is_available(table, room):
          room = random_room(table)
      return room

def random_room(table):
      return random.randint(0, len(table)-1)

def is_available(table, room):
      if room in [entrance, exit, death_room]:
          return False
      elif table[room][6] != 0:
          return False
      else:
          return True

def random_treasure():
       return random.randint(low_treasure_value, high_treasure_value)

distribute_treasure(table, treasure_rooms)
distribute_monsters(table, monster_rooms)

for x in table:
     print x


-jeff

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20080221/7e946610/attachment-0001.htm 


More information about the Tutor mailing list