[Tutor] my text adventure

david din22 at earthlink.net
Wed Nov 30 13:33:47 CET 2005

> You might want to make coords an init parameter for Room, rather than 
> assigning it separately. You could also have Rooms register themselves 
> with world as part of their initialization, that would be better than 
> having to repeat yourself in the definition of world.

brilliant! i'll do that.


>> class Object:
>>     def __init__(self,name):
>>         self.name = name
>>     def getname(self):
>>         return self.name
> Object is not such a great name, it is too easily confused with object, 
> the base class of new-style classes. Maybe Item?
> Right now this class isn't pulling its weight, it could be replaced by a 
> simple string. Presumably you will add more functionality to it; if so 
> it's worth keeping it around, otherwise get rid of it.
> Common Python practice is *not* to define setters and getters, just access 
> the attribute directly - so get maybe you don't need getname>

i just now learned what  setter and getter is.
i did this to make my inventory function work properly.
i'll try to remove my getter.
didn't know we had new-style classes.

>>     def look(self):
>>         print self.location.name
>>     def move(self,direction):
>>         if self.location.exits.has_key(direction):
>>             self.location = self.location.exits[direction]
>>             print self.location.name
>>         else: print 'alas, you cannot go that way'
>>     def dig(self,direction):
>>         lcoords = list(self.location.coords)
> Why do you convert to a list? You can access tuple elements by index.

i need to change the coordinates of the current room to the room i'm
digging into so i can check world to see if that room exists.
there is probably a better way to do all that.

>>         if self.location.exits.has_key(direction):
>>             print 'there is already an exit there'
>>         elif direction == 'n':
>>             ncoords[1] == lcoords[1] + 1
> You probably mean
>             ncoords[1] = lcoords[1] + 1
> but I think I would make ncoords a local variable and just say
>             ncoords = (0, lcoords[1] + 1)
> With ncoords as a global you have a bug, you only set one element here, 
> the other one will be left over from the last time through.
> Kent

i stuck that global up there to make something work. i forget what now.
maybe i should take notes or something :) i'm thinking i should write some 
separate convert directions to coordinates function.
thanks for the thought food and thanks for taking time to look at my code.
version 2 will be along shortly but don't hold your breath :) (because thats 
bad for you)

More information about the Tutor mailing list