Problem Set 3
From MoDe
| Table of contents |
Assignment issues
To get started, it may be best to simplify, simplify, simplify.
Although Boogle is played with a 4 x 4 grid, I do not mind if you use a 3 x 3 grid or concentric circles or whatever geometry.
Start with a one player version. ( Leave a game server, timer, and other infrastructure for later. )
A simple version
A very very simple version might consist of one player, and a 4 x 1 "grid" Place one cricket on a table, and virtually place the letters "M L A E" on a line, with the "M" located a foot away from the beacon, the "L" two feet away, the "A" three feet and the "E" four feet away. The ipaq screen shows these four letters. Holding the cricket listener and ipaq in your hand, walk two feet from the beacon. When the listener indicates you are two feet from the beacon, highlight the "L" on the ipaq screen. Touching the screen "grabs" or "writes down" the letter L. Walk another foot away from the beacon. When you are three feet from the beacon, the "A" is highlighted on the ipaq screen. Grab the "A" by, say, tapping the screen. Then walk back to the beacon to grab the "M"and then away from the beacon to grab the "E" Finally, walk five or more feet away from the beacon to indicate the end of a word.
A slightly less simple version
Rather than tapping the screen, you must stand at a letter for 10 seconds. Just doing that grabs the letter. Average the beacon readings over a five second period, to get a better "fix"
A simple version
try a 4 by 2 grid and use two beacons.
Crickets
Assembly required: Place the ipaq in its cradle or get a non-cradle connector. Then connect the RS232 connector to the null modem connector. Then connect the cricket to the other side of the null modem. Maybe put tape of rubber bands to keep things together.
Make sure everything stays connected; the connection to the ipaq often comes loose
The cricket manual shows how to read from the cricketd. Parse the string to get the distance.
placement of beacons
There are many ways to place beacons and to figure out where you are based on distance readings from them. Best placement (and best number of beacons) is a function of what you want to do with them (how you want to use their readings). Remember the fewer the beacons you use, the less problems you will have.
discuss the best way of placing beacons
Feel free to post your ideas of placing the beacons and hwo to layout the board or detect your position. I (Larry) think it is great to have everyone share their ideas and knowledge (don't we believe the "knowledge wants to be free"?).
The GPS folks had to get it right when they placed 24 satellites into orbit. We have an easier task, but a little thought and experimentation can make your job a lot easier. Math is great but harder math is not always better.
extra beacons placed in 8th floor of Stata
Ning put four beacons in the "public" area on the ceiling outside Larry's office on the 8th floor of Stata.
The Goal of the assignment
Think about the best way to instrument the environment, deal with user interface, and make the experience fun.
Demo Information
(Post information about downloading, using, and modifying your Boggle demo here!)
- Corey, Daniel, and Evelyn's Demo
You can download the source, docs, and demo movie in 6883boggle.zip (http://web.mit.edu/coreymcc/www/boggle/6883boggle.zip). Warning, it's not 100% stable, bug-free, etc.
Usage:
(TODO: Post information about running demo, rules of play. *incomplete*)
0. Connect your ipaq to a cricket with a nullmodem, and place two crickets at eye-level on a wall, about 1 meter apart, make sure they are all turned on.
1. On your ipaq, run: cricketd -z -p /dev/tts/0 to open your cricket's listening port.
2. Run boggle.py to start the game.
- Calibration:
- Game setup:
Cricket Strategy:
(TODO: Post information about configuration and placement of beacons and calibration technique.)
Multiplayer Information:
We decided that instead of allowing any iPaq to be the host, all players would connect to the same centralized Boggle server, which would manage players, monitor the time, scoreboard, and perform dictionary checking. We used xmlrpclib to make remote procedure calls, which were primarily performed asynchronously to keep the game moving instead of waiting for each submitted word to get checked.
Back
Spring 2006 Class Having a link back to from where one came is often handy.
