






Hotspots: Admin Pages | Turn-in Site |
Current Links: Case Final Project Summer 2007
Fall 2003 M4: Give your Guide an interface
(Group, Due 10/21)
For this milestone you'll extend your Guide with a blended 2D and 3D interface. You'll embody your Guide by creating a 3D avatar that you can move around the screen and make refer to things, and you'll create a 2D interface that allows the user to communicate with the Guide and the Guide to communicate with the user.
Goals:
- Gain experience using 3D in Squeak.
- Gain experience writing 2D and 3D animations in Squeak.
- Gain additional experience building 2D GUIs
Questions on Fall 2003 Milestone 4
Requirements:
To embody your Guide, create a 3D character that you can programmatically move around the screen and cause to refer to things. Your Guide (referring now to the 3D character) must be able to:
- Move to a particular point on the screen.
- Point to a particular screen position.
- Look at a particular point on the screen.
- Cause a 2D morph (e.g. a SystemWindow) to move around the screen with it.
Give your Guide 3 amusing idle behaviors. You should:
- Provide methods for pausing, resuming, and activating those behaviors. You can assume that the idle behaviors should be on by default. Activating a behavior should cause the pending idle behavior to happen immediately, and then reset the timeout.
- Provide accessors for changing the timeout between idle behaviors. Every time the user interacts with the Guide you should reset the idle timeout.
Clarification:
The goal is to create functionality that is analogous to the Office Assistant idle behaviors: whenever the user does not interact with the Guide for some specified amount of time, the Guide should execute one of its idle behaviors (randomly or in order). The Guide should then wait again until either the user interacts with the Guide or until the specified amount of time elapses again, at which point it executes another idle behavior and everything starts over again. If the user interacts with the Guide (including any part of the help system), the Guide resets the timeout (so the specified amount of time has to pass again without the user interacting with the Guide).
The methods should:
- Pause the idle behavior mechanism, so that the Guide will not execute another idle behavior until the user issues the resume command.
- Resume the idle behavior mechanism so that they will activate again if the remaining time passes without the user interacting with the Guide.
- Activate the pending idle behavior immediately (without waiting for time to expire) and then reset the timer (if the user does not interact with the Guide within the specified amount of time, the next idle behavior should activate.
- Check or change the amount of time that has to pass without the user interacting with the Guide for an idle behavior to activate.
Create a 2D GUI that allows the user and Guide to communicate. This GUI could take the form, for example, of a text input box and "speech bubble" that follow the Guide around. Your GUI should:
- Allow the user to ask for all available help topics.
- Allow the user to ask for help topics matching a set of keywords.
- In both cases your guide should provide a list of the names and descriptions of appropriate instructions.
- Allow the user to choose a particular topic.
- Your guide should walk the user through that help topic one step at a time.
You should structure your code so that executing Guide new causes the 3D character and 2D interface for your Guide to appear. Note that your design must expose the methods for controlling the 3D character and its idle behaviors so that we can test them.
IT IS WORTH YOUR WHILE TO MAKE SURE THAT YOUR TA CAN USE YOUR SOFTWARE! Demoing for your TA is a good way to do this (plus it allows you to get feedback on your design.
Turn-in your code using the Fall 2003 Turnin Information with the code 'M4'. Turn in your design in class.
Grading:
- 10% Good updated Scenarios: Accounts for all major functions in assignment, touches on every class.
- 10% Good updated CRC card analysis: Reasonable names, understandable and clearly defined responsibilities, good exploration of other class names
- 3% Good updated UML class diagram with correct usage of notation
- 7% Detailed and understandable Class descriptions and names
- 10% Quality of the UI design
- 10% Well-documented and good style source code
- 50% Working system:
- 20% Controlling the 3D character: moving, looking, pointing, and "carrying" 2D morphs
- 10% 3 idle behaviors with appropriate methods for pausing, resuming, activating, and adjusting the idle timeout
- 15% 2D interface for communicating with the Guide works correctly and provides access to the instructions for the 5 tasks selected by the team
- 5% SUnit Tests and good error/exception handling
Note: If the TAs can't figure out how to do these things, they don't have to give you the points. The UI must be usable.
Links to this Page