i added a list of rooms and rooms.append(self) to
the Room initialization.
then i run my program and create one room. there
should now be two rooms.
when i look at rooms i have three rooms! where did
this other room come from?
anyway, thanks for taking time to look at my code.
import sys
import string import pickle import os.path world = {}
rooms = [] class Room: def __init__(self,coords): self.contents = [] self.description = '' self.coords = coords world[tuple(coords)] = self rooms.append(self) self.exits = {} def nextdoor(self,direction): if direction == 'n': nextdoor = (self.coords[0], self.coords[1] + 1) return list(nextdoor) elif direction == 's': nextdoor = list((self.coords[0], self.coords[1] - 1)) return nextdoor elif direction == 'e': nextdoor = list((self.coords[0] +1, self.coords[1])) return nextdoor elif direction == 'w': nextdoor = (self.coords[0] -1, self.coords[1]) return list(nextdoor) class Player:
def __init__(self,name): self.name = name self.location = None self.inventory = [] self.wielded = None def look(self): print self.location.coords print self.location.description def
move(self,direction):
type(direction) if self.location.exits.has_key(direction): self.location = self.location.exits[direction] else: print 'alas, you cannot go that way' def wield(self,what): self.wielded = what def wear(self,what): pass def take(self,what): pass def drop(self,what): pass def dig(self,direction): target = tuple(self.location.nextdoor(direction)) print target if self.location.exits.has_key(target): print 'there is already an exit to that room' elif world.has_key(target): print 'already a room there, attempt to make exits' self.location.exits[direction] = Room(target) world[target].exits[opdir(direction)] = self.location else: world[target]=Room(target) self.location.exits[direction] = Room(target) world[target].exits[opdir(direction)] = self.location def describeroom(self): self.location.description = raw_input('>>') def save(self): f = open('savefile', 'w') pickle.dump(world,f) f.close() def do(self): cmd = string.split(raw_input('>')) verb = cmd[0] if len(cmd) > 1: target = cmd[1] if verb == 'l': self.look() elif verb in ['n','s','e','w']: self.move(verb) elif verb == 'quit': sys.exit() elif verb == 'i': for a in self.inventory: print a.name elif verb == 'dig': self.dig(target) elif verb == 'dr': self.describeroom() elif verb == 'save': self.save() else: print 'what?' class Thing:
def __init__(self,name): self.name = name def opdir(direction): if direction == 'n': return 's' if direction == 's': return 'n' if direction == 'e': return 'w' if direction == 'w': return 'e' p = Player('david') room1 = Room([0,0]) p.location = room1
sword = Thing('sword') hat = Thing('hat') p.inventory.append(sword) p.inventory.append(hat) if os.path.isfile('savefile'):
f = open('savefile','r') world = pickle.load(f) f.close() while 1: p.do() else: while 1: p.do() |
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor