In the Supplementary Ideas document that accompanies this assignment (link), there are several small sketches, which implement various animation and interaction techniques.
Your job is to build a one-player, interactive game, by combining some or all of the code snippets from these examples. The requirements on this are pretty open: you can make any game you like, with any rules you like, but your game must incorporate a minimum of five of the techniques provided in the Supplementary Ideas. You may include more, of course, and if you want to make a modification to one or more of the techniques, that's fine.
For the most part, this is relatively straightforward, but you'll need to think about how to combine the ideas. This means taking care in your choice of global variable names, combining code in associated event handlers, and (if you use them), providing appropriate arguments to methods that I've defined already. In no case will you need to write your own methods (though you are certainly encouraged to try), and for the ones I've written, you only need to understand what they do, not how they work.
Submit the folder containing your Processing sketch and your documentation. This should be a single folder named "project1", which will contain all source code files. Again, the turnin directory is
You can make any game you like, with any rules you like, but your game must incorporate a minimum of five of the techniques provided in the Supplementary Ideas. You may include more, of course, and if you want to make a modification to one or more of the techniques, that's fine.
Your code must be syntactically correct. Any solution that contains a syntax error anywhere (and hence crashes when you hit the "play" button") will receive no credit. If you run into any trouble here, please ask me or one of the TAs for help.
You must submit, in addition to your source code file, a separate file that documents your work. This documentation should consist of two parts. In one section, give a description of how the user should interact with your work. In the other, explain which parts of your code satisfy the checklist of technical requirements above. If you have incorporated any new ideas not covered yet in this class (see "extra credit", below), document those in this section, as well.
The documentation will count for 5% of the overall project grade. Of course, it will be assessed not only on content but on the quality of writing, grammar, punctuation, spelling, and so on, just as you would expect in any other setting!
Your work will also be assessed in part on the elegance and clarity of your code, that is, the clarity an simplicity with which you accomplish complicated tasks. This is a somewhat subjective criterion, but it mainly boils down to the idea that there should be exactly as much code as you need to get a job done, neither more nor less, and what's there should be comprehensible to an independent reader.
As a partial (but not complete list), variables should be used instead of hard-coded values, but the scope of a variable should be neither more nor less than what is needed (e.g. only make a variable global if there's no other choice). Loops should be used instead of repeating a related series of operations one at a time. Tasks that are repeated should be defined as functions that are called, rather than copying and pasting the same text over and over.
Work whose visual presentation reflects a particularly thoughtful attention to grace, detail, and coherence of presentation will count favorably.
Finally, your source code file must begin with a "header" comment of the following form:
/* <file name> ( < n > of < number of files > ) Author: <your name> CPSC 120, Project 1 Created: < the date > */
Extra credit may be given for the incorporation of ideas you learn on your own that we have not covered in this class. Be sure to document these. I reserve the right to determine the bonus merits of all extra achievement, on a case-by-case basis.