This course will explore the algorithms, data structures, and tricks used
to program computer video games. We will be programming in Java and
focussing on arcade-style video games (new and "classic") rather than
text-based adventures or strategy games such as chess.
This is a link to a directory of class demos stored by date.
They are not intended to be self-explanatory (although they might
sometimes be), but rather are created as visual aids to the lectures.
I'm making them available here so you can play with them and study
the examples further after class. In other words, I can't imagine how
you would take intelligent notes on some of this stuff, so here are
my "animated notes".
FINALS WEEK
Here is a list of topics for
the final exam (which is on Monday, Dec 9, 1:00PM). I'll
be available in my office on Monday (Dec 9) from 10:00 to 11:30AM.
SECOND EXAM (On-line exam)
The second exam was on the computer, in class, on
Friday, October 25. Here's
a list of topics,
but you can work out your own - anything we've
studied so far this semester is fair game.
If you want a rough idea of what such an exam is like, here's
the exam
from a couple of years ago. We studied different topics that
year, so some of these questions might not seem familiar.
Karl Hoernell is a programmer in Sweden who writes some very nice Java games. While
that would be worth knowing just by itself, he makes it even
better by putting them up on a beautiful website with
lots of background commentary regarding game design and technical
problems and solutions.
There is a lot of variation of how special keys
(especially arrow keys) are treated in Java. This
applet can help you test various keys.
Graphics options
My favorite program for creating simple GIF images on studsys is
Icon Editor.
You can create fancier GIF images by using GIMP
or with Raytracing, but these are each
more complicated to learn.
Simulated Physics
For an explanation of how to simulate falling under gravity and bouncing, see the pages on
Movement and Bouncing and
Gravity. My Triangle Applet
also demonstrates some fancier bouncing calculations.
The Java API (Application Programmer Interface) specifies all of the
methods of all of the classes built-in to Java. The
API Help
might be a good place to start if you find
this too confusing.