# 13.4. Planning A Class Structure¶

The Console input/output interchange below illustrates an idea for a skeleton of a text (adventure?) game. It could be the basis of a later group project. It does not have much in it yet, but it can be planned in terms of classes. Classes with instances correspond to nouns you would be using, particularly nouns used in more than one place with different state data being remembered. Verbs associated with nouns you use tend to be methods. Think how you might break this down, looking at what is happening in the sequence below.

The parts appearing after the ‘>’ prompt are entries by the user. Other lines are computer responses:

Welcome to Loyola!
This is a pretty boring game, unless you modify it.
Type 'help' if you need help.

You are outside the main entrance of the university that prepares people for
extraordinary lives.  It would help to be prepared now....
Exits: east south west
> help
You are lost. You are alone.
You wander around at the university.

help go quit

Enter
help command
for help on the command.
> help go
Enter
go direction
to exit the current place in the specified direction.
The direction should be in the list of exits for the current place.
> go west
You are in the campus pub.
Exits: east
> go east
You are outside the main entrance of the university that prepares people for
extraordinary lives.  It would help to be prepared now....
Exits: east south west
> go south
You are in a computing lab.
Exits: north east
> go east
You are in the computing admin office.
Exits: west
> bye
I don't know what you mean...
> quit
Do you really want to quit? yes
Thank you for playing.  Good bye.


Think and discuss how to organize things first....

The different parts of a multi-class project interact through their public methods. Remember the two roles of writer and consumer. The consumer needs good documentation of how to use (not implement) these methods. These methods that allow the interaction between classes provide the interface between classes. Unfortunately “interface” is used in more than one way. Here it means publicly specified ways for different parts to interact.

As you think how to break this game into parts (classes), also think how the parts interact (public methods). This is a good place for the start of a class discussion.

If the plan is to discuss it in class, wait before looking at the code that generated the exchange above, in the project folder cs_project1.

The code uses many of the topics discussed so far in this book.

We will add some features from another meaning of Interfaces, and discuss the revision in project csproject_stub (no 1). You might use this version as a basis of a project.