Fixed the astar algoritm and added some comments

This commit is contained in:
Ziver Koc 2007-04-29 18:26:45 +00:00
parent c356ddf327
commit e280861f2d
14 changed files with 776 additions and 1365 deletions

1987
log.txt

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -10,6 +10,7 @@ import ei.game.algo.AStarNeighbour.Location;
/**
*
* @author Árni Arent
* @author Ziver Koc
*
*/
public class AStarPathfinder{
@ -17,6 +18,7 @@ public class AStarPathfinder{
protected LinkedList<AStarNode> closed;
private AStarNode start;
private AStarNode goal;
private AStarNode closest;
/**
* Constructs a Pathfinder.
@ -55,6 +57,10 @@ public class AStarPathfinder{
node = (AStarNode) open.removeFirst();
node.setVisited(true);
node.setVisitOrder(order++);
// calculates the nearest way to the destination
if(closest == null || closest.estimatedCostToGoal > node.estimatedCostToGoal){
closest = node;
}
// Check if we found the goal.
if (node == goal) {
@ -96,9 +102,9 @@ public class AStarPathfinder{
closed.add(node);
}
}
System.out.println("Path Not found!!");
//return null;
return constructPath(node);
return constructPath(closest);
}

View file

@ -1,8 +1,5 @@
package ei.game.gamestate;
import java.io.File;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
@ -12,7 +9,6 @@ import ei.engine.sound.SoundLoader;
import ei.engine.state.GameState;
import ei.engine.state.GameStateManager;
import ei.engine.texture.TextureLoader;
import ei.engine.util.FileFinderHasher;
/**
* This class handels the loading of the
@ -21,12 +17,66 @@ import ei.engine.util.FileFinderHasher;
* @author Ziver
*/
public class LoadingState extends GameState{
//The extensions of the files
//The files to load
private static final String[] TEXTURES = {
"jpg","png","bmp"
"data/font.bmp",
"data/loadbar_back.png",
"data/loadbar_front.png",
"data/loadbar.png",
"data/logo.png",
"data/particle.bmp",
"data/splash.png",
"data/buildings/cc/cc_building.png",
"data/buildings/cc/cc_ground.png",
"data/buildings/cc/cc.png",
"data/hud/buildmenu.png",
"data/hud/money.png",
"data/map/Grass.png",
"data/map/redmud.jpg",
"data/map/sand.jpg",
"data/map/redstone/redstone0000.png",
"data/map/redstone/redstone0001.png",
"data/map/redstone/redstone0002.png",
"data/map/redstone/redstone0003.png",
"data/map/stone/stone0000.png",
"data/map/stone/stone0001.png",
"data/map/stone/stone0002.png",
"data/map/stone/stone0003.png",
"data/ui/apu_button_selected.png",
"data/ui/apu_button.png",
"data/ui/bomber_button_selected.png",
"data/ui/bomber_button.png",
"data/ui/tank_button_selected.png",
"data/ui/tank_button.png",
"data/units/apu/apu0000.png",
"data/units/apu/apu0001.png",
"data/units/apu/apu0002.png",
"data/units/bomber/bomber0000.png",
"data/units/bomber/bomber0001.png",
"data/units/bomber/bomber0002.png",
"data/units/bomber/bomber0003.png",
"data/units/tank/tank0000.png",
"data/units/tank/tank0001.png",
"data/units/tank/tank0002.png"
};
private static final String[] SOUNDS = {
"wav","ogg"
"data/sounds/APUattack.wav",
"data/sounds/APUmove1.wav",
"data/sounds/APUmove2.wav",
"data/sounds/APUselect.wav",
"data/sounds/APUyes.wav",
"data/sounds/BOMBERattack.wav",
"data/sounds/BOMBERmove1.wav",
"data/sounds/BOMBERmove2.wav",
"data/sounds/BOMBERselect.wav",
"data/sounds/bomberweapon.wav",
"data/sounds/ei.ogg",
"data/sounds/machinegun.wav",
"data/sounds/TANKattack.wav",
"data/sounds/TANKmove1.wav",
"data/sounds/TANKmove2.wav",
"data/sounds/TANKselect.wav",
"data/sounds/tankweapon.wav"
};
// The things to load
private Queue<String> loadTextures;
@ -56,33 +106,13 @@ public class LoadingState extends GameState{
progress.setProgressTexture(new Sprite("Progress","data/loadbar.png"));
progress.setBackgroundTexture(new Sprite("progressBackground","data/loadbar_back.png"));
try {
File dir = new File(getClass().getClassLoader().getResource("data/").toURI());
ArrayList<File> files = FileFinderHasher.Search(dir);
for(int i=0; i<files.size() ;i++){
String ext = files.get(i).getName();
ext = ext.substring(ext.lastIndexOf ('.')+1,ext.length());
if(contains(TEXTURES,ext)){
addTexture(files.get(i).getPath().substring(files.get(i).getPath().lastIndexOf("data"), files.get(i).getPath().length()));
for(int i=0; i<TEXTURES.length ;i++){
addTexture(TEXTURES[i]);
}
else if(contains(SOUNDS,ext)){
addSound(files.get(i).getPath().substring(files.get(i).getPath().lastIndexOf("data"), files.get(i).getPath().length()));
for(int i=0; i<SOUNDS.length ;i++){
addSound(SOUNDS[i]);
}
}
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
private boolean contains(String[] array, String search){
for(int i=0; i<array.length ;i++){
if(array[i].equals(search)){
return true;
}
}
return false;
}
/**
* Add a texture to be loaded

View file

@ -16,6 +16,8 @@ public class SplashState extends GameState{
public SplashState(String name,String next) {
super(name);
nextState = next;
fadeInDone = false;
time = 200;
}
@ -27,9 +29,6 @@ public class SplashState extends GameState{
s.setLocation(new Vector2f(LWJGLGameWindow.getWidth()/2,LWJGLGameWindow.getHeight()/2));
splash.setEntity(s);
splash.fadeOut(false);
fadeInDone = false;
time = 200;
}
@Override

View file

@ -8,6 +8,11 @@ import ei.game.scene.SelectBox;
import ei.game.scene.weapons.Explotion;
import ei.game.scene.weapons.WeaponHandler;
/**
*
* @author Jesper Lundin
*
*/
public class CommandCenter extends Building{
private SelectBox selectionBox;
private Sprite sprite;

View file

@ -11,6 +11,11 @@ import ei.game.scene.weapons.MachineGun;
import ei.game.scene.weapons.Weapon;
import ei.game.scene.weapons.WeaponHandler;
/**
*
* @author Jesper Lundin
*
*/
public class APU extends Unit{
private SelectBox selectionBox;
private Sprite sprite;

View file

@ -12,6 +12,11 @@ import ei.game.scene.weapons.Explotion;
import ei.game.scene.weapons.Weapon;
import ei.game.scene.weapons.WeaponHandler;
/**
*
* @author Jesper Lundin
*
*/
public class Bomber extends Unit{
private SelectBox selectionBox;
private Sprite sprite;

View file

@ -11,6 +11,11 @@ import ei.game.scene.weapons.Explotion;
import ei.game.scene.weapons.Weapon;
import ei.game.scene.weapons.WeaponHandler;
/**
*
* @author Jesper Lundin
*
*/
public class Tank extends Unit{
private SelectBox selectionBox;
private Sprite sprite;

View file

@ -6,6 +6,11 @@ import ei.engine.math.Vector2i;
import ei.game.gamestate.InGameState;
import ei.game.scene.Map;
/**
* Handles the bomber units webon
* @author Jesper Lundin
*
*/
public class BomberWeapon extends Weapon{
private Particles part;
private boolean hit;

View file

@ -3,6 +3,10 @@ package ei.game.scene.weapons;
import ei.engine.effects.Particles;
import ei.engine.math.Vector2f;
/**
* @author Jesper Lundin
*
*/
public class CannonBall extends Weapon{
public CannonBall(Vector2f startPos) {

View file

@ -3,6 +3,11 @@ package ei.game.scene.weapons;
import ei.engine.effects.Particles;
import ei.engine.math.Vector2f;
/**
*
* @author Ziver
*
*/
public class Explotion extends Weapon{
private Particles part;

View file

@ -3,6 +3,11 @@ package ei.game.scene.weapons;
import ei.engine.effects.Particles;
import ei.engine.math.Vector2f;
/**
*
* @author Jesper Lundin
*
*/
public class MachineGun extends Weapon{
public MachineGun(Vector2f startPos) {

View file

@ -6,12 +6,12 @@ import ei.engine.math.Vector2i;
import ei.engine.scene.Entity;
import ei.game.gamestate.InGameState;
import ei.game.scene.Map;
/**
* The weapon class.
* @author Jesper Lundin
*
*/
public abstract class Weapon {
private int range;
private int damage;