python project

profileonionnet
final_project.pdf

ISTA 130: Programming Project

1 Introduction

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 Project details

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 Project Proposal

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 Progress Reports

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 Final Presentation

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 Final Progress Report

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

  • Introduction
  • Project details
  • Project Proposal
  • Progress Reports
  • Final Presentation
  • Final Progress Report