first commit
115
CS2335/2335_lemmings/Design_Changes.txt
Normal file
@@ -0,0 +1,115 @@
|
||||
NOTE: The current design is UML documented in the currentDesign.mdl file
|
||||
which is there for your viewing pleasure with Rational Rose.
|
||||
|
||||
1. PhysicsObject's Removal as a member of Lemming
|
||||
It was decided that it would be better for Lemmings to extend
|
||||
the PhysicsObject rather than contain it as a private data member. This made
|
||||
things MUCH simpler when dealing with changing the direction of the animation
|
||||
as well as makes far more sense as far as actual logic calculations are
|
||||
concerned. Primarily, this makes sense when a lemming goes BOOM and breaks up
|
||||
into tiny, little, high velocity pieces of lemming. In this case, the lemming
|
||||
breaks up into Particles and they go SWISH. This has not been implemented nor
|
||||
the classes designed (since they are extra credit).
|
||||
Finally, we also removed the movementDirection function. This was
|
||||
deemed unnecessary as this can be derived purely by checking the Velocity
|
||||
vector of the Lemming, foo.getVector().getI().
|
||||
|
||||
2. The File Package and the Level Reader class.
|
||||
Once upon a time, the team forgot to think of the fact that levels had
|
||||
to be loaded from the HDD somehow. That's where the file package came from
|
||||
with its current sole class known to all as the LevelReader class. This class
|
||||
will load the necessary files from the HDD and create the necessary Level
|
||||
Object or Map Object used by various other classes. This class has been
|
||||
added to the Class Diagram described at the top.
|
||||
|
||||
3. class LevelData:
|
||||
Added an id field. The reason for this addition was in order to easily keep
|
||||
track of the levels in the directory. When the directory is scanned for levels,
|
||||
the names of the folders with the level information, or the names of the actual
|
||||
level files, will become the ids of the levels. Thereafter, we can easily
|
||||
access each of the levels by simply using their ids. This also allows us to
|
||||
group levels into level-packs, and have several levels have the same name,
|
||||
because only the id's have to be unique.
|
||||
|
||||
Removed the size field. We thought it applies more to the Map, so that's where
|
||||
the field was moved.
|
||||
|
||||
Added the points for the level entry and exit portals, as well as
|
||||
accessors/modifiers for them. The reason for this addition is because we
|
||||
forgot about the entries and exits during the design stage. :)
|
||||
|
||||
4. class Map:
|
||||
Added the texture image. Now, in addition to the background, we can actually
|
||||
customize the terrain for a map.
|
||||
|
||||
5. class Level:
|
||||
Added a few fields that we didn't think of during the design:
|
||||
lemmingFlow -
|
||||
this will specify how often the lemmings are released from the starting point;
|
||||
paused -
|
||||
a boolean value to tell when the game is paused;
|
||||
levelPortals -
|
||||
the list of portals on the level, here we would have things like the entrance
|
||||
and the exit.
|
||||
|
||||
Unfortunately, we forgot to add any portal stuff into our initial designs, and
|
||||
so in addition to the things specified above, we had to add some more classes
|
||||
to our program. There is the generic Portal class, which is the parent of all
|
||||
portals and allows one to basically specify the action to take when a lemming
|
||||
enters it. Then, there are also the level entry and level exit classes, which
|
||||
allow the lemming to enter or exit the level.
|
||||
|
||||
6. class LevelLoadingState
|
||||
To the state machine of the possible states, we also added a LevelLoadingState
|
||||
class, which is essnetially a screen shown while a level is being loaded. The
|
||||
reason we thought it was important to add this class is because it took some
|
||||
time to load a given level, and so the program seemed to have frozen during
|
||||
this time. Now, it instead displays a screen that informs the user that the
|
||||
game is, in fact, doing something - namely, loading a level.
|
||||
|
||||
7. ImageUtilities
|
||||
We also added the ImageUtilities class into the graphics package, because
|
||||
there were certain operations, like getting the color of a pixel of the image,
|
||||
and creating a blank image, that were shared among several classes, so we
|
||||
abstracted all this functionality into the one utility class. Due to the fact
|
||||
that PMD doesn't like utility classes, the ImageUtilities were made a singleton.
|
||||
|
||||
We also added the ImageUtilities class into the graphics package, because there were certain operations, like getting the color of a pixel of the image, and creating a blank image, that were shared among several classes, so we abstracted all this functionality into the one utility class. Due to the fact that PMD doesn't like utility classes, the ImageUtilities were made a singleton.
|
||||
|
||||
In the GUI package, we have added an AbstractButton class, which abstracts out the functionality for the firing of an ActionEVent when the component is clicked. The reason we did that is because in addition to the regular button, we have some more fancy buttons, like the level selector buttons, which are also clickable and need to fire events, but don't really inherit any functionality from the LButton.
|
||||
We also added the ImageUtilities class into the graphics package, because there were certain operations, like getting the color of a pixel of the image, and creating a blank image, that were shared among several classes, so we abstracted all this functionality into the one utility class. Due to the fact that PMD doesn't like utility classes, the ImageUtilities were made a singleton.
|
||||
We also added the ImageUtilities class into the graphics package, because there were certain operations, like getting the color of a pixel of the image, and creating a blank image, that were shared among several classes, so we abstracted all this functionality into the one utility class. Due to the fact that PMD doesn't like utility classes, the ImageUtilities were made a singleton.
|
||||
|
||||
In the GUI package, we have added an AbstractButton class, which abstracts out the functionality for the firing of an ActionEVent when the component is clicked. The reason we did that is because in addition to the regular button, we have some more fancy buttons, like the level selector buttons, which are also clickable and need to fire events, but don't really inherit any functionality from the LButton.
|
||||
|
||||
|
||||
In the GUI package, we have added an AbstractButton class, which abstracts out the functionality for the firing of an ActionEVent when the component is clicked. The reason we did that is because in addition to the regular button, we have some more fancy buttons, like the level selector buttons, which are also clickable and need to fire events, but don't really inherit any functionality from the LButton.
|
||||
|
||||
|
||||
8. AbstractButton
|
||||
In the GUI package, we have added an AbstractButton class, which abstracts out
|
||||
the functionality for the firing of an ActionEVent when the component is
|
||||
clicked. The reason we did that is because in addition to the regular button,
|
||||
we have some more fancy buttons, like the level selector buttons, which are
|
||||
also clickable and need to fire events, but don't really inherit any
|
||||
functionality from the LButton.
|
||||
|
||||
9. Addition and Removal of a few Physics functions
|
||||
There were a few functions added/removed from the PhysicsEngine. Documentation
|
||||
for these changes is not particularly necessary as they are minor changes,
|
||||
however, actual changes will be detailed:
|
||||
|
||||
Added isFalling() which is used by the Engine to change the animation to the
|
||||
falling animation when the Lemming is falling.
|
||||
|
||||
Added gravityUpdates, which is used as a counter for updating gravity effects
|
||||
when in future implentations. This is still experimental and in design for
|
||||
adding advanced features to the engine, so it is not actually used, and
|
||||
therefore not JUnit tested, in the submission you have received
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
28
CS2335/2335_lemmings/Design_Changes_P3.txt
Normal file
@@ -0,0 +1,28 @@
|
||||
NOTE: The current design is UML documented in the currentDesign.mdl file
|
||||
which is there for your viewing pleasure with Rational Rose.
|
||||
|
||||
1. Physics Engine
|
||||
As you can see, the Physics Engine is heavily modified. This was done because
|
||||
PMD is a fickle lover, as such things needed to be moved around and rearranged.
|
||||
rayTracing was moved into separate functions, instead of overloading
|
||||
calculateNextPosition with every possible type of thing, it was decided to
|
||||
better move things into separate functions, hence all the new cnp* functions.
|
||||
These functions handle the specific things needed for given types of objects.
|
||||
For example, Lemmings are treated differently by the Physics Engine than
|
||||
Particles, though gravity and rayTracing are done the same between the two.
|
||||
THe Physics Engine also handles some of the more Physics related Lemming
|
||||
job types, such as Climber and Glider. It was deemed silly to use their given
|
||||
process() functions as this would become overly complicated, though their Job
|
||||
types still contain the process() function as well as having the Job classes
|
||||
with new private members to store various features. For example, the Bridger
|
||||
is treated exactly as a lemming, however his process function is called and
|
||||
a part of the brick is laid until all twelve bricks are laid. In his class
|
||||
he also has a "bricks" member which keeps track of the # of bricks laid.
|
||||
|
||||
2. Networking
|
||||
Due to a problem with the network games and one person winning before the other
|
||||
finished, it was necessary to create a LevelFinishMessage. This message informs
|
||||
the other player when they have finished so as to bring the player to the
|
||||
game stats screen. This message is pretty much a placeholder as it merely
|
||||
needs to exist in sending, not actually send any large amount of data.
|
||||
|
||||
42
CS2335/2335_lemmings/Design_Changes_P4.txt
Normal file
@@ -0,0 +1,42 @@
|
||||
NOTE: The current design is UML documented in the currentDesign.mdl file
|
||||
which is there for your viewing pleasure with Rational Rose.
|
||||
|
||||
1. Physics Engine
|
||||
PMD changes once again, however, plenty of new classes to see. Primarily, this
|
||||
is the changing of the Particle class. Rather than have a single Particle class,
|
||||
multiple classes were created extending Particle. These classes work to have
|
||||
different killFactors, that is, how long/what will kill the particles. For example,
|
||||
Blood and Water particles have a shorter life span than Dirt Particles. Also,
|
||||
this simplified the actual programming as they could simply chain constructor
|
||||
calls to PrettySprite and each have their own .png associated with the Particle type.
|
||||
|
||||
Also, you may notice the Vector class was renamed to PhysicsVector. This is due to
|
||||
PMD being stupid. PMD kept saying that Vector should be declared as List. Obviously,
|
||||
PMD was looking at the wrong class. This was resolved using said method.
|
||||
|
||||
2. Networking
|
||||
Huge changes here, sort of. Most of the additions to networking were made for the
|
||||
Split Screen Multiplayer Game. However, time constraints prevented their full
|
||||
implementation. As such, these specific changes will not be addressed as they are
|
||||
simply messages sent back and forth that have absolutely no effect other than hogging
|
||||
network bandwidth.
|
||||
|
||||
3. Lemming Jobs
|
||||
The lemming jobs were changed slightly. For one, the feature of being able to change
|
||||
the class of the lemmings mid-air was removed for some classes, see assignJobToLemming().
|
||||
In addition, Bugs with many of the jobs were corrected: particularly that nasty Lemming
|
||||
stuck on Blocker Bug. Effects were added to the jobs as well, when digging, dirt is shot
|
||||
out and when gliding the jet back releases flames. Pretty Cool, eh?
|
||||
|
||||
4. Level Stuff
|
||||
A Fake Exit was added. This shoots the lemming up into the air if he touches it.
|
||||
This is known as FlingTrap.java. Nothing fancy to say here, simply shoots a lemming
|
||||
into the air (probably Killing the poor guy) when the lemming touches it. In code, this
|
||||
simply means settings the J component of the velocity vector to something fancy.
|
||||
|
||||
5. JUnit
|
||||
JUnit classes were removed for this submission. No point in having them waste space.
|
||||
|
||||
6. Changed Variables
|
||||
There are many variables with changes here and there due to Checkstyle/PMD. These are
|
||||
not really considered design changes, just thought it should be noted.
|
||||
BIN
CS2335/2335_lemmings/FinalSubmission.zip
Normal file
BIN
CS2335/2335_lemmings/Lab_Files/GraphicsExample.zip
Normal file
@@ -0,0 +1,49 @@
|
||||
public class GoodThreadBall {
|
||||
|
||||
/**the radius of the ball*/
|
||||
public static final int BALL_RADIUS = 8;
|
||||
|
||||
/**the x location of the ball*/
|
||||
private int xPos;
|
||||
|
||||
/**the y location of teh ball*/
|
||||
private int yPos;
|
||||
|
||||
|
||||
/**
|
||||
* creates a new ball given the starting x and y position
|
||||
*/
|
||||
public GoodThreadBall (int xPos, int yPos) {
|
||||
this.xPos = xPos;
|
||||
this.yPos = yPos;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* updates the the ball to move to the right
|
||||
*/
|
||||
public void update() {
|
||||
|
||||
this.xPos++;
|
||||
if (xPos > 600) {
|
||||
xPos = 0;
|
||||
}
|
||||
|
||||
} //end update
|
||||
|
||||
|
||||
/**
|
||||
* gets the x location
|
||||
*/
|
||||
public int getXPos() {
|
||||
return this.xPos;
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the y location
|
||||
*/
|
||||
public int getYPos() {
|
||||
return this.yPos;
|
||||
}
|
||||
|
||||
} //end class good thread bal
|
||||
@@ -0,0 +1,112 @@
|
||||
import java.awt.Frame;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Color;
|
||||
import java.awt.image.BufferStrategy;
|
||||
import java.util.Vector;
|
||||
import java.awt.event.WindowAdapter;
|
||||
import java.awt.event.WindowEvent;
|
||||
|
||||
|
||||
public class GoodThreadRun implements Runnable{
|
||||
|
||||
/**the number of balls we want to have run*/
|
||||
public static final int NUMBER_BALLS = 500;
|
||||
|
||||
/**the frame we are going to draw the balls on*/
|
||||
private Frame frame;
|
||||
|
||||
/**the vector containing all the created balls*/
|
||||
private Vector ballVector;
|
||||
|
||||
/**buffer strategy controlling the draw*/
|
||||
private BufferStrategy bufferStrategy;
|
||||
|
||||
/**the thread controlling the movement of all the balls*/
|
||||
private Thread thread;
|
||||
|
||||
/**boolean indicating the thread is running*/
|
||||
private boolean running = true;
|
||||
|
||||
|
||||
public GoodThreadRun() {
|
||||
frame = new Frame("Good Thread Example");
|
||||
frame.setSize(800, 600);
|
||||
frame.setResizable(false);
|
||||
frame.setVisible(true);
|
||||
frame.addWindowListener(new WindowAdapter() {
|
||||
|
||||
/** embedded window listener */
|
||||
public void windowClosing(WindowEvent we) {
|
||||
running = false;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
ballVector = new Vector();
|
||||
|
||||
frame.createBufferStrategy(3);
|
||||
bufferStrategy = frame.getBufferStrategy();
|
||||
|
||||
thread = new Thread(this);
|
||||
thread.start();
|
||||
|
||||
} //end init of good thread run
|
||||
|
||||
|
||||
/**
|
||||
starts the simulation
|
||||
*/
|
||||
public void run() {
|
||||
|
||||
/**creates the balls that will be running across the screen*/
|
||||
for (int i = 0; i < NUMBER_BALLS; i++) {
|
||||
ballVector.add(new GoodThreadBall(0, i * 4));
|
||||
}
|
||||
|
||||
/**
|
||||
* now we want to draw them again and again and again
|
||||
*/
|
||||
while (running) {
|
||||
/**gets the frame we are drawing on*/
|
||||
Graphics g = bufferStrategy.getDrawGraphics();
|
||||
|
||||
g.setColor(Color.black);
|
||||
g.fillRect(0, 0, frame.getWidth(), frame.getHeight());
|
||||
|
||||
g.setColor(Color.red);
|
||||
/**draws each circle*/
|
||||
for (int i = 0; i < ballVector.size(); i++) {
|
||||
GoodThreadBall ball = (GoodThreadBall) ballVector.get(i);
|
||||
ball.update();
|
||||
g.drawOval(ball.getXPos(), ball.getYPos(), ball.BALL_RADIUS, ball.BALL_RADIUS);
|
||||
} //end for
|
||||
|
||||
g.dispose();
|
||||
bufferStrategy.show();
|
||||
|
||||
try {
|
||||
thread.sleep(25);
|
||||
} catch (Exception e) {
|
||||
System.out.println("error sleeping thread");
|
||||
}
|
||||
|
||||
} //end while
|
||||
|
||||
System.exit(0);
|
||||
|
||||
|
||||
} //end start
|
||||
|
||||
|
||||
/** runs the example*/
|
||||
public static void main(String[] args) {
|
||||
|
||||
new GoodThreadRun();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
} //end class BadThreadRun
|
||||
842
CS2335/2335_lemmings/Lab_Files/final_project.html
Normal file
@@ -0,0 +1,842 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Final Project - Lemmings Clone (Lab Only)</title>
|
||||
<link href="final_project_files/style.css" type="text/css">
|
||||
</head>
|
||||
<body alink="#0000ff" vlink="#840084" link="#0000ff" text="black" bgcolor="white">
|
||||
<div lang="en" class="chapter">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h2 class="title"><a name="id2748662"></a>Chapter<EFBFBD>1.<2E>Final Project - Lemmings Clone</h2>
|
||||
</div>
|
||||
<div>
|
||||
<div class="author">
|
||||
<h3 class="author">Ted Choc</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="revhistory">
|
||||
<table summary="Revision history" width="100%" border="1">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th colspan="3" valign="top" align="left"><b>Revision History</b></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left">Revision 1.0</td>
|
||||
<td align="left">2004-2-16</td>
|
||||
<td align="left">TC</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3" align="left">Initial release in DocBook format.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="toc">
|
||||
<p><b>Table of Contents</b></p>
|
||||
<dl>
|
||||
<dt><a href="#id2792151">1. Game History</a></dt>
|
||||
<dt><a href="#id2792201">2. Resources</a></dt>
|
||||
<dd>
|
||||
<dl>
|
||||
<dt><a href="#id2792207">2.1. Animation</a></dt>
|
||||
<dt><a href="#id2792277">2.2 Graphics/Game Tips</a></dt>
|
||||
<dt><a href="#id2791916">2.3 Map Suggestion</a></dt>
|
||||
<dt><a href="#id2791988">2.4 Three-Thread Suggestion</a></dt>
|
||||
</dl>
|
||||
</dd>
|
||||
<dt><a href="#id2792670">3. Game Overview (Single Player Mode)</a></dt>
|
||||
<dd>
|
||||
<dl>
|
||||
<dt><a href="#id2792676">3.1. Game Objectives</a></dt>
|
||||
<dt><a href="#id2792714">3.2. Lemmings Abilities</a></dt>
|
||||
<dt><a href="#id2793166">3.3. Game Options </a></dt>
|
||||
<dt><a href="#id2793219">3.4. Game Interface</a></dt>
|
||||
<dt><a href="#id2793319">3.5. Level Structure</a></dt>
|
||||
</dl>
|
||||
</dd>
|
||||
<dt><a href="#id2793398">4. Two Player Mode</a></dt>
|
||||
<dt><a href="#id2793472">5. Requirements</a></dt>
|
||||
<dd>
|
||||
<dl>
|
||||
<dt><a href="#id2793479">5.1. Program Organization</a></dt>
|
||||
<dt><a href="#id2793561">5.2. Packages</a></dt>
|
||||
<dt><a href="#id2793584">5.3. UML Designs</a></dt>
|
||||
<dt><a href="#id2793696">5.4. JUnit</a></dt>
|
||||
<dt><a href="#id2793767">5.5. PMD/Checkstyle/Javadoc</a></dt>
|
||||
<dt><a href="#id2793807">5.6. Executable JAR</a></dt>
|
||||
<dt><a href="#id2793833">5.7. Ant Build File</a></dt>
|
||||
<dt><a href="#id2793861">5.8. No Spurious Output / No Uncaught Exceptions</a></dt>
|
||||
<dt><a href="#id2793890">5.9. Screen Size</a></dt>
|
||||
<dt><a href="#id2793906">5.10. Animation</a></dt>
|
||||
</dl>
|
||||
</dd>
|
||||
<dt><a href="#id2793954">6. Deliverables</a></dt>
|
||||
<dd>
|
||||
<dl>
|
||||
<dt><a href="#id2793976">6.1. Phase 1 Deliverables (UML Design)</a></dt>
|
||||
<dt><a href="#id2794024">6.2. Phase 2 Deliverables (Partial Code + JUnit)</a></dt>
|
||||
<dt><a href="#id2794221">6.3. Phase 3 Deliverables (Complete Code)</a></dt>
|
||||
<dt><a href="#id2794272">6.4. Phase 4 / In-Lab Demo Requirements</a></dt>
|
||||
</dl>
|
||||
</dd>
|
||||
<dt><a href="#id2794382">7. Extra Credit</a></dt>
|
||||
<dt><a href="#id2794604">8. References</a></dt>
|
||||
<dd>
|
||||
<dl>
|
||||
<dt><a href="#id2794610">8.1. Lemmings Basics</a></dt>
|
||||
<dt><a href="#id2794634">8.2. Existing Implementations</a></dt>
|
||||
<dt><a href="#id2794689">8.3. Ask a TA</a></dt>
|
||||
<dt><a href="#id2794728">8.4. Help Sessions</a></dt>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div style="margin-left: 0.5in; margin-right: 0.5in;" class="warning">
|
||||
<table summary="Warning" border="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td width="25" valign="top" align="center" rowspan="2"><img src="final_project_files/warning.png" alt="[Warning]"></td>
|
||||
<th align="left">Warning</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="left" colspan="2"><p> While this project is intended to be completed by a "team effort" it is important to remember that only members of YOUR team may contribute to YOUR project. </p>
|
||||
<p> This means that you may not "share" or "borrow" code or design solutions with ANYONE (this includes all individuals not affiliated with this class), EXCEPT members of YOUR team and official CS2335 teaching staff. </p>
|
||||
<p> The CS2335 TA's are well aware that Lemmings implementations are widely available (on the web and otherwise). Using or referencing the source code or design documents from any of these implementations is strictly prohibited. Including any materials associated with these implementations in your submission is strictly prohibited. De-compilation of any byte/object code is strictly prohibited. </p>
|
||||
<p> It should be noted that using material written by another individual in violation of a copyright or patent is a crime and subject to criminal/civil prosecution (see <a target="_top" href="http://www.copyright.gov/title17/">U.S. copyright law</a>, <a target="_top" href="http://www.uspto.gov/web/patents/legis.htm">U.S. patent law</a>). </p>
|
||||
<p> College of Computing staff will be comparing all submissions in an effort to identify any individuals who are involved in academic misconduct. In addition your submission will be compared to those otherwise available (via the web or otherwise). A "CHEAT-FINDER" WILL BE USED AND IT WILL COMPARE YOUR SUBMISSION TO OTHER STUDENTS' SUBMISSIONS AND THOSE AVAILABLE ON THE WEB - IF YOU CHEAT YOU WILL BE CAUGHT. </p>
|
||||
<p> Any activities that give a team an unfair advantage over any other team are considered academic misconduct (see <a target="_top" href="http://deanofstudents.gatech.edu/Honor/">Georgia Institute of Technology Academic Honor Code</a>). The College of Computing plans to prosecute all cases of academic misconduct in this class. If the College of Computing staff has reason to believe that any state or federal law has been violated, appropriate law enforcement officials may be notified. </p>
|
||||
<p> If you have any concerns about which resources may or may not be used, you should contact your CS2335 TA. If you know of outside resources (third-party libraries, etc.) that could be helpful, your TA can make them available. </p></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h2 style="clear: both;" class="title"><a name="id2792151"></a>1. Game History</h2>
|
||||
</div>
|
||||
</div>
|
||||
<p> In 1991, Psygnosis published a game called "Lemmings" for the Amiga, followed by releases for the PC and Macintosh. Lemmings was an unusual puzzle game, but it was a real hit. "Oh No! More Lemmings" came out shortly thereafter with a new levelset on top of the old engine. In 1993, "Lemmings 2: The Tribes" was released. It had the same basic gameplay and graphical style as the original, but with an updated engine with new maps and abilities. Later games included "Lemmings Chronicles," "All New World of Lemmings," "3D Lemmings," "Lemmings Paintball," and " Lemmings Revolution." All the games but Paintball kept the same general idea, though sometimes (as with 3D Lemmings) the gameplay was radically different. </p>
|
||||
<p> History taken from <a target="_top" href="http://www.utahdesign.com/lemmings/games.html">http://www.utahdesign.com/lemmings/games.html</a>. </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h2 style="clear: both;" class="title"><a name="id2792201"></a>2. Resources</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2792207"></a>2.1. Animation</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> Creating a game is a bit different from designing applications such as NetPaint and NetText. The largest adjustment you will have to overcome is implementing a graphics engine of sorts to handle all the drawing and animation that goes on in a typical game. Up to this point, you probably have been relying on Swing heavily, and making using of the update()/repaint() mechanism built in. The process Swing uses to draw is known as Passive Rendering, and while using Swing will still be more than fine for your basic User Interface in game, things will not go very smooth if you try to push Swing much further. </p>
|
||||
<p> The process we will be using in the creation of Lemmings is known as Active Rendering. Here, instead of just "suggesting" to a component to draw, we are going to grab the buffer and draw directly on it. While there are numerous approaches to accomplishing this task, the easiest and more than likely the fastest is with the aid of a class known as BufferStrategy. Every frame, when your graphics engine is called upon, you will request a the Graphics2D buffer from the BufferStrategy, drawn on the Graphics2D object like you are accustomed, and then tell the BufferStrategy to go on and flip the buffer when you are done with all your drawing. This might sound daunting/confusing, but actually is quite more straight forward than swing, and works far more reliably. </p>
|
||||
<p> Also, you want to avoid the overuse of Threading in a game, and unless you are integrating sound and networking, the rest of your game should probably run on one thread. All objects should be updated according to the time passed between each frame, rather than numerous timers or threads for each individual game object. </p>
|
||||
<p> To see a general example of the set up of a BufferStrategy and the proper use of threading in relation to multiple objects, check out <a target="_top" href="http://www.hydrous.net/%7Egt/2335/GraphicsExample.zip">http://www.hydrous.net/~gt/2335/GraphicsExample.zip</a>. Remember that you will probably want to use a Canvas instead of a Frame as in the example, as you can still use a Swing UI with an actively rendered Canvas embedded. </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2792277"></a>2.2 Graphics/Game Tips</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> A few things you might want to remember/know when creating a game are as follows. Most of these come from experience, and some are fundamentals of Java and OOP. </p>
|
||||
<div class="orderedlist">
|
||||
<ol type="1">
|
||||
<li> Object creation is expensive. In your game loop, you should avoid excessive object creation when possible. This includes things like storing a Color in a variable instead of creating the Color 4,000 times each iteration. </li>
|
||||
<li> Lots of threads leads to lots of trouble. Also, remember the key and mouse handling are done on a different thread then what you will be looping. In your event handler, try not to directly manipulate objects (such as changing a characters X Position when Right is pressed), rather set booleans that can be checked during your main thread and manipulate the objects from there. </li>
|
||||
<li> Transparency and AffineTransforms are not fast....at all...use them minimally. You can however use transparency (either bitmask or alpha) in images, and if loaded correctly those should be accelerated and with little/no slow down. A method to properly load images was given in an earlier lab and is highly advised to be used. DO NOT use ImageIcons. They are not the ticket =p. </li>
|
||||
<li> Try to keep the model and drawing separated, even if it is just in different methods in the same class. For example, a character should not have one method that updates movement and then draws the character on screen. These two tasks have nothing to do with each other and should be kept separated. </li>
|
||||
<li> ANT and CVS are your friend. Do not neglect them and do not neglect integration. Try to integrate as often as possible, if not continuously. </li>
|
||||
<li> If in you are stuck/need help, remember that somebody else has probably had the same problem. www.java.sun.com and www.javagaming.org forums are full of How-Tos and past questions. </li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2791916"></a>2.3 Map Suggestion</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> Once you read the complete lab, you might be stumped on how to possibly implement maps easily in the game. As you may notice, Lemmings maps will be dealing with quite a bit of direct pixel manipulation. From the explosions to walkable areas, each pixel on the game screen might be touched individually at some point in time </p>
|
||||
<p> One approach to the map would be with the aid of a couple of images, more specifically BufferedImages. A level can be created in any paint program, saved to a .png or .gif, and then used as the backdrop. A second image can also be created that will "mask" the level image. While the mask will never be displayed to the user, it will contain all the information on which portions of the map are walkable, which are not passable, and which pixels have been blown away etc. </p>
|
||||
<p> The mask should be the same size of the level image, and can be thought of as going on top of the level image. The mask will be a "key" of sorts, as each pixel on the mask will correspond to the same pixel on the image. Instead of being used for display, the mask will have color values that indicate the status of each pixel on the map. For example, a Red Color (255, 0, 0) might represent an unwalkable area, while Blue (0, 0, 255) could represent a boundary. Whenever a Lemming moves in the game, you can check the mask to see if the move is valid, or if actions should be take to move to a valid pixel. </p>
|
||||
<p> Since we have both the level and mask in images, accessing each specific pixel is quite easy and can be done with the help of the images Raster. A Raster contains all the pixel colors and the ability to set and check the color of any given pixel on the image. For example, lets say an explosion occurs at a point and has a radius of 5. You would then check the mask's Raster to see which pixels fall in that radius and have Color values that match pixels that can be blown up. After switching the relevant pixels on the mask, you then can change the level image to reflect the explosion in the mask. The methods you will primarily be concerned with for achieving this task will be the BufferedImage's getRaster() and the setPixel()/getPixel() methods of the Raster. </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2791988"></a>2.4 Three-Thread Suggestion</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> It is suggested that your program utilize three control threads for it's basic functions <span class="emphasis"><em>(hint: each of these should have a UML state diagram)</em></span>: </p>
|
||||
<div class="itemizedlist">
|
||||
<ul type="disc">
|
||||
<li><span class="bold"><b>Thread #1 (Networking)</b></span>: This thread will be like the other main threads you wrote for the previous lab to handle the socket connections to the other player's system. </li>
|
||||
<li><span class="bold"><b>Thread #2 (Kernel)</b></span>: This thread will will compute the movement of the Lemmings within a game. When the GUI gets input from the user (e.g. giving a Lemming an ability) it should add it to the queue of events to be processed in the Kernel. This thread should be a big loop that (i) updates the position of each Lemming (using a loop), (ii) processes any "in-progress events" (e.g. a lemming building a bridge should place the next tile, etc.), (iii) pops an event off the queue and processes it, (iv) waits a specified duration and then pops back to repeat the process all over again. </li>
|
||||
<li><span class="bold"><b>Thread #3 (GUI)</b></span>: This thread will run in the GUI and will periodically query the Kernel for updates in the game board while the game is running. It will then update the proper Swing/AWT components, as appropriate, to update the display. <span class="emphasis"><em>This thread should also be responsible for asking for updates of the number of Lemmings in/out for both the user and the opponent (if in two-player mode).</em></span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<p> <span class="emphasis"><em>While we said that each Thread is a loop, in practice it MAY be best implemented in a method without a loop and just set a timer to call that method again later.</em></span> </p>
|
||||
</div>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h2 style="clear: both;" class="title"><a name="id2792670"></a>3. Game Overview (Single Player Mode)</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2792676"></a>3.1. Game Objectives</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> The main objective of the game is to get all of your Lemmings safely through the current level. You do this by giving special abilities to your Lemmings which allows them to navigate safely to the end (unless of course you have to blow up some of your Lemmings for the greater good of the group). Every level has the following properties related to it: </p>
|
||||
<div class="orderedlist">
|
||||
<ol type="1">
|
||||
<li> Time Limit - The amount of time that you are allotted to complete a specific level. </li>
|
||||
<li> Percentage of Rescued Lemmings - The percentage of your Lemmings that must survive the level. </li>
|
||||
<li> Number of Lemmings to be Released - The number of Lemmings that will be released. </li>
|
||||
</ol>
|
||||
</div>
|
||||
<p> </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2792714"></a>3.2. Lemmings Abilities</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> In this section, you will learn of the multiple abilities that a Lemming can have during the progression of the game. To give a Lemming a particular ability, you will have to do the following: </p>
|
||||
<div class="orderedlist">
|
||||
<ol type="1">
|
||||
<li> Select the ability from the list of currently available ones (NOTE: All abilities have a limited number of uses per level. Even if an ability has no more uses, you should still be able to select that ability, which can result in some craziness). </li>
|
||||
<li> Hover the mouse over a particular Lemming, which should cause your mouse cursor should become a selection cursor. Then if you click the left mouse button, that Lemming should be ordained with the ability selected. </li>
|
||||
</ol>
|
||||
</div>
|
||||
<p> </p>
|
||||
<p> The default behavior (Walker) of all Lemmings is to pace back and forth. While in this state, a Lemming will walk as far as possible in the current direction it is facing, then it will turn around and repeat. Since Lemmings are not particularly smart creatures, they will walk off edges and will only be stopped by vertical obstacles. If a Lemming walks off an edge, one of several things may happen: </p>
|
||||
<div class="orderedlist">
|
||||
<ol type="1">
|
||||
<li> If the fallen distance is not that great (roughly 1/5 of the screen), then the Lemming will fall without being hurt. </li>
|
||||
<li> If the distance is greater, the Lemming will meet its demise upon contact with the ground. </li>
|
||||
<li> If the Lemming falls onto something that isn't solid ground (water, lava, off the bottom of the screen, etc...), then the Lemming will automatically die. </li>
|
||||
</ol>
|
||||
</div>
|
||||
<p> </p>
|
||||
<p> In addition to the default walking behavior, Lemmings have the following abilities: </p>
|
||||
<div class="informaltable">
|
||||
<table border="0">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><div align="left"><img align="left" src="final_project_files/digger.png"></div></td>
|
||||
<td> Digger - Burrows down vertically until it either reaches a non-diggable obstacle, in which case it stops, or it digs to the bottom of the current ground segment, which results in the digger (and all Lemmings following it) dropping down to the next piece of earth. If the Lemming burrows off the bottom of the screen, then he will die (as will subsequent Lemmings that fall into the hole made by the digger). </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="left"><img align="left" src="final_project_files/blocker.png"></div></td>
|
||||
<td> Blocker - Stands with arms outstretched to block the passage of other Lemmings. Once a Lemming becomes a blocker, the only way to get him to stop is to blow him up ( by causing Armageddon or by turning the Lemming into an exploder). </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="left"><img align="left" src="final_project_files/exploder.png"></div></td>
|
||||
<td> Exploder - This will cause the chosen Lemming to explode after a 5 second wait (during these 5 seconds, the Lemming will continue to operate in whichever role he had before), but the time remaining in the Lemming's life should appear above the poor creature. </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="left"><img align="left" src="final_project_files/floater.png"></div></td>
|
||||
<td> Floater - If a Lemming is selected to have this ability, then the next time the Lemming falls off an edge, it will float slowly to the ground. Therefore, a Lemming can fall from any height without being harmed. Once a Lemming is given this ability, it will retain the skill until the current level is won (or lost) or until it dies. </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="left"><img align="left" src="final_project_files/basher.png"></div></td>
|
||||
<td> Basher - Digs horizontally until it reaches a non-diggable obstacle or runs out of obstacle to dig through. The Lemming will only dig if he is directly in front (and facing) a suitable surface. If either of the previous conditions are not met, then the ability is wasted. </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="left"><img align="left" src="final_project_files/miner.png"></div></td>
|
||||
<td> Miner - Digs diagonally down in the current direction the Lemming is facing. This ability has the same constraints as the Digger ability. </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="left"><img align="left" src="final_project_files/climber.png"></div></td>
|
||||
<td> Climber - Climbs vertical surfaces. Once the Lemming has reached the top of the vertical surface, he will do one of the following:
|
||||
<div class="orderedlist">
|
||||
<ol type="1">
|
||||
<li> If the vertical surface is part of a plateau, then the Lemming will be placed on top of the plateau. </li>
|
||||
<li> If there is no horizontal surface for the lemming to be placed on, he will plummet back to the earth (need to take into account the resulting height of the fall similar to the constraints mentioned above). </li>
|
||||
</ol>
|
||||
</div>
|
||||
Once a Lemming is given this ability, it will retain the skill until the current level is won (or lost) or until it dies. </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="left"><img align="left" src="final_project_files/bridger.png"></div></td>
|
||||
<td> Bridger - Builds a bridge consisting of twelve bricks. Once the twelfth brick has been laid, he turns toward the camera for a moment. If you click on him again, he will lay another twelve bricks and so on. On the other hand if you choose not to click on him again, he becomes a walker again. The bridges constructed always span diagonally upward and in the direction the Lemming was facing. A Lemming will stop building a bridge if the bridge hits a solid object or if the lemming hits his head on something. </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div align="left"><img align="left" src="final_project_files/jumper.png"></div></td>
|
||||
<td> Jumper (Optional) - Causes the Lemming to jump in the direction they were currently walking. The lemming jumps both horizontally and vertically but covers a greater distance horizontally. The amount the lemming can jump is up to your implementation, but should be somewhat reasonable. </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><EFBFBD></td>
|
||||
<td> Hang glider (Optional) - Works like the floater. When a Lemming is chosen to be a hang glider, it behaves as a Walker until reaching at edge. Once it falls off, it falls at the same rate a Floater would, but keeps moving in the original direction of motion. Once designated a Floater, a Lemming keeps the ability until the end of the level or the end of its life, whichever comes first. </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<p> </p>
|
||||
<p> A complete list of all original Lemmings 2 abilities can be found at <a target="_top" href="http://www.utahdesign.com/lemmings/games.html">http://www.utahdesign.com/lemmings/games.html</a>. </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2793166"></a>3.3. Game Options </h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> While playing the game, you have the option to do any of the following: </p>
|
||||
<div class="itemizedlist">
|
||||
<ul type="disc">
|
||||
<li> Pause - Pauses the game. This must be bound to the key "P", which needs to toggle the pausing of the game. </li>
|
||||
<li> Nuke 'Em - Causes all of your Lemmings to take on the "Exploder" ability. This option is useful if you are losing a level and want to retry. </li>
|
||||
<li> Increase Lemming Flow - Causes the Lemmings to be released faster from the starting point (should range from 0 - 100). </li>
|
||||
<li> Decrease Lemming Flow - Causes the Lemmings to be released slower from the starting point. </li>
|
||||
<li> Speed Up Time - Increases the Game Speed by a factor of 3. This should be togglable. </li>
|
||||
</ul>
|
||||
</div>
|
||||
<p> </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2793219"></a>3.4. Game Interface</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> Your game interface must contain the following items: </p>
|
||||
<div class="itemizedlist">
|
||||
<ul type="disc">
|
||||
<li> Game Screen - The game screen with the Lemmings (must be able to scroll in all directions). </li>
|
||||
<li> Mini-map (Extra Credit) </li>
|
||||
<li> List of the Abilities available for the current level (and ONLY the abilities for this level). </li>
|
||||
<li> Level Statistics
|
||||
<div class="itemizedlist">
|
||||
<ul type="circle">
|
||||
<li> Number of Lemmings Released - The total number of Lemmings that have been released into the level (x/MAX_LEMMINGS_FOR_LEVEL) </li>
|
||||
<li> Number of Lemmings Saved - The total number of Lemmings that have successfully made it to the exit. </li>
|
||||
<li> Number of Lemmings Out - The total number of Lemmings that are currently on the screen. </li>
|
||||
<li> Time Remaining - The amount of time remaining to beat the level. </li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<p> In addition to these game specific components, you need to have the following components: </p>
|
||||
<div class="itemizedlist">
|
||||
<ul type="disc">
|
||||
<li> Help Screen - Should describe how to play the game </li>
|
||||
<li> About Screen - Personal Information about your team and game </li>
|
||||
<li> A means to select different levels, which must have some way to preview to the levels. </li>
|
||||
<li> A way to restart the current level. </li>
|
||||
</ul>
|
||||
</div>
|
||||
<p> </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2793319"></a>3.5. Level Structure</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> You will need to construct a level set that requires you to use each type of the Lemming. Your levels should be larger than one screen size such that you can show your scrolling ability. There are several components to each level, which are: </p>
|
||||
<div class="itemizedlist">
|
||||
<ul type="disc">
|
||||
<li> Ground - There are several different types of ground in the game. The ground can be floating platforms.
|
||||
<div class="orderedlist">
|
||||
<ol type="1">
|
||||
<li> Normal Ground - Your Lemmings can explode, dig, and manipulate this ground in any way. </li>
|
||||
<li> Non-permeable Ground - Your Lemmings can not explode, dig, or in any way modify this type of ground. </li>
|
||||
<li> Water/Lava - Your Lemmings instantly die on contact with this type of ground. </li>
|
||||
</ol>
|
||||
</div>
|
||||
</li>
|
||||
<li> Starting Point - These are the points where your Lemmings start from. There can be more than one of these per level. </li>
|
||||
<li> Ending Point - These are the points where your Lemmings must get to to complete the level. There can be multiple exits. </li>
|
||||
</ul>
|
||||
</div>
|
||||
<p> All of your levels MUST be winnable, but complex enough to give some sort of challenge. </p>
|
||||
<p> You will need to come up with some sort of way of representing a level on disk, such that you can load them whenever necessary. We recommend you use the rasterization method mentioned earlier. </p>
|
||||
</div>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h2 style="clear: both;" class="title"><a name="id2793398"></a>4. Two Player Mode</h2>
|
||||
</div>
|
||||
</div>
|
||||
<p>The other major requirement for this project is to add networking functionality to your version of Lemmings! Don't worry, though, we are looking for you to implement the classic two player version of the game. The rules go a little something like this: </p>
|
||||
<p>Each player (player 1 and 2) looks at a standard game screen. You need to have some method for each player to have an idea of how his opponent is doing. In other words, each player needs to see statistics on the player's number of Lemming's out, number in the Exit, number dead, etc. </p>
|
||||
<p> There are some special rules, to this part of the lab, of course. Each player starts off each level with 40 lemmings. The number of lemmings that get saved by a player are added on to this initial value of lemmings. Play continues until both players fail to save any lemmings. The player who saves the most lemmings is the winner. To Nuke 'Em, both players must first click the button for this mass Lemming death to occur. </p>
|
||||
<p> Other than these requirements, the game functions normally. Each player has his own set of skill icons. Either player can pause the game at any time. Lemmings head off, instinctively, toward the exit, after being dropped from the starting point. </p>
|
||||
<p> <span class="bold"><b>If you do not implement the two-player mode / networking component the maximum score you can get on Phase 4 / In-Lab Demo is 80/100 and all extra credit is worth only half of its published value.</b></span> </p>
|
||||
<div style="margin-left: 0.5in; margin-right: 0.5in;" class="note">
|
||||
<table summary="Note" border="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td width="25" valign="top" align="center" rowspan="2"><img src="final_project_files/note.png" alt="[Note]"></td>
|
||||
<th align="left">Note</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="left" colspan="2"> While you should pick a reasonable port number to use as the default, it should be possible for the user to easily change the port number being used. </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h2 style="clear: both;" class="title"><a name="id2793472"></a>5. Requirements</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2793479"></a>5.1. Program Organization</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> While your team is able to explore many design options, the following program organization must be followed: </p>
|
||||
<p> Your program must have three distinct units within it: </p>
|
||||
<div class="orderedlist">
|
||||
<ol type="1">
|
||||
<li><span class="bold"><b>GUI</b></span> -- This is the graphical front-end of your program. </li>
|
||||
<li><span class="bold"><b>Networking</b></span> -- This is any networking components required for your program to function for two-player mode. </li>
|
||||
<li><span class="bold"><b>Kernel</b></span> -- This is the heart of the program, the back end where all the game-play computation takes place. </li>
|
||||
</ol>
|
||||
</div>
|
||||
<p> In practice it will look something like this: </p>
|
||||
<pre class="screen"> +---------+ User Interactions +----------+ 2-Player +------------+
|
||||
| GUI |<------------------>| Kernel |<----------->| Networking |
|
||||
+---------+ Game Reactions +----------+ Updates +------------+
|
||||
</pre>
|
||||
<p> </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2793561"></a>5.2. Packages</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> Your program must make non-trivial use of packages to properly organize your source files. One suggested method is: </p>
|
||||
<pre class="screen"> edu.gatech.cs2335.lemmings.gui - The GUI front-end
|
||||
edu.gatech.cs2335.lemmings.net - The networking components
|
||||
edu.gatech.cs2335.lemmings.kernel - The game-play kernel
|
||||
edu.gatech.cs2335.lemmings.junit - JUnit tests.
|
||||
</pre>
|
||||
<p> </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2793584"></a>5.3. UML Designs</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> Your team will need to develop numerous UML diagrams to explain how your program will be organized and how it will work. The <span class="bold"><b>minimum</b></span> set of diagrams your TA will need to see are: </p>
|
||||
<div class="orderedlist">
|
||||
<ol type="1">
|
||||
<li> UML use-case diagram showing all users of the system and what they are able to do. </li>
|
||||
<li> UML class diagram which lays out all of the classes your program will use. It must include all public/protected methods and their parameters and return types. (Showing implementation-dependent methods -- private methods -- is optional.) </li>
|
||||
<li> A state diagram showing how the movements and actions of each lemming are processed in the game-play kernel. </li>
|
||||
<li> A state diagram showing how the GUI updates the game-play screen (i.e. how it gets the information from the kernel, processes it and displays it, and then does it again). </li>
|
||||
<li> Sequence diagrams showing the initiation, updates and conclusion of a two-player game. (Here the other computer system is an "external actor.") </li>
|
||||
<li> Sequence diagrams showing a user assigning an ability to a Lemming. </li>
|
||||
</ol>
|
||||
</div>
|
||||
<p> Remember, these are the <span class="bold"><b>absolute minimum</b></span> of the diagrams your TA expects to see, to get more than a "C" you will need to detail almost every aspect of your system. </p>
|
||||
<div style="margin-left: 0.5in; margin-right: 0.5in;" class="warning">
|
||||
<table summary="Warning" border="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td width="25" valign="top" align="center" rowspan="2"><img src="final_project_files/warning.png" alt="[Warning]"></td>
|
||||
<th align="left">Warning</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="left" colspan="2"><p> The UML diagrams your team submits for Phase 1 will need to be full-and-complete (except for extra credit items). </p>
|
||||
<p> Any changes to your program (addition/subtraction/modification of classes, public/protected methods, etc.) will require significant explanation be submitted in writing as to why the change was needed. (Items added due to extra credit can be documented with "Changed due to extra credit." as the reason for change.) </p></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<p> You do not need to account for using JUnit to test your program in your UML designs. </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2793696"></a>5.4. JUnit</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> Your must create JUnit tests for all methods in the game-play "kernel" of your program, except the <span class="bold"><b>few</b></span> methods that interact with the GUI or networking components. </p>
|
||||
<p> To make life easier, you may test an accessor in conjunction with testing a modifier with one set of tests. For example: </p>
|
||||
<pre class="screen"> public class Foo {
|
||||
/* stuff */
|
||||
|
||||
public synchronized void setBar ( int bar ) {
|
||||
this.bar = bar;
|
||||
}
|
||||
|
||||
public synchronized int getBar () {
|
||||
return this.bar;
|
||||
}
|
||||
}
|
||||
|
||||
public class TestFoo {
|
||||
/* stuff */
|
||||
|
||||
/** Tests both getBar() and setBar(int). */
|
||||
public void testGetBar () {
|
||||
Foo tester = new Foo ();
|
||||
|
||||
tester.setBar ( 12345 );
|
||||
|
||||
Assert.assertEquals ( tester.getBar(), 12345 );
|
||||
|
||||
/* many more test cases */
|
||||
}
|
||||
}
|
||||
</pre>
|
||||
<p> </p>
|
||||
<p> You will be graded on the thoroughness of your testing... in almost all cases, fewer then three or four test cases for a method is <span class="bold"><b>totally unacceptable</b></span>. </p>
|
||||
<p> <span class="emphasis"><em>Please see Lab3 and the CS2335 Lecture Slides for more details on proper use of JUnit.</em></span> </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2793767"></a>5.5. PMD/Checkstyle/Javadoc</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> Your program must pass PMD, Checkstyle and Javadoc without producing any errors or warnings (the checks to use have are the same as were specified in Lab3. </p>
|
||||
<div style="margin-left: 0.5in; margin-right: 0.5in;" class="warning">
|
||||
<table summary="Warning" border="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td width="25" valign="top" align="center" rowspan="2"><img src="final_project_files/warning.png" alt="[Warning]"></td>
|
||||
<th align="left">Warning</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="left" colspan="2"><p> Your program must pass PMD, Checkstyle and Javadoc without producing any errors or warnings. </p>
|
||||
<p> <span class="bold"><b>Significant point deductions</b></span> will result if your program fails to pass all of the three cleanly. </p></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2793807"></a>5.6. Executable JAR</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> Your program must be packed into an executable JAR archive. The archive should contain everything needed for running your program and should be executable from the command prompt as follows (assume your archive is named "Lem.jar"): </p>
|
||||
<pre class="screen"> % java -jar Lem.jar
|
||||
</pre>
|
||||
<p> <span class="emphasis"><em>Lab2 provides details on how to do this.</em></span> </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2793833"></a>5.7. Ant Build File</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> Your team must create an ant build file to be used for building and testing your program. Your build file must have the following targets: </p>
|
||||
<pre class="screen"> jar - Creates an executable JAR of your program (this should be the default)
|
||||
run - Runs the program
|
||||
junit - Runs the JUnit tests for the program
|
||||
build - Compiles your program
|
||||
pmd - Runs PMD on all of your source files
|
||||
checkstyle - Runs checkstyle on all of your source files
|
||||
javadoc - Runs javadoc on all of your source files
|
||||
</pre>
|
||||
<p> </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2793861"></a>5.8. No Spurious Output / No Uncaught Exceptions</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> Your program should not write any spurious output to the console (i.e. you will need to turn off your debugging messages in your submissions). </p>
|
||||
<p> All "normal" exceptions must be caught and handled in an appropriate manner. An example of an appropriate manner would be having a pop-up window come up explaining (in "normal-people" English -- not "Java-speak") that there was an error. Exceptions that are outside of your control (e.g. running out of memory through no fault of your program) are not considered your responsibility. </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2793890"></a>5.9. Screen Size</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> Your whole program's GUI should be able to be seen (and fully playable) in a 800x600 window (with the level just scrolling left/right). </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2793906"></a>5.10. Animation</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> All Lemmings must be animated (this includes animation for those walking left, walking right, falling, digging, etc. for all the things a lemming can be doing). </p>
|
||||
<p> We are requiring a minimum of three frames of animation per action. </p>
|
||||
<p> You may find it easiest to pre-render the animation of the Lemmings. </p>
|
||||
<p> Additionally, all Lemmings set to explode must have a count-down timer over their heads that counts down to the time when they will explode. </p>
|
||||
<p> <span class="emphasis"><em>We know this is not a class on graphics and do not require extensive animation for the basic requirements in this lab. Simple animated stick-figures that have their arms/legs move is acceptable.</em></span> </p>
|
||||
</div>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h2 style="clear: both;" class="title"><a name="id2793954"></a>6. Deliverables</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin-left: 0.5in; margin-right: 0.5in;" class="important">
|
||||
<table summary="Important" border="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td width="25" valign="top" align="center" rowspan="2"><img src="final_project_files/important.png" alt="[Important]"></td>
|
||||
<th align="left">Important</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="left" colspan="2"><pre class="screen"> 19 March 2004 - Phase 1 Due In Lab (UML Designs)
|
||||
2 April 2004 - Phase 2 Due on WebCT Before 08:00 (Partial Code + JUnit Tests)
|
||||
16 April 2004 - Phase 3 Due on WebCT Before 08:00 (Complete Code)
|
||||
23 April 2004 - Phase 4 Due on WebCT Before 08:00 / In-Lab Demo
|
||||
</pre></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2793976"></a>6.1. Phase 1 Deliverables (UML Design)</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin-left: 0.5in; margin-right: 0.5in;" class="warning">
|
||||
<table summary="Warning" border="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td width="25" valign="top" align="center" rowspan="2"><img src="final_project_files/warning.png" alt="[Warning]"></td>
|
||||
<th align="left">Warning</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="left" colspan="2"> Phase 1 is due IN LAB, NO LATER THAN at 12:50. Unlike Lab6 you may NOT draw your UML diagrams by hand. All pages must have your team ID on them (e.g. "Ted 9" or "Joe 7"). </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<p> For Phase 1 you must submit a copy of all UML designs to your TA in lab. Please see Section 5.3. for more explanation of what diagrams are required. </p>
|
||||
<p> Additionally your team must submit a completed P1_README.txt file. You should print out the file and staple it to the top of your UML diagrams. A good way of printing the file from within unix is with enscript, using the following command (substitute <span class="emphasis"><em>foo</em></span> with the name of the printer you wish to print to): </p>
|
||||
<pre class="screen"> % enscript -2rG -P <span class="emphasis"><em>foo</em></span> P1_README.txt
|
||||
</pre>
|
||||
<p> </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2794024"></a>6.2. Phase 2 Deliverables (Partial Code + JUnit)</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> For this phase your team must write most of the game-play kernel and enough of the GUI to start the game with a single level and show the Lemmings entering the level, falling, walking around, and changing direction when they hit a wall. </p>
|
||||
<p> For this phase you must complete the following portions of your program: </p>
|
||||
<div class="orderedlist">
|
||||
<ol type="1">
|
||||
<li><span class="bold"><b>GUI</b></span>: The game-play window needs to be able to display a level. The user must be able to start a single level running which demonstrates Lemmings entering the level, falling, walking around, and changing direction when they hit a wall. The lemmings need to be animated properly. The following do NOT need to be supported at this time:
|
||||
<div class="orderedlist">
|
||||
<ol type="a">
|
||||
<li> User interaction while a level is running (i.e. the ability to assign Lemmings with special tasks, etc.). </li>
|
||||
<li> Two-player mode. </li>
|
||||
<li> Scrolling ability. </li>
|
||||
<li> Selecting levels (other than the single demonstration level which shows the above items). </li>
|
||||
<li> Ending a game, except by running out of time. </li>
|
||||
<li> "Help" or "About" screens. </li>
|
||||
</ol>
|
||||
</div>
|
||||
</li>
|
||||
<li><span class="bold"><b>Game-Play Kernel</b></span>: The entire kernel must be written, except the parts associated with two-player mode and networking components. </li>
|
||||
<li><span class="bold"><b>Networking</b></span>: This entire section may be non-functional at this time. </li>
|
||||
<li><span class="bold"><b>JUnit Tests</b></span>: All JUnit tests must be written and able to run. Grading will weight more heavily on the completeness of your test cases than on passing the test cases (i.e. don't remove test cases just because they may fail). </li>
|
||||
<li><span class="bold"><b>PMD/Checkstyle/Javadoc Rule</b></span>: This rule will not apply to this phase. </li>
|
||||
<li><span class="bold"><b>No Spurious Output / No Uncaught Exceptions Rule</b></span>: This rule will not apply to this phase. </li>
|
||||
</ol>
|
||||
</div>
|
||||
<p> </p>
|
||||
<div style="margin-left: 0.5in; margin-right: 0.5in;" class="note">
|
||||
<table summary="Note" border="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td width="25" valign="top" align="center" rowspan="2"><img src="final_project_files/note.png" alt="[Note]"></td>
|
||||
<th align="left">Note</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="left" colspan="2"> Your code must compile cleanly and run. If your team gets a head-start on items not required for this phase (which is recommended) you should disable any items that cause your program not to compile/run (you may (comment-out section as required). </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<p> Your team must submit the following to WebCT in an archive (tar/gzip/jar/zip): </p>
|
||||
<div class="orderedlist">
|
||||
<ol type="1">
|
||||
<li> A completed P2_README.txt document (see supplemental files available on WebCT). </li>
|
||||
<li> Your team's Ant build file. </li>
|
||||
<li> All source code required for running your program. </li>
|
||||
<li> All supplemental files used by your program (including images, etc.). </li>
|
||||
</ol>
|
||||
</div>
|
||||
<p> </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2794221"></a>6.3. Phase 3 Deliverables (Complete Code)</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> Everything should be working by now, except for the extra credit items. A few bugs remaining at this stage is ok (you can fix them over the next week), but they should not impact the overall functionality of the program. Sufficient levels should be included that show all of the tasks your lemmings can perform. </p>
|
||||
<p> Your team must submit the following to WebCT in an archive (tar/gzip/jar/zip): </p>
|
||||
<div class="orderedlist">
|
||||
<ol type="1">
|
||||
<li> A completed P3_README.txt document. </li>
|
||||
<li> Your team's Ant build file. </li>
|
||||
<li> All source code required for running your program. </li>
|
||||
<li> All supplemental files used by your program (including images, etc.). </li>
|
||||
</ol>
|
||||
</div>
|
||||
<p> </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2794272"></a>6.4. Phase 4 / In-Lab Demo Requirements</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> <span class="bold"><b>Phase 4</b></span>: For this phase you will need to submit your finished project (extra credit options included) to WebCT as an archive (tar/gzip/jar/zip) with the following items: </p>
|
||||
<div class="orderedlist">
|
||||
<ol type="1">
|
||||
<li> A completed P4_README.txt document. </li>
|
||||
<li> Your team's Ant build file. </li>
|
||||
<li> All source code required for running your program. </li>
|
||||
<li> All supplemental files used by your program (including images, etc.). </li>
|
||||
</ol>
|
||||
</div>
|
||||
<p> </p>
|
||||
<div style="margin-left: 0.5in; margin-right: 0.5in;" class="important">
|
||||
<table summary="Important" border="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td width="25" valign="top" align="center" rowspan="2"><img src="final_project_files/important.png" alt="[Important]"></td>
|
||||
<th align="left">Important</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="left" colspan="2"><span class="bold"><b>Failure to submit Phase 4 to WebCT on time and without missing files will result in an AUTOMATIC ZERO for Phase 4/In-Lab Demo and will cancel-out any points assigned during the In-Lab Demo.</b></span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<p> <span class="bold"><b>In-Lab Demo</b></span>: This is "your time to shine." Your team will have <span class="bold"><b>12 Minutes</b></span> to show your TA the functionality of your program. It is essential to <span class="bold"><b>be prepared when your demo time begins</b></span> because your TA will move onto the next team as soon as your <span class="bold"><b>12 minutes</b></span> is up. </p>
|
||||
<p> Details on what to have prepared for your demo will be posted to the class newsgroup during the week prior to the demo. </p>
|
||||
</div>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h2 style="clear: both;" class="title"><a name="id2794382"></a>7. Extra Credit</h2>
|
||||
</div>
|
||||
</div>
|
||||
<p> Up to a total of <span class="bold"><b>50 Extra Credit Points</b></span> may be earned. All extra credit will be applied to the In-Lab Demo portion of your grade. </p>
|
||||
<p> The following items are pre-approved for extra credit: </p>
|
||||
<div class="itemizedlist">
|
||||
<ul type="disc">
|
||||
<li><span class="bold"><b>(5 Points) "Best in Show":</b></span> The team with the best project, out of all CS2335 teams, will be automatically awarded 5 extra credit points. The judging for this will be done by the TA's at the end of the day. </li>
|
||||
<li><span class="bold"><b>(5 Points) Great Graphics:</b></span> Make your graphics look really cool and earn more points (TA discretion), 'nuf said. <span class="emphasis"><em>No extra credit will be given for a 3D implementation of Lemmings.</em></span></li>
|
||||
<li><span class="bold"><b>(10/15 Points) Single Component Only:</b></span> Implement everything within a single Swing/AWT component that is in a Frame/JFrame. This means that all menus, messages to the user, user prompts, etc. all appear in the same component that the game is depicted in. (This means no menu bars, no JButton's, no TextField's, etc. anywhere in your program.) <span class="emphasis"><em>This is normally worth 10 points, but is worth 15 points if done in conjunction with the Split-Screen extra credit option.</em></span></li>
|
||||
<li><span class="bold"><b>(3 Points) Users Manual:</b></span> Create an extensive manual for your program in HTML-format. It must explain (<span class="emphasis"><em>IN YOUR OWN WORDS</em></span>) how to do everything in your program. It must explain the Lemmings' abilities and how to use them. It must include a large number of screen shots that illustrate your explanations. </li>
|
||||
<li><span class="bold"><b>(10 Points) Zooming:</b></span> Give the user the ability to zoom in and out on the display screen for the game (zoom makes everything appear 25%, 50%, 100%, 200%, 400% of the normal size WITHOUT CHANGING THE SIZE OF THE BOARD -- i.e. you are changing the resolution displayed). With this you must include the ability to scroll up/down (along with the left/right). Remember to account for the differences associated with the cursor's resolution as the display resolution changes. Also, include significant detail in your designs such that it doesn't look "jagged" when viewed at 400%. </li>
|
||||
<li><span class="bold"><b>(5-10 Points) "Attract" Mode:</b></span> You are probably familiar with the way arcade games play demos of the game in an effort to attract users to play the game. Here you need to create your own attract sequence that plays a level without user input (and without accepting user input) but stops as soon as a user selects to start a new game. To do this you will need to simulate user input into the system (just showing a movie is not acceptable) and have the kernel act accordingly. One way would be to supply a list of commands in a file and then execute one every second (with "do nothing" commands when a break is needed). If you do it this way you will want to experiment with using the tools in the java.lang.reflect package. </li>
|
||||
<li><span class="bold"><b>(5 Points) Mini-Map of the Level:</b></span> While playing the game there should be a miniature map of the current level (including the parts of the level that extend off of the screen), which needs to have some way of showing your Lemmings, the starting and ending points and the terrain. </li>
|
||||
<li><span class="bold"><b>(10 Points) Split-Screen Multi-Player:</b></span> In multi-player game, the screen divides and each player sees both their game and what their opponent is doing. The thing that needs to change is that the opponents Lemmings need to be drawn in a different color than the standard lemmings that are under the main player's control. </li>
|
||||
<li><span class="bold"><b>(2 Points Each) New Lemming Abilities:</b></span> We've listed a couple of optional Lemmings abilities. You can implement these, or email us suggestions of your own wacky Lemmings. If you do this, your maps must make use of your new Lemming abilities. </li>
|
||||
</ul>
|
||||
</div>
|
||||
<p> Your team may propose additional items for the TA's to consider for extra credit. All proposal for extra credit should be emailed to Adrian (aabraham@cc) by 23:59 on 31 March 2004, you must put "[CS2335] Extra Credit" in the subject line of the email. Items accepted for extra credit, and the point values of such will be posted to the newsgroup the following week. </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h2 style="clear: both;" class="title"><a name="id2794604"></a>8. References</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2794610"></a>8.1. Lemmings Basics</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> A list of instructions to Lemmings can be found at: <a target="_top" href="http://www.kallex.de/lemmings/misc/instructions.txt">http://www.kallex.de/lemmings/misc/instructions.txt</a> </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2794634"></a>8.2. Existing Implementations</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> You may find it helpful to play Lemmings to get a "feel" for how the game works before writing a clone for it. The following are a few of the known clones of the classic Lemmings (which is no longer available for purchase): </p>
|
||||
<div class="orderedlist">
|
||||
<ol type="1">
|
||||
<li> Java Applet of Lemmings -- <a target="_top" href="http://www.autism-pdd.net/booklet/lemmings32k/lem32.html">http://www.autism-pdd.net/booklet/lemmings32k/lem32.html</a></li>
|
||||
<li> Pingus for Linux -- <a target="_top" href="http://pingus.seul.org/welcome.html">http://pingus.seul.org/welcome.html</a></li>
|
||||
</ol>
|
||||
</div>
|
||||
<p> <span class="emphasis"><em>Use of these programs is AT YOUR OWN RISK and subject to their respective licensing agreements. CS2335 provides NO SUPPORT for their use.</em></span> </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2794689"></a>8.3. Ask a TA</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> Like the members of your team, not every CS2335 TA is an expert in everything, here is a quick list of who is an expert in what. (Note that you can still ask any TA, but these are the ones who will be best able to answer any specialized questions.) </p>
|
||||
<pre class="screen"> TA | Expert In
|
||||
--------+-----------------------------
|
||||
Ted | Java Graphics
|
||||
| Ant
|
||||
--------+-----------------------------
|
||||
Adrian | Extra Credit Options
|
||||
| Sockets/Networking
|
||||
| Threads/Synchronization
|
||||
--------+-----------------------------
|
||||
Joe | Lab Requirements
|
||||
| Threads/Synchronization
|
||||
| Using java.lang.reflect
|
||||
--------+-----------------------------
|
||||
Andrew | Ant
|
||||
| JUnit
|
||||
--------+-----------------------------
|
||||
Ryan | Java Graphics eXpert
|
||||
| Animation
|
||||
--------+-----------------------------
|
||||
Hemal | PMD/Checkstyle/Javadoc
|
||||
| JUnit
|
||||
| Eclipse/SWT
|
||||
--------+-----------------------------
|
||||
</pre>
|
||||
<p> </p>
|
||||
</div>
|
||||
<div lang="en" class="section">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<h3 class="title"><a name="id2794728"></a>8.4. Help Sessions</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p> The CS2335 TA's will be providing help-sessions to help you with this project. The time and location of the help sessions will be posted to the newsgroup after Spring Break. </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
BIN
CS2335/2335_lemmings/Lab_Files/final_project_files/basher.png
Normal file
BIN
CS2335/2335_lemmings/Lab_Files/final_project_files/blocker.png
Normal file
BIN
CS2335/2335_lemmings/Lab_Files/final_project_files/bridger.png
Normal file
BIN
CS2335/2335_lemmings/Lab_Files/final_project_files/climber.png
Normal file
BIN
CS2335/2335_lemmings/Lab_Files/final_project_files/digger.png
Normal file
BIN
CS2335/2335_lemmings/Lab_Files/final_project_files/exploder.png
Normal file
BIN
CS2335/2335_lemmings/Lab_Files/final_project_files/floater.png
Normal file
BIN
CS2335/2335_lemmings/Lab_Files/final_project_files/important.png
Normal file
BIN
CS2335/2335_lemmings/Lab_Files/final_project_files/jumper.png
Normal file
BIN
CS2335/2335_lemmings/Lab_Files/final_project_files/miner.png
Normal file
BIN
CS2335/2335_lemmings/Lab_Files/final_project_files/note.png
Normal file
40
CS2335/2335_lemmings/Lab_Files/final_project_files/style.css
Normal file
@@ -0,0 +1,40 @@
|
||||
.important {
|
||||
background-color: #FFA8A8;
|
||||
border-width: 1;
|
||||
border-color: #000000;
|
||||
border-style: dashed;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.caution {
|
||||
background-color: #FFFF99;
|
||||
border-width: 1;
|
||||
border-color: #000000;
|
||||
border-style: dashed;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.warning {
|
||||
background-color: #FFFF00;
|
||||
border-width: 1;
|
||||
border-color: #000000;
|
||||
border-style: dashed;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.note {
|
||||
background-color: #E8E8E8;
|
||||
border-width: 1;
|
||||
border-color: #000000;
|
||||
border-style: dashed;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.chapter {
|
||||
font-family: Georgia, Garamond, serif;
|
||||
}
|
||||
|
||||
.contrib {
|
||||
font-size: 8pt;
|
||||
text-indent: 15px;
|
||||
}
|
||||
BIN
CS2335/2335_lemmings/Lab_Files/final_project_files/warning.png
Normal file
BIN
CS2335/2335_lemmings/Lem.jar
Normal file
BIN
CS2335/2335_lemmings/Lemmings.jcd
Normal file
516
CS2335/2335_lemmings/Lemmings.jcp
Normal file
@@ -0,0 +1,516 @@
|
||||
<?xml?>
|
||||
|
||||
<project>
|
||||
|
||||
<settings>
|
||||
|
||||
<label>Lemmings</label>
|
||||
|
||||
<root_path>\</root_path>
|
||||
|
||||
<output_path>D:\School Shit\04 - 2004 Spring\CS 2335\CVS_Repository\2335_lemmings\build\</output_path>
|
||||
|
||||
<source_path>C:\Documents and Settings\Vladimir Urazov\My Documents\My Programs\Java\CS2335\2335_lemmings\src\</source_path>
|
||||
|
||||
<jdkprofile_ref>j2sdk1.4.2_03</jdkprofile_ref>
|
||||
|
||||
<compiler_ref><Default></compiler_ref>
|
||||
|
||||
<ant_ref><Default></ant_ref>
|
||||
|
||||
</settings>
|
||||
|
||||
<runtimes>
|
||||
|
||||
<runtime>
|
||||
|
||||
<label><Default></label>
|
||||
|
||||
<application_ref><Default></application_ref>
|
||||
|
||||
<applet_ref/>
|
||||
|
||||
<debugger_ref><Default></debugger_ref>
|
||||
|
||||
<param/>
|
||||
|
||||
<run>edu.gatech.cs2335.lemmings.engine.ProgramRunner</run>
|
||||
|
||||
</runtime>
|
||||
|
||||
</runtimes>
|
||||
|
||||
<libraries/>
|
||||
|
||||
<files>
|
||||
|
||||
<include>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src</path>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu</path>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech</path>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335</path>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings</path>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\graphics</path>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui</path>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\engine</path>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\engine\lemmingjob</path>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\physics</path>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\file</path>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\networking</path>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>build.xml</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>build_jose.xml</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>part3.zip</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>phase2.zip</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>resources.txt</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\graphics\AnimatedSprite.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\graphics\Direction.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\graphics\ImageLoader.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\graphics\ImageUtilities.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\graphics\ImprovedTileSet.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\graphics\Looping.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\graphics\Renderer.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\graphics\TileSet.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\graphics\TileSetManager.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\GamePlayPanel.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\IClickable.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\IMouseMotionable.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\IMouseWheelable.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\ITypable.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\JobButton.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\JobContainer.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\JobSelectionEvent.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\JobSelectionListener.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\LAbstractButton.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\LApplication.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\LButton.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\LColoredComponent.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\LComponent.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\LContainer.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\LevelButton.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\LevelContainer.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\LFader.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\LFancyLabel.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\LIcon.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\LLabel.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\LLeafComponent.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\LRootPane.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\LTextField.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\LToggleButton.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\engine\AbstractGameState.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\engine\BloodParticle.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\engine\BoneParticle.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\engine\CreditsState.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\engine\DirtParticle.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\engine\EstablishingConnectionState.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\engine\FlameParticle.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\engine\FlingTrap.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\engine\GameEngine.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\engine\GamePlayState.java</path>
|
||||
|
||||
<source>true</source>
|
||||
|
||||
</fileitem>
|
||||
|
||||
<fileitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\engine\HelpState.java</path>
|
||||
|
||||
340
CS2335/2335_lemmings/Lemmings.jcu
Normal file
@@ -0,0 +1,340 @@
|
||||
<?xml?>
|
||||
|
||||
<workspace_user>
|
||||
|
||||
<active_project>
|
||||
|
||||
<label>Lemmings</label>
|
||||
|
||||
</active_project>
|
||||
|
||||
<projects>
|
||||
|
||||
<project>
|
||||
|
||||
<label>Lemmings</label>
|
||||
|
||||
<showfiles>false</showfiles>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\graphics</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\graphics\CVS</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\gui\CVS</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\engine</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\engine\lemmingjob</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\engine\lemmingjob\CVS</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\engine\CVS</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\physics</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\physics\CVS</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\CVS</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\file</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\file\CVS</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\junit</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\junit\CVS</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\junit\file</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\junit\file\CVS</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\networking</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings\networking\CVS</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\CVS</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\CVS</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\CVS</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\CVS</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>build</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>build\edu</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>build\edu\gatech</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>build\edu\gatech\cs2335</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>build\edu\gatech\cs2335\lemmings</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>build\edu\gatech\cs2335\lemmings\engine</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>build\edu\gatech\cs2335\lemmings\engine\lemmingjob</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>build\edu\gatech\cs2335\lemmings\file</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>build\edu\gatech\cs2335\lemmings\graphics</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>build\edu\gatech\cs2335\lemmings\gui</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>build\edu\gatech\cs2335\lemmings\physics</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>CVS</path>
|
||||
|
||||
<ext/>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
16
CS2335/2335_lemmings/Lemmings.jcw
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml?>
|
||||
|
||||
<workspace>
|
||||
|
||||
<settings>
|
||||
|
||||
<label>Lemmings</label>
|
||||
|
||||
</settings>
|
||||
|
||||
<users>
|
||||
|
||||
<user>
|
||||
|
||||
<path>Lemmings.jcu</path>
|
||||
|
||||
BIN
CS2335/2335_lemmings/Lemmings2.jcd
Normal file
48
CS2335/2335_lemmings/Lemmings2.jcu
Normal file
@@ -0,0 +1,48 @@
|
||||
<?xml?>
|
||||
|
||||
<workspace_user>
|
||||
|
||||
<active_project>
|
||||
|
||||
<label>Lemmings</label>
|
||||
|
||||
</active_project>
|
||||
|
||||
<projects>
|
||||
|
||||
<project>
|
||||
|
||||
<label>Lemmings</label>
|
||||
|
||||
<showfiles>false</showfiles>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src</path>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu</path>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech</path>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335</path>
|
||||
|
||||
</folderitem>
|
||||
|
||||
<folderitem>
|
||||
|
||||
<path>src\edu\gatech\cs2335\lemmings</path>
|
||||
|
||||
</folderitem>
|
||||
|
||||
16
CS2335/2335_lemmings/Lemmings2.jcw
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml?>
|
||||
|
||||
<workspace>
|
||||
|
||||
<settings>
|
||||
|
||||
<label>Lemmings</label>
|
||||
|
||||
</settings>
|
||||
|
||||
<users>
|
||||
|
||||
<user>
|
||||
|
||||
<path>Lemmings2.jcu</path>
|
||||
|
||||
91
CS2335/2335_lemmings/P2_README.txt
Normal file
@@ -0,0 +1,91 @@
|
||||
CS2335 - Spring 2004 Final Project - Lemmings
|
||||
=============================================================================
|
||||
P2_README
|
||||
=============================================================================
|
||||
DIRECTIONS:
|
||||
This form must be filled out and submitted with the rest of your files for
|
||||
this lab. For each item replace the underscore characters ('_') with the
|
||||
proper information. If you need more lines than those shown, feel free to
|
||||
add them.
|
||||
=============================================================================
|
||||
|
||||
1. Team Members:
|
||||
Name: __Jose Caban______________
|
||||
GTNum: gtg184g
|
||||
|
||||
Name: __Vladimir Urazov_________
|
||||
GTNum: gtg308i
|
||||
|
||||
Name: __Daniyar Zhanbekov_______
|
||||
GTNum: gtg563g
|
||||
|
||||
Name: __Andrew C. Knight________
|
||||
GTNum: gtg284h
|
||||
|
||||
2. Compilation Instructions:
|
||||
__ant build_________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
|
||||
3. Instructions for Running the Program:
|
||||
__ant run___________________________________________________
|
||||
_______Enjoy!_______________________________________________
|
||||
____________________________________________________________
|
||||
|
||||
4. Known Bugs:
|
||||
__None._____________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
|
||||
5. Extra Credit Attempted & Name of TA Who Approved If Not From
|
||||
Lab File:
|
||||
__N/A for this phase._______________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
|
||||
6. Testing/Development Environments (Include OS):
|
||||
[REMINDER: This lab will be graded on the RedHat systems in
|
||||
the States Lab.]
|
||||
__Windows XP Professional SP2, Windows XP Home, ____________
|
||||
__Gentoo Linux 2.6.4, States Lab, Fedora, FreeBSD, _________
|
||||
__Solaris 10b1, Slackware 2.4.22, SuSe 9.0, HP-UX, Mac OS X,
|
||||
__AIX, OS/2, Windows 98SE, Toaster 3.0, Oberon 2.3.6, Minix_
|
||||
|
||||
7. Comments:
|
||||
__We stopped testing after FreeBSD ;)_______________________
|
||||
____________________________________________________________
|
||||
__GameEngine, from the UML (included as a Visio file in our_
|
||||
__Submission), cannot really be JUnit tested, as far as we__
|
||||
__as the team can tell. The Game Engine class itself does _
|
||||
__nothing in and of itself, rather it makes GUI calls using
|
||||
__information provided by all the JUnit tested "kernel"
|
||||
__classes. The PhysicsEngine is the biggest worker, which
|
||||
__is completely JUnit tested. The main part is complete and
|
||||
__the JUnit tests for future (TODO) implementations are
|
||||
__complete. The lemmingjob.process() function is the next
|
||||
__important function, which processes what actually needs
|
||||
__to be done by the lemmings or what they actually do. These
|
||||
__classes are also fully JUnit'ed. The rest of the Engine,
|
||||
__that is the Map, LevelData, etc, are all JUnit tested.
|
||||
__This harangue, however, was deemed necessary to ensure
|
||||
__that there was no misunderstanding between what the
|
||||
__GameEngine class itself, and the various states, do. They
|
||||
__do not perform any logic calculations, merely take data
|
||||
__JUnit tested classes and give it to the GUI.
|
||||
__By the way, true gravity has to be worth something :P
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
100
CS2335/2335_lemmings/P3_README.txt
Normal file
@@ -0,0 +1,100 @@
|
||||
CS2335 - Spring 2004 Final Project - Lemmings
|
||||
=============================================================================
|
||||
P3_README
|
||||
=============================================================================
|
||||
DIRECTIONS:
|
||||
This form must be filled out and submitted with the rest of your files for
|
||||
this lab. For each item replace the underscore characters ('_') with the
|
||||
proper information. If you need more lines than those shown, feel free to
|
||||
add them.
|
||||
=============================================================================
|
||||
|
||||
1. Team Members:
|
||||
Name: __Jose Caban______________
|
||||
GTNum: gtg184g
|
||||
|
||||
Name: __Vladimir Urazov_________
|
||||
GTNum: gtg308i
|
||||
|
||||
Name: __Daniyar Zhanbekov_______
|
||||
GTNum: gtg563g
|
||||
|
||||
Name: __Andrew C. Knight________
|
||||
GTNum: gtg284h
|
||||
|
||||
2. Compilation Instructions:
|
||||
__ant build_________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
|
||||
3. Instructions for Running the Program:
|
||||
__ant run______________________________________
|
||||
_______Enjoy!_______________________________________________
|
||||
____________________________________________________________
|
||||
|
||||
4. Known Bugs:
|
||||
__None._____________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
currentVelocity.setI(PhysicsSettings.getInitialX());
|
||||
5. Extra Credit Attempted & Name of TA Who Approved If Not From
|
||||
Lab File:
|
||||
__N/A for this phase._______________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
|
||||
6. Testing/Development Environments (Include OS):currentVelocity.setI(PhysicsSettings.getInitialX());
|
||||
[REMINDER: This lab will be graded on the RedHat systems in
|
||||
the States Lab.]
|
||||
__Windows XP Professional SP2, Windows XP Home, ____________
|
||||
__Gentoo Linux 2.6.4, States Lab, Fedora, FreeBSD___________
|
||||
|
||||
7. Comments:
|
||||
__There are a couple of unresolved bugs, that don't really__
|
||||
__hurt gameplay, but will be resolved for the final ________
|
||||
__submission. Primarily, these are visible with certain side
|
||||
__effects when changing the job of a lemming while hes falling
|
||||
__as well as certain instances when the climber will have
|
||||
__problems with hitting a wall above his head, this
|
||||
__affects his movement in the right direction, for some
|
||||
__reason this shows no problems when moving in the left
|
||||
__direction. There are a few minor bugs here and there,
|
||||
__however, these should cause no problems with gameplay.
|
||||
__Not all animations are complete, however, so certain
|
||||
__things will look the same. The truly "complete and playable"
|
||||
__level is "Let 'Em Drown", the rest are for testing. Please
|
||||
__run test_level to see all lemmings available at once. If
|
||||
__you want to add a lemming to a different level, simply open
|
||||
__up the file for test_level and look at the declaration, the
|
||||
__Map Loader will take care of the rest.
|
||||
__Also, there are a couple Multiplayer issues:
|
||||
__if there is an exception when connecting, the player will
|
||||
__be shot back into the main menu. In addition, if during
|
||||
__play one player disconnects, the other player will simply
|
||||
__keep playing as much as he wants.
|
||||
__During a net game, when a player wins, the game will
|
||||
__pause for that player until the other player finishes, though
|
||||
__the game stats will not be updated at that time. This is
|
||||
__simply a game bug and will be fixed for final.
|
||||
__The last bug that should be noted is that explosions and digging
|
||||
__slightly "nick" at unbreakable terrain, though not completely
|
||||
__break it (or significantly break for that matter).
|
||||
__This is simply a bug.
|
||||
__Special things implemented this time:
|
||||
__Zoom, Glider (use mouse wheel or pgup/pgdn for zoom)
|
||||
__ Have Fun and be generous! ;)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
72
CS2335/2335_lemmings/P4_README.txt
Normal file
@@ -0,0 +1,72 @@
|
||||
CS2335 - Spring 2004 Final Project - Lemmings
|
||||
=============================================================================
|
||||
P4_README
|
||||
=============================================================================
|
||||
DIRECTIONS:
|
||||
This form must be filled out and submitted with the rest of your files for
|
||||
this lab. For each item replace the underscore characters ('_') with the
|
||||
proper information. If you need more lines than those shown, feel free to
|
||||
add them.
|
||||
=============================================================================
|
||||
|
||||
1. Team Members:
|
||||
Name: __Vladimir Urazov_________
|
||||
GTNum: gtg308i
|
||||
|
||||
Name: __Jose Caban______________
|
||||
GTNum: gtg184g
|
||||
|
||||
Name: __Daniyar Zhanbekov_______
|
||||
GTNum: gtg563g
|
||||
|
||||
Name: __Andrew C. Knight________
|
||||
GTNum: gtg284h
|
||||
|
||||
2. Compilation Instructions:
|
||||
__ant build_________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
|
||||
3. Instructions for Running the Program:
|
||||
__ant run______________________________________
|
||||
_______Enjoy!_______________________________________________
|
||||
____________________________________________________________
|
||||
|
||||
4. Known Bugs:
|
||||
__None._____________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
|
||||
5. Extra Credit Attempted & Name of TA Who Approved If Not From
|
||||
Lab File:
|
||||
__Glider lemming, Jumper lemming, Mini-map, Single Component
|
||||
UI, Great Graphics (look at all those graphics), Instruction
|
||||
Manual, Zoom, Attract Mode, Dynamic Objects (look at those
|
||||
particles, and they can be static if not for memory ;)),
|
||||
True to life physics engine (ok, fine, but still..)
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
____________________________________________________________
|
||||
|
||||
6. Testing/Development Environments (Include OS):
|
||||
[REMINDER: This lab will be graded on the RedHat systems in
|
||||
the States Lab.]
|
||||
__Windows XP Professional SP2, Windows XP Home, ____________
|
||||
__Gentoo Linux 2.6.4, States Lab, Fedora, FreeBSD___________
|
||||
|
||||
7. Comments:
|
||||
__ Have Fun and be generous! ;)
|
||||
__ Oh, and have fun with finals and a good summer!
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
4
CS2335/2335_lemmings/THE_REAL_TODO.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Bridger - stop look at user wait to be selected again
|
||||
CLimber - test if he runs into ceiling and falls
|
||||
Help Screen
|
||||
Exploder - numbers thingey
|
||||
23
CS2335/2335_lemmings/TODO.txt
Normal file
@@ -0,0 +1,23 @@
|
||||
TODO:
|
||||
|
||||
+ Time Runout
|
||||
! Select Level
|
||||
+ Climb Hill
|
||||
! JUnit
|
||||
|
||||
o The UI, right now, fully rerenders at every frame. I forget why I
|
||||
disabled the whole "dirty" thing, but it needs to be reenabled.
|
||||
o Scrolling
|
||||
|
||||
Bugs:
|
||||
+ If the height of the floor is one pixel, then it is not registered
|
||||
. Bouncing doesn't work.
|
||||
|
||||
|
||||
Legend:
|
||||
|
||||
! - Have to do it for the next turn-in
|
||||
o - Have to do for the final turn-in
|
||||
. - Would be nice to do
|
||||
+ - Done
|
||||
- - Cancelled
|
||||
132
CS2335/2335_lemmings/build.xml
Normal file
@@ -0,0 +1,132 @@
|
||||
<project name="NetPaint" default="jar" basedir=".">
|
||||
<description>
|
||||
Performs different build tasks for the Lemmings project.
|
||||
</description>
|
||||
|
||||
<!-- Global Properties -->
|
||||
<property name="user.name" location="Vladimir Urazov" />
|
||||
<property name="src" location="src" />
|
||||
<property name="docs" location="apidoc" />
|
||||
<property name="doc_packages" value="edu.gatech.cs2335.lemmings.*" />
|
||||
<property name="classes" location="build" />
|
||||
<property name="libs" location="lib" />
|
||||
<property name="jarname" value="Lem.jar" />
|
||||
<property name="runClass" value="edu.gatech.cs2335.lemmings.engine.ProgramRunner" />
|
||||
<property name="checkstyle_logfile" value="checkstyle_log.txt" />
|
||||
<property name="pmd_logfile" value="pmd_log.html" />
|
||||
<property name="pmd_rules" value="rulesets/basic.xml,rulesets/unusedcode.xml,rulesets/design.xml,rulesets/imports.xml" />
|
||||
|
||||
<!-- Paths -->
|
||||
<property name="pmd_path" location="/net/hu15/cs2335/java/pmd/lib" />
|
||||
<property name="checkstyle_path" location="/net/hu15/cs2335/java/checkstyle" />
|
||||
<property name="junit_path" location="/net/hu15/cs2335/java/junit" />
|
||||
|
||||
<path id="pmd.classpath">
|
||||
<fileset dir="${pmd_path}">
|
||||
<include name="*.jar"/>
|
||||
</fileset>
|
||||
</path>
|
||||
|
||||
<path id="checkstyle.classpath">
|
||||
<fileset dir="${checkstyle_path}">
|
||||
<include name="checkstyle-all-3.3.jar" />
|
||||
</fileset>
|
||||
</path>
|
||||
|
||||
<!-- Taskdefs -->
|
||||
<taskdef resource="checkstyletask.properties" classpathref="checkstyle.classpath" />
|
||||
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="pmd.classpath" />
|
||||
|
||||
<!-- Targets -->
|
||||
<target name="init">
|
||||
<!-- Create the time stamp -->
|
||||
<tstamp />
|
||||
</target>
|
||||
|
||||
<target name="build" depends="init" description="Compiles the program">
|
||||
<!-- Make sure the necessary directory structure exists -->
|
||||
<mkdir dir="${classes}" />
|
||||
|
||||
<!-- Compile -->
|
||||
<javac srcdir="${src}" destdir="${classes}" />
|
||||
|
||||
<!-- Copy Resources -->
|
||||
<copy todir="${classes}/edu/gatech/cs2335/lemmings/graphics">
|
||||
<fileset dir="images"/>
|
||||
<fileset file="resources.txt"/>
|
||||
</copy>
|
||||
</target>
|
||||
|
||||
<target name="javadoc" description="Runs javadoc on all of the source files">
|
||||
<!-- Make sure the necessary directory structure exists -->
|
||||
<mkdir dir="${docs}" />
|
||||
|
||||
<!-- Generate comments -->
|
||||
<javadoc packagenames="${doc_packages}" sourcepath="${src}" destdir="${docs}" />
|
||||
</target>
|
||||
|
||||
<target name="jar" depends="build" description="Package the compiled classes into a JAR file.">
|
||||
<jar destfile="${jarname}" basedir="${classes}">
|
||||
<manifest>
|
||||
<attribute name="Built-By" value="${user.name}" />
|
||||
<attribute name="Main-Class" value="${runClass}" />
|
||||
</manifest>
|
||||
</jar>
|
||||
</target>
|
||||
|
||||
<target name="run" depends="build" description="Runs the program">
|
||||
<java classname="${runClass}" fork="true">
|
||||
<classpath>
|
||||
<pathelement path="${classes}" />
|
||||
</classpath>
|
||||
</java>
|
||||
</target>
|
||||
|
||||
<target name="checkstyle" description="Checks all of the source code with Checkstyle.">
|
||||
<checkstyle config="${checkstyle_path}/docs/sun_checks.xml" failOnViolation="false">
|
||||
<fileset dir="${src}" includes="**/*.java" />
|
||||
|
||||
<formatter type="plain" toFile="${checkstyle_logfile}" />
|
||||
</checkstyle>
|
||||
</target>
|
||||
|
||||
<target name="pmd" description="Run PMD against all source code files.">
|
||||
<pmd rulesetfiles="${pmd_rules}">
|
||||
<fileset dir="${src}" includes="**/*.java" />
|
||||
|
||||
<formatter type="html" toFile="${pmd_logfile}" />
|
||||
</pmd>
|
||||
</target>
|
||||
|
||||
<target name="junit" depends="build" description="Runs the JUnit tests for the program">
|
||||
<junit fork="yes" showoutput="yes">
|
||||
<formatter type="plain" usefile="false"/>
|
||||
|
||||
<classpath>
|
||||
<pathelement location="${classes}" />
|
||||
</classpath>
|
||||
|
||||
<batchtest>
|
||||
<fileset dir="${src}">
|
||||
<include name="**/*Test*.java" />
|
||||
</fileset>
|
||||
</batchtest>
|
||||
</junit>
|
||||
</target>
|
||||
|
||||
<target name="all">
|
||||
<antcall target="checkstyle" />
|
||||
<antcall target="pmd" />
|
||||
<antcall target="javadoc" />
|
||||
<antcall target="build" />
|
||||
<antcall target="jar" />
|
||||
</target>
|
||||
|
||||
<target name="clean">
|
||||
<delete dir="${classes}" />
|
||||
<delete dir="${docs}" />
|
||||
<delete file="${jarname}" />
|
||||
<delete file="${checkstyle_logfile}" />
|
||||
<delete file="${pmd_logfile}" />
|
||||
</target>
|
||||
</project>
|
||||
|
After Width: | Height: | Size: 226 KiB |
|
After Width: | Height: | Size: 8.0 KiB |
|
After Width: | Height: | Size: 285 KiB |
|
After Width: | Height: | Size: 281 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 255 KiB |
|
After Width: | Height: | Size: 938 B |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 473 B |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 914 B |
|
After Width: | Height: | Size: 262 KiB |
|
After Width: | Height: | Size: 726 B |
|
After Width: | Height: | Size: 487 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 946 B |
|
After Width: | Height: | Size: 935 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 912 B |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 464 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 724 B |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 715 B |
|
After Width: | Height: | Size: 647 B |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 815 B |
|
After Width: | Height: | Size: 689 B |
|
After Width: | Height: | Size: 7.8 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 753 B |
@@ -0,0 +1,83 @@
|
||||
##############################
|
||||
# Resource File for Lemmings #
|
||||
##############################
|
||||
|
||||
########### Backgrounds
|
||||
splash: Splash-Screen.png
|
||||
bg_main: Main-Menu-BG.png
|
||||
bg_mp: Multiplayer-BG.png
|
||||
bg_loading: Loading-Level-BG.png
|
||||
bg_result: Result-BG.png
|
||||
credits: credits.png
|
||||
background: Generic-Background.png
|
||||
|
||||
########### Buttons
|
||||
mmb_single: mmb_single.png
|
||||
mmb_multi: mmb_multi.png
|
||||
mmb_quit: mmb_quit.png
|
||||
mmb_credits: mmb_credits.png
|
||||
mmb_help: mmb_help.png
|
||||
|
||||
lb_back: lb_back.png
|
||||
lb_play: lb_play.png
|
||||
scroll_up: btn_up.png
|
||||
scroll_down: btn_down.png
|
||||
|
||||
rb_back: rb_back.png
|
||||
rb_play: rb_next.png
|
||||
|
||||
btn_pause: pause.png
|
||||
btn_speedup: fforward.png
|
||||
btn_nuke: nuke-em.png
|
||||
btn_increase: increase_flow.png
|
||||
btn_decrease: decrease_flow.png
|
||||
|
||||
mpb_back: mpb_back.png
|
||||
mpb_connect: mpb_connect.png
|
||||
mpb_host: mpb_host.png
|
||||
|
||||
|
||||
########### Lemmings
|
||||
walker: walker.png
|
||||
|
||||
digger: digger.png
|
||||
basher: basher.png
|
||||
miner: miner.png
|
||||
|
||||
floater: floater_walk.png
|
||||
floater_faller: floater_fall.png
|
||||
|
||||
climber: climber.png
|
||||
climber_faller: climber_falling.png
|
||||
|
||||
hand_glider: glider.png
|
||||
hand_glider_faller: glider_falling.png
|
||||
|
||||
exploder: exploder.png
|
||||
|
||||
|
||||
bridger: bridger.png
|
||||
|
||||
blocker: blocker.png
|
||||
|
||||
jumper: jumper.png
|
||||
|
||||
########### Special Animations
|
||||
faller: falling.png
|
||||
angel: angel.png
|
||||
cursor: cursor.png
|
||||
blood: blood.png
|
||||
splat: splat.png
|
||||
dirt: dirt.png
|
||||
bone: blood.png
|
||||
flame: flame.png
|
||||
water: splash.png
|
||||
drown: drown.png
|
||||
|
||||
!!!!!!!!!!!!!!!!!!!
|
||||
!Entrance and Exit!
|
||||
!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
entrance: entrance.png
|
||||
exit: exit.png
|
||||
fling_trap: fake_exit.png
|
||||
|
After Width: | Height: | Size: 421 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
110
CS2335/2335_lemmings/build_jose.xml
Normal file
@@ -0,0 +1,110 @@
|
||||
<project name="NetPaint" default="jar" basedir=".">
|
||||
<description>
|
||||
Performs different build tasks for the Lemmings project.
|
||||
</description>
|
||||
|
||||
<!-- Global Properties -->
|
||||
<property name="user.name" location="Vladimir Urazov" />
|
||||
<property name="src" location="src" />
|
||||
<property name="docs" location="apidoc" />
|
||||
<property name="doc_packages" value="edu.gatech.cs2335.lemmings.*" />
|
||||
<property name="classes" location="build" />
|
||||
<property name="libs" location="lib" />
|
||||
<property name="jarname" value="Lem.jar" />
|
||||
<property name="runClass" value="edu.gatech.cs2335.lemmings.engine.ProgramRunner" />
|
||||
<property name="checkstyle_logfile" value="checkstyle_log.txt" />
|
||||
<property name="pmd_logfile" value="pmd_log.html" />
|
||||
<property name="pmd_rules" value="rulesets/basic.xml,rulesets/unusedcode.xml,rulesets/design.xml,rulesets/imports.xml" />
|
||||
|
||||
<!-- Taskdefs -->
|
||||
|
||||
|
||||
<!-- Targets -->
|
||||
<target name="init">
|
||||
<!-- Create the time stamp -->
|
||||
<tstamp />
|
||||
</target>
|
||||
|
||||
<target name="build" depends="init" description="Compiles the program">
|
||||
<!-- Make sure the necessary directory structure exists -->
|
||||
<mkdir dir="${classes}" />
|
||||
|
||||
<!-- Compile -->
|
||||
<javac srcdir="${src}" destdir="${classes}" />
|
||||
|
||||
<!-- Copy Resources -->
|
||||
<copy todir="${classes}/edu/gatech/cs2335/lemmings/graphics">
|
||||
<fileset dir="images"/>
|
||||
<fileset file="resources.txt"/>
|
||||
</copy>
|
||||
</target>
|
||||
|
||||
<target name="javadoc" description="Runs javadoc on all of the source files">
|
||||
<!-- Make sure the necessary directory structure exists -->
|
||||
<mkdir dir="${docs}" />
|
||||
|
||||
<!-- Generate comments -->
|
||||
<javadoc packagenames="${doc_packages}" sourcepath="${src}" destdir="${docs}" />
|
||||
</target>
|
||||
|
||||
<target name="jar" depends="build" description="Package the compiled classes into a JAR file.">
|
||||
<jar destfile="${jarname}" basedir="${classes}">
|
||||
<manifest>
|
||||
<attribute name="Built-By" value="${user.name}" />
|
||||
<attribute name="Main-Class" value="${runClass}" />
|
||||
</manifest>
|
||||
</jar>
|
||||
</target>
|
||||
|
||||
<target name="run" depends="build" description="Runs the program">
|
||||
<java classname="${runClass}" fork="true">
|
||||
<classpath>
|
||||
<pathelement path="${classes}" />
|
||||
</classpath>
|
||||
</java>
|
||||
</target>
|
||||
|
||||
<target name="checkstyle" description="Checks all of the source code with Checkstyle.">
|
||||
<checkstyle config="${checkstyle_path}/docs/sun_checks.xml" failOnViolation="false">
|
||||
<fileset dir="${src}" includes="**/*.java" />
|
||||
|
||||
<formatter type="plain" toFile="${checkstyle_logfile}" />
|
||||
</checkstyle>
|
||||
</target>
|
||||
|
||||
<target name="pmd" description="Run PMD against all source code files.">
|
||||
<pmd rulesetfiles="${pmd_rules}">
|
||||
<fileset dir="${src}" includes="**/*.java" />
|
||||
|
||||
<formatter type="html" toFile="${pmd_logfile}" />
|
||||
</pmd>
|
||||
</target>
|
||||
|
||||
<target name="junit" description="Runs the JUnit tests for the program">
|
||||
<junit fork="yes">
|
||||
<formatter type="plain" />
|
||||
|
||||
<batchtest>
|
||||
<fileset dir="${src}">
|
||||
<include name="**/*Test*.java" />
|
||||
</fileset>
|
||||
</batchtest>
|
||||
</junit>
|
||||
</target>
|
||||
|
||||
<target name="all">
|
||||
<antcall target="checkstyle" />
|
||||
<antcall target="pmd" />
|
||||
<antcall target="javadoc" />
|
||||
<antcall target="build" />
|
||||
<antcall target="jar" />
|
||||
</target>
|
||||
|
||||
<target name="clean">
|
||||
<delete dir="${classes}" />
|
||||
<delete dir="${docs}" />
|
||||
<delete file="${jarname}" />
|
||||
<delete file="${checkstyle_logfile}" />
|
||||
<delete file="${pmd_logfile}" />
|
||||
</target>
|
||||
</project>
|
||||