hello again. i think my dig function is working
correctly now.
any input on how to save and restore all the rooms
and descriptions?
thanks for helping.
import sys
import string world = {}
class Room:
def __init__(self,coords): self.contents = [] self.description = '' self.coords = coords world[tuple(coords)] = 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 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() 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) while 1: p.do() |
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor