Pop up a window (or show an applet frame) and draw your favorite board game. If your favorite board game is checkers, draw a checker board with the checkers. If it's backgammon, draw the board and markers, etc. Due Thursday, June 3, 1999. As always, you may turn it in early.
Run your program and get a screen capture image of the window to paste into your report.
Report
Your report will describe the program, show the resulting image of the game board, and include the source code that you wrote. Comments in code are good. Do not include automatically generated code or graphics libraries.
In your report's introduction, tell what game you chose to render and why. Points will be awarded for writing style and format. Source code should be printed in landscape mode (sideways on the page) in a 10 point fixed-pitch font (such as Courier). Prose content should be block style in 12 point Times font, 1.5 line spacing, and justified right and left.
Here is an example Microsoft Office '97 Word document you may adapt.
You may use any language, platform, or graphics library that you wish. You should acknowledge in your report any publicly available information that you use (if it's not obvious by inspection). For example, if you take advantage of some code from a magazine article, that's perfectly alright, but you should state the source and which code came from that source.
If you decide to do the project as a Web applet, do not link to your source code or put the source code under the public_html directory. You will still need to hand in a paper report with your source code. Source code is to be kept secret from other students. If you turn in a report early, do not put it in a publicly available mail box. You can slip it under my locked office door (SAL 340). This goes for all four projects.
Write a program to display data in two formats: vertical bar graph and line graph. User action will toggle between the two data displays. The first dataset is for the line graph and it has two "y" values for each "x" value. The second dataset is for the bar graph.
Dataset One (Line Graph) Pressure in Pascals vs. Deflection in Milimeters. The deflections are for airplane wing tips (design types A and B).
x y1 y2 5 8.0 0.3 10 50.0 5.0 20 180.5 34.3 35 578.0 196.5 40 840.5 344.6 55 1512.5 831.8 70 2450.0 1789.5 90 3872.0 3407.4 95 4704.5 4563.4 110 6272.0 7024.6
Dataset Two (Bar Graph) Aircraft Production by Year
Year Units 1988 36 1989 38 1990 40 1991 31 1992 28 1993 38 1994 35 1995 41 1996 45 1997 61 1998 66 1999 75 2000 82
Put a text title at the top of each of the graphs and label the axes appropriately. Select appropriate tic marks and values for the line graph axes. Use different colors for the two lines, and display the data points as dots and connect them with straight line segments. Label the lines on the line graph to distinguish the design type data. Report
Report requirements are similar to those for the first project. You will need to get a screen image for each of the two graph types.
Tank Battlefield
The user sees a plan view of battle tanks, six of one army, and six of another, distinguished by color. Each tank has a gun turret that can rotate with respect to the tank. When the user clicks on a tank, it becomes the "current tank" to receive user commands. The current tank is indicated by color or some other way. The user can cause the turret of the current tank to rotate by keyboard commands: "l" for left, "r" for right, one degree of rotation for each keystroke. When the user clicks on a point on the battlefield, the current tank first rotates on its own axis to point toward the designated goal, then moves forward toward it and stops on it.
Orbiting Fruit
The user sees a bowl of fruit (one apple, one pear, and one banana) from above. When the user clicks on a piece of fruit, it begins to orbit the bowl, much as a planet orbits the sun. The fruit moves in an eliptical orbit, with the bowl at one focus of the elipse, and the fruit also spins on its own axis, like a planet. Also, like the planets, the fruit moves faster when it is closer to the bowl.
Report
Your project report should discuss why you chose your project from the two alternatives, what decisions you made and why you made them, and why you chose your particular algorithms and what problems you solved in the process. Include enough screen images to demonstrate the major features of your program. Include your own source code, as usual. Due July 1, 1999.
Student Examples
In no particular order: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 22
Send me email if your applet URL information is incorrect or missing or if you want your link deleted.
Extend your project 3 to 3D. You must use a perspective rendering transform with any viewpoint and view direction except, for the tank battlefield, looking straight down, looking from below the ground, or looking edge on at the battlefield plane.
For the orbiting fruit, you may keep the fruit in one orbit plane, or you may put the orbits in different planes (your choice).
Use a nominal focal length (giving approximately a 30 degree view angle) for your perspective transform.
I am deleting the requirement for a dynamic viewpoint to make it a little easier for the students in view of the heavy workload of some. Dynamic viewpoint is not hard to implement (see BlocksWorld.java) and some students may wish to get practice with this.
Report requirements are similar to project 3 requirements and this time don't forget to format source code as described in project 1, above. Discuss how you handled the selection and position interaction tasks in 3D. What problems did you run into and how did you solve them? How did you do visible surface determination? Did you invent any clever new algorithms?
Student Examples
In no particular order: