in .py file.
ISTA
1
3
0: Programming Project
1
One of the best ways to learn to program is to read existing code. Working with an existing, func-
tional project created by a more experienced programmer can help you learn basic code structure,
new commands and features, and programming style, and most of the decisions about program
structure and the coding of complex setup routines have been done for you already. In addition,
in many career environments, you will be working with code someone else has already started. For
these reasons, your final project will involve modifying an existing Python program to add new
features.
2
The Pygame library enables the programmer to easily add sound and graphics to a Python program.
In addition, Pygame keeps a database of projects on its website, and most are free for anyone to
download, run, and modify.
For this project, you will add a “substantial feature” to a game from the Pygame database.
This will involve trying out several programs from the database, deciding on a feature to add,
and implementing the feature in Python. The definition of “substantial” is determined by the
instructor; the end result should demonstrate the student’s knowledge of Python programming.
Feature proposals will be approved ahead of time, to ensure that everyone’s project can satisfy the
requirements.
3
DUE June 10
Your project proposal should describe the game you are planning to modify, and the feature
you are planning to add.
You may have to try out a number of games before you find one that looks good to you. Spend
a few minutes on each; if the game is frustrating or buggy, or you can’t get it to run, go on to the
next.
In a text file of some sort, submit a “primary” project proposal, and a second-choice “backup”
project idea:
� Report the name of the game you intend to modify.
� Include a link to the game’s page on Pygame.
1
� Describe the game briefly; this should go beyond the description on the website to show that
you’ve actually downloaded and run the game.
� Describe the feature you intend to add; this should take around a paragraph.
Requirements:
� You must choose a different game from everyone else.
� Your added feature must require a significant amount of coding – changing art assets or
adding a looping music track are not sufficient (though certainly allowed).
Suggestions in choosing a game:
� Try to find a game that is working and mostly complete. This project is about adding a
feature, not fixing all of the bugs (though that could be part of it).
� Don’t choose anything too complex: try to find a fairly simple game. You might take a look
at how many source files it comes with, and how long each one is.
� Don’t add your feature too “deep” in the game – we shouldn’t have to play to level 10 before
we see the work you’ve done.
� Choose a 2D game; 3D will make things much more complicated.
� It might be easiest to look for a familiar game, like Pac-Man, Mario, Tetris, or Zelda and add
something to it.
� Other genre suggestions (try searching for keywords like this on Pygame’s website): Tower
defense, platformer, third-person shooter, real-time puzzle, space sidescroller, racing game,
memory, …
Ideas for features to add:
� Add a “save game” feature to a game without one.
� Add new enemy types that behave differently from the existing ones.
� Add new power-ups for the player that enable new abilities.
� Change the gameplay in some significant way (turn Mario into a spaceship to make the game
a sidescrolling shooter; add a player character in Tetris who has to hop on the blocks)
� Improve the enemy artificial intelligence (this may be difficult).
� Make the game (single-screen) multiplayer (this may be difficult).
As long as your core feature is implemented in the code well, any additional work you do to
fix bugs, clean up the code, add new art or sound, add more features, etc. could be considered for
bonus points.
2
4
DUE June 17 and 24
You will submit two progress reports on your project. These should include four sections:
Project goal Summarize your project proposal; what game are you working on, and what fea-
ture(s) are you trying to add? This may be the same both weeks, or it may change if the
programming is harder or easier than anticipated.
Accomplishments Summarize your work on the project from the last week. What progress has
been made?
Difficulties What are you having the most trouble with? Where are you stuck? (How can I help
you?)
Plans What do you hope to accomplish in the next week?
These reports will be graded on whether you turned them in, completeness, and the progress
during the week; they are not graded on length, but in order to cover the required topics, reports
will probably be 1-2 pages long.
5
DUE July 1
The last day of class will be devoted to presentations of the programming projects. These
presentations should showcase your contributions to your chosen game. They should include a
description of your feature, a brief look at your code, and a demonstration of the feature in-game
(possibly a before-and-after comparison with the original game). Presentations should be 5-10
minutes long, including a short time for questions and answers. Presentations will be graded on
presentation quality and demonstrated understanding of your game and its code.
6
DUE July 2
Finally, write up a brief report on your project. This should be similar to your previous progress
reports, but somewhat longer; probably around 3-6 pages. The goal of this report is to summarize
the work you did, for my and your future reference.
Project goal Summarize your project proposal; what game did you work on, and what feature(s)
did you try to add?
Accomplishments Describe the features you added. You can include any modifications you
made to the game. Explain your code, and why you coded the features the way you did. This
section should demonstrate your knowledge of Python, your understanding of how the game
you chose works, and the significance of the feature you added.
Difficulties What was the most challenging part of your project? What did you try to accomplish,
but not get to work?
3
Conclusion What did you think of the project? Was it helpful in learning Python? Overwhelm-
ing? Fun? Boring? (There are no right or wrong answers here)
The final progress report and a zipped folder of all of your code are due 11:59pm on July 2, the
day before the final exam.
4