CS351, Programming III: C++
Due: Feb. 25 by 11:59 pm
Write a C++ application called NewTetris that allows a new way to play Tetris. It is well known that in Tetris there are seven kinds of tetriminos, each of which is made up of four minos. The application window is divided into three bands: top, middle and bottom. When the application starts, seven different tetriminos will appear within the top band, as shown in the Java applet below. These seven tetrinimos are referred to as model tetriminos. A user can add tetriminos into the middle band to create a meaningful shape. A tetrimino that is no longer useful can be deleted by putting it into the bottom band.
Specifically, a user can perform the following four operations to create a meaningful shape in the middle band.
Add: to add a tetrimino, a user can use the left mouse button to drag the corresponding model tetrimino located within the top band. When a model tetrimino is selected to be dragged, a duplicate is made out of the model. It is the duplicate that is actually dragged. The model tetrimino stays at the same location.
Move: To move a duplicate tetrimino, use the left mouse button to drag it. The model tetrimino can't be moved.
Rotate: To rotate a duplicate tetrimino, use the right mouse button to click one of its four minos. Please note the tetrimino will rotate about the center of the mino that is clicked. The model tetrimino can't be rotated.
Delete: at the end of the moving or rotating operation, if the tetrimino intersects with the bottom band, the tetrimino will be deleted. Since a model tetrimino can't be moved or rotated, it can't be deleted.
The following Java applet is an implementation of NewTetris. Please try the applet to see how the application works.
You shall write a class named CMino to describe a mino.
You shall write a class named CTetriMino to describe seven different tetriminos.
You can use collections to keep a record of all the tetriminos added so far.
Use event handlers to add, move, rotate and delete a tetrimino.
After rotating a point (x1, y1) about another point (x0, y0) counterclockwise through an angle of theta in radians, its new location (x2, y2) can be represented as follows.