Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-

Text adventure

Name: Anonymous 2011-08-20 19:09

I'm thinking about writing a text adventure similar to Colossal Cave Adventure and Rogue. It'll probably take place in a mansion  or something where all the rooms are randomly generated and populated with predefined and dynamically generated items and furniture, the properties of which will determine how the player can interact with them, and then have generic functions to handle the interaction.

I experimented with classes and inheritance before settling on a simple data structure:

#!/usr/bin/env python

# items

desk_key = {
    'name': 'desk key',
}

shoe_box = {
    'name': 'shoe box',
    'in': [
        desk_key,
    ],
}

desk_lamp = {
    'name': 'desk lamp',
}

wizard_book = {
    'name': 'Wizard Book',
    'in': [
        {
            'name': 'Satori',
        },
    ],
}

# furniture

bed = {
    'name': 'bed',
    'on': [
        {'name': 'bedding'},
    ],
    'under': [
        shoe_box,
    ],
}

desk = {
    'name': 'desk',
    'is_closed': True,
    'is_locked': True,
    'locks_with': desk_key,
    'on': [
        desk_lamp,
    ],
    'in': [
        wizard_book,
    ],
}

# rooms

bedroom = {
    'name': 'bedroom',
    'in': [
        bed,
        desk,
    ],
}

# funcs

def examine(thing):
    for position in ['on', 'in', 'under']:
        if position in thing:
            names = [other['name'] for other in thing[position]]
            print '%s the %s you find: %s' % (position, thing['name'],
                                              ', '.join(names))
            for other in thing[position]:
                examine(other)

if __name__ == '__main__':
    for room in [bedroom]:
        examine(room)


This simple script defines a room, the objects within, and simple function that explores the room and describes it in plain English:

in the bedroom you find: bed, desk
on the bed you find: bedding
under the bed you find: shoe box
in the shoe box you find: desk key
on the desk you find: desk lamp
in the desk you find: Wizard Book
in the Wizard Book you find: Satori


Writing functions to parse user commands and handle interaction with the game world should be trivial. Then the game can be expanded simply by defining rooms, object, NPCs, enemies, etc.

Name: Anonymous 2011-08-20 19:12

u mena "rouge"

Name: Anonymous 2011-08-20 19:15

in other words, good luck. I cant say anything constructive because of inebriation. but yeah, FIOC.

Name: Anonymous 2011-08-20 19:17

YEAH, FIOC !

Name: Anonymous 2011-08-21 1:14

>>1
This is going to become unwieldy when you will eventually and inevitably need to perform actions on sets of items.

Name: Anonymous 2011-08-21 1:45

Hey, I didn't realize FIOC had js-like literals.

It really is an attractive language.

Don't change these.
Name: Email:
Entire Thread Thread List