Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
Add a Graphical Representation and a Usable User Interface
- You must provide a display of the physical world in which your game is taking place. Since the world may be too complex for a static display to be useful, the view presented should include a current room and some way to move the view to another room.
- Originally, we were just going to have every building rectangle shaped with multiple floors and four rooms on each floor. We figured this would be the simplest design for our game since the user is supposed to be able to create his own buildings with rooms. Hallways and smaller / larger rooms just make it a lot more complicated. We stuck with the four room view and scrapped the multiple floor idea. Instead, we allow the user to scroll left, right, up, and down among all the rooms while being able to view four at a time. The inside of the building doesn't necessarily have to be rectangle shaped. This keeps it simple but not too simple.
- You'll notice that we have "portals" between rooms. This is our current graphic for our doors between rooms. Right-clicking on them will bring up a menu to "teleport" to another room. This may or may not change in M6.
- Your GUI should support and provide a player with the following capabilities: create new people and things, view, modify and add to attribures of persons and things, designate a "current" person, direct current person to pick up or put down objects, direct current person to interact with another person, and move current person to a new location.
- All of our rooms are 6 x 4 rectangles of 64 x 64 squares. All of our graphics are 64 x 64 pictures, so a room can hold a maximum of 24 people / object combinations. We made it pretty simple to place a new person or object within a room. You simply right-click where you want to place the person or object in the room and click the appropriate action on the pop-up menu. Selecting a person is as easy as clicking on the person's graphic. When you have a current person selected, you can move him or her around to different rooms interacting with people and objects. Right-clicking on another person or object will bring up a pop-up menu with a list of actions. A person's attributes will be modified based on how you interact with people and what objects you use.
- All information and attributes for people and objects are displayed below the game window in our information window. The person's attributes get updated based on how he or she interacts with people and objects. The information window also displays a person's inventory and allows the user to scroll through all the items a person is carrying.
- You must provide a way to save and restore game states building on the features you implemented in previous milestones. Note that the state of a game must include some representation of the structure of the world in which the characters and objects exist. For now, that structure is static, but later on you will have to include the dynamic creation of buildings and rooms.
- Our save feature outputs to a text file with the names, types, and locations of all people, objects, doors, and buildings on the campus. This allows the saving of buildings, objects, and people placed in the world by the user, which we will have to implement later on.
Advice to future students:
- Fileout your code often. There's no worse feeling than spending hours in the CoC coding, going to fileout your changes, and having Squeak crash. You don't think it will happen to you, but it can, and it will. So do yourself a favor and fileout your work every so often.
- Write your SUnit tests as you write your methods. We made the mistake not to, and it was a big pain to go back at the end to write all of our SUnit tests. It's good practice to even write your SUnit tests before you write your code. This way, you know exactly what your code is supposed to do and whether or not it works how it should.
- The test plan can be your friend. The test plan turned out to be more useful than we thought it would be. It allows you to get everything that needs to be done organized into one place. It lets you know exactly what works in your program, what doesn't work, and what still needs to be done. The test plan goes hand-in-hand with your SUnit tests. It lets you know what exactly needs to be tested in your program.
- The UML Class diagram is very useful in helping you code. It lets you know exactly how classes will interact with other classes. Don't be afraid to change your design. We changed our design several times... adding new classes... taking out classes... adding new data structures, etc.
- Scenarios are a good first step into the functionality of your code. It lets you know what exactly the user expects to happen when using your program / game.
Included in this turnin:
- CRC Cards
- Test Plan
- UML Class Diagram
- UML Sequence Diagrams
- SUnit Tests
- Code and graphics
Link to this Page