I think it’s important to point out that FSA are an idea, a mathematical model. Implementations of FSA can be done in any language, in any paradigm. Adopting an FSA model for your game does not preclude the definition of classes. If you’re using Java (which I assume you are since you’re on this forum), I recommend an OO-approach to FSA.
In fact, if you look at the code outline I supplied earlier, you’ll see that it can be used in an FSA: the state of the game is defined by the location of the player, which is a Room. The set of possible transitions are represented by connectors between rooms and the transitions are implemented through the command interpreter. This is still an FSA, just an indirect implementation.
You could implement an FSA directly, probably with State and Transition classes, but this takes you a level away from your game. The point of OOP (or a point of OOP, if you prefer) is to provide solutions to problems that are close to their own domain. Rather than define a problem in terms of mathematical operations, a problem is defined by objects that represent the elements of the problem “in the real world”. By lifting yourself out to the level of traditional FSA (not FSA-in-games), you may as well just use Pascal. There’s nothing wrong with this, but it is against the grain of Java and OOP.
bahuman makes a great point: if you want to implement pure FSA, then you would by definition need an exponential number of states, since you’re dealing with multiple variables (location, inventory, possibly other things). Hence, I recommend learning about FSA, keeping in mind the lessons of structured programming, but applying modern techniques of OOP and design patterns to your problem.
But hey, I’m on vacation, so I best get out and have some fun… just wanted to share my two cents.