Tetris for Intro/Intermediate Programmers (CS Scholars update)
Step 8: More Ideas (Bonus/Optional)
We now have written a reasonably complete, reasonably fun game of Tetris. Congratulations!
That said, our game is somewhat minimalist, leaving many opportunities for additional work, some of it relatively easy, some of it quite hard and requiring that you learn challenging features through self-study. At our discretion, we may award you up to 5 bonus points for adding extra features, though you should mostly pursue this in the interest of fun and practice. Here are some ideas, roughly in increasing order of difficulty:
Hard drop: hitting a key (such as space bar) immediately drops a piece as far as it can go and places it on the board.
A "Pause" feature that alerts the user when they're paused with graphical changes.
Dual rotation (adding clockwise rotation in addition to counterclockwise rotation).
Levels of play with increasing difficulty (dropping faster, with more difficult piece types, and with some cells randomly filled, etc).
More attractive pieces (look into online documentation for Tkinter's canvas for some interesting options).
"Splash screens" with help instructions.
Piece Preview (so you can see what the next piece will be before it arrives).
(Moderate) High scores list.
(Moderate) A Piece editor (so you can create new types of pieces and add them to the game).
We haven't learned how to add these features, but you might be able to figure them out with some research!
(Moderate) Music (you can find the Tetris midi here).
(Moderate/Hard) Integration with other Tkinter widgets (buttons, menus, etc).
(Hard) High scores list, but stored on the web and shared across users.
(Very Hard) Making this implementation object-oriented (that is, using classes) -- for example, adding a Piece class with LPiece, SPiece, and so on as subclasses, and then actual falling pieces as instances.
(Very Hard) Network-based multiplayer Tetris.
Enjoy!!!
David Kosbie
Carnegie Mellon University koz@cmu.edu