Tetris for Intro/Intermediate Programmers (Fall 2019 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 3 bonus points for adding extra features, though you should mostly pursue this in the interest of fun and practice. (If you add extra features,
be sure to activate bonus mode by pressing 'b', as described in the homework writeup.) 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.
Note: this semester (fall-19), this feature is required
and not bonus. Of course, we also encourage you to add more features on this page.
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).
(Moderate/Hard) Integration with other Tkinter widgets (buttons, menus, etc).
Once we are farther in the course, you could make the following modifications as well! (Though this assignment will have been graded by then so there won't be any bonus points!)
(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