On Mon, June 18, 2007 8:57 pm, Jonah Fishel wrote: >> I don't really have a good enough grasp of classes to implement >> them. Could I make a RoomManager class? > >> Also you should look up how 'class'es work. Using them would make >> this easier.
Here's one I know enough to answer! 8) Yes, you could (and should). It looks like you're handling each room and action as a special case, which means a lot of repeated work. For instance, you have several commands for "talk to [person]". What if you processed the input a bit more, like so: ## Where "command" is a string with what the user typed: words = command.split() ## Split into a list of words, found by searching for spaces (by default; but try eg. split(",")) if words[0] == "talk": person_to_talk_to = words[1] Looking for specific words like that does require that you check for how many words there are, though (using len(words)); the above code would crash if the user typed a blank line or just "talk". Classes don't have to be scary. The only arcane bit of setup is this: class MyClass: """Put comments here""" def __init__(self): ## Has to be called __init__ self.some_variable = 42 self.some_other_variable = "Trogdor" Then you define functions within the class, and make an actual instance of the class by saying: x = MyClass() Then you can access it like so: x.some_variable ## Returns the number 42 Even without getting into functions (besides that automatic setup function), the usefulness of a class like this is that you can easily keep track of a group of related variables, like all the information about a single room. A suggestion for one way to set up a class: class Knight: def __init__(self,**options): self.name = options.get("name","Robin") ## The second is a default value self.airspeed_velocity = options.get("airspeed_velocity") ## Default is None ## Now create an instance: arthur = Knight(name="Arthur",hit_points=999) ## Since "hit points" isn't referred to in the class setup, it gets ignored harmlessly. Hopefully this will be useful.