This is the final assignment of the semester. There is no real theme to what you have to do for it. It will just exercise a fair bit of what you have learned in this class and hopefully be interesting to program.
Text Adventure:
It's time to make your map program into a true text adventure game. It doesn't matter how you do this, but you need to add in a goal to the game and have it inform the player if he/she wins or loses. Most of the original text adventure games had some type of puzzle solving where the items could interact with one another or with rooms in certain ways to make things happen. You probably don't want to go the MUD route and have equipment, combat, and the like though simple combat might be feasible. You must add a help command which prints out the objective of the game and how to play. I suggest that this reads and prints the content of a file so you don't have to type in the full help in print statements.
Chemistry Problem:
Take the code you did for assignment #9 and make it so you find integer coefficients.
Zooming Mandelbrot or Julia Set:
If you implemented the Mandelbrot set calculation and display previously, this is the option for you. For this one you get to add some event handling to the last program. There are two options here. One is to make it so that the user can click and drag on the Mandelbrot to zoom in. For this to work well you probably have to give the user some way of increasing the number of iterations while it is running. The other option is to read simple clicks by the user and when the user clicks on a point in the Mandelbrot you bring up a new window and show the Julia set that corresponds to that point.
Music Library:
For this option you will write a GUI that displays information on music read from XML data files. The data will be displayed in a GUI using the Table component. There should be menu items that allow you to sort the information based on different columns.
To help you with this I found a large XML music database that you can use. You can certainly find your own to use if you don't like these. The files I found have a lot of data that you don't need to display. Pick the data values that you find most important. You can find the XML files in here. You only have to deal with one of them.
For extra credit you can add search capabilities.
L-Systems:
Continuing the L-System option of the last assignment you will add GUI components that allow the user to load in and edit grammars. For extra credit, make it so that you can do something other than a 0L-system. You could do a 1L or 2L-system or a parametric system.
Baby Mathematica:
For this problem you will use your equation parser from assignment #7 to build a little program that can be used to do some simple function evaluation. You will then give it the ability to display a simple plot of the function in a window. You should also give it the ability to read files that have functions defined in them.
You can define 3 functions: f, g, and h. They are all functions of a single variable x. They are defined in terms of numbers, x, and the other functions. You only have to have the four basic operators (+, -, *, /), but you can add extra ones if you want extra credit. If you do this, there needs to be a big comment at the top of the code telling me what you did so I can try it and give you the extra credit.
Menu Options:
Your GUI should have three text fields that allow you to edit the three formulas.
The read and write options are fairly straight forward. You need to write some code that will read in definitions for your three functions from a file or write out to it.
Just as a side note, I think this might be the most exciting problem of all the ones I've given so far this year (for me). It can really show you the power of a simple recursive algorithm and once it is done, you will have written a program that is far more powerful than what most people in a PAD1 class would even dream of doing. That doesn't mean it is harder though, just more powerful.
If you want to do this option and you didn't do the symbolic algebra options on assignment #5, let me know and I can e-mail you code for the parse function.