[Tutor] Picking up Item()s
Britt Green
cheshire_cat_sf@yahoo.com
Sun, 17 Feb 2002 16:31:00 -0800 (PST)
I have the following code for a very very simple text adventure. Right
now a player can move around a few rooms and there are a couple of
objects in the room that one should be able to pick up.
Unfortunately I'm stuck on this point: When a player enters a room it
doesn't say "This room contains a key." Instead it says "This room
contains [<__main__.Item instance at 0x00AC5320>]". How can I make it
so that it displays the name of the Item. Furthermore, I'd want the
player to be able to type "get key" to pick up the key, not
"__main__.Item instance at 0x00AC5320". How could I do this?
Britt
import sys
import string
class Room:
def __init__(self, name):
self.name = name
self.items = []
def createExits(self, exits):
self.exits = exits
def itemsInRooms(self, item):
self.items.append(item)
class Item:
def __init__(self, name):
self.name = name
self.inPosses = 0
areas = ['porch', 'foyer', 'bathroom', 'mid_stairs', 'living',
'hallway']
rooms = []
for n in areas:
rooms.append(Room(n))
rooms[0].createExits({'e':1})
rooms[1].createExits({'e':5, 'w':0})
rooms[2].createExits({'s':5})
rooms[3].createExits({'n':5})
rooms[4].createExits({'w':5})
rooms[5].createExits({'e':4, 'n':2, 's':3, 'w':1})
items = ['key', 'door']
things = []
for n in items:
things.append(Item(n))
rooms[0].itemsInRooms(things[0])
rooms[1].itemsInRooms(things[1])
playLoc = 0
words = ['n','s','e','w','q','get']
command = []
while 1:
command = string.split(raw_input("--> "))
if command[0] not in words:
print "Come again?"
else:
if command[0] == 'q':
sys.exit(1)
elif command[0] in ['n','s','e','w']:
if rooms[playLoc].exits.has_key(command[0]):
playLoc = rooms[playLoc].exits.get(command[0])
print "You find yourself in the " + rooms[playLoc].name
print "You can move ", rooms[playLoc].exits.keys()
if len(rooms[playLoc].items) != 0:
print "This room contains ", rooms[playLoc].items
else:
print "Your path is blocked."
else:
if command[1] in rooms[playLoc].items.name:
print "You picked up the", command[1]
for i in range(len(rooms[playLoc].items)):
print i
## print rooms[playLoc].items[command[1]]
## print things[i].name
rooms[playLoc].items.remove(command[1])
else:
print "That item isn't in here!"
=====
"The ocean, she is strange and wondrous, filled with animals that disturb even a Frenchman."
__________________________________________________
Do You Yahoo!?
Yahoo! Sports - Coverage of the 2002 Olympic Games
http://sports.yahoo.com