TETRII HELP Tetrii is a game that allows playing one or more Tetris boards simultaneously. It was written as a quick project so I could become familiar with Java programming. SETUP: On the initial screen, you can adjust the number of boards to play and the height and width of all the boards. You can also choose to have boards initialized clear or with some cells already filled in. Once you have it set up as you like, press `Go'. This will put up the boards in a paused state, to allow time to move the windows to convenient locations. When you are ready, press `Start' to begin play. PLAY: You play by starting one or more tetris boards, and seeing how long you can keep playing without any one of them filling up. Score is kept both on a per-board and total basis. Alternatively, you can have your boards initialized randomly. When all initial cells are cleared off all the boards, you win! There are a few different ways to control the boards. One is to point with the mouse at the board you want to control, and use buttons for commands: left mouse for left, right mouse for right, center for clockwise, and shift-mouse to drop. A second is to position the mouse over the Board you want to receive the input, and use keys to make a command. Caps Lock will toggle the mouse buttons so that any of them will be a drop. (Unfortunately, I cannot see how to read the current state of the capslock key, so it must be pressed at least once in any tetrii window to activate.) A fourth is to focus on the score window, use number keys to select the active board, and use keys to input a command. Finally, you can pop up a control window, which has mouse buttons for each command for each window. I use the ASD keys with the mouse, and capslock on. Commands are bound to the following keys: LEFT: Q, A, Z, left arrow RIGHT: E, D, C, right arrow CLOCKWISE: W, S, X, down arrow COUNTERCLOCKWISE: up arrow DROP: space You can pause the game either by clicking the `Pause' button on the Control frame, or by pressing the `P' key on any of the Tetris boards. To resume click the `Continue' button or type `C' on any board. DESCRIPTION: Following are brief descriptions of the main objects used in this program. Cell: Each cell in a Tetris board is an object which knows how to draw itself, what its neighbors are, and whether it is occupied or not. This could be used to make other games (Life comes to mind), or extended to make other shapes or "warping" boards. Piece: Each orientation of each piece is its own subclass of the Piece object. Pieces know their colors and point values, the relative locations of their Cells, how to check if a particular translation or rotation is legal and how to do it if it is, and how to draw themselves. To save on memory allocation and recovery these use no local variables, so only a single instance of each is needed for the entire program. Board: A board consists of a grid of Cells and a Thread that moves the current Piece down at regular intervals. It knows how to draw itself, how to read and execute commands from the keyboard, the location of its Piece, and the rules of the game. tetrii: This is the top-level class that gets the configuration commands from the user, creates and starts up the individual tetris games, handles keyboard commands, and reports the score. Use and pass along at your pleasure, but please leave my name in it. If anyone wants to send me a few dollars feel free. written by Russell Young russell@oursquare.com