CSci 480 Summer Projects

Project One

Game Board

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.

Project Two

Scientific Graph

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.

Project Three

Student choice of Tank Battlefield or Orbiting Fruit. This project requires 2D animation. Pick one of the two projects described below:

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.

Project Four

3D Extension of Project 3

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:

1 2


This page established May 21, 1999; last updated July 19, 1999.