Skip to content
Snippets Groups Projects
Commit 9df052aa authored by Piers Williams's avatar Piers Williams
Browse files

commited vectors properly

parent 2c0d7cdd
No related branches found
No related tags found
No related merge requests found
......@@ -84,10 +84,10 @@ public class AsteroidTwoFace extends Asteroid implements PolyContains {
game.asteroidTwoFaceDeath(this);
} else {
// shoot a missile back at the ship
Missile m = new Missile(s, new Vector2d(0, 0));
Missile m = new Missile(s, new Vector2d(0, 0, true));
double releaseVelocity = 5.0; // Math.min(releaseVelocity, maxRelease);
m.ttl = 60;
Vector2d d = new Vector2d();
Vector2d d = new Vector2d(true);
d.set(game.ship.s);
d.subtract(s);
d.normalise();
......
......@@ -11,7 +11,7 @@ import static asteroids.Constants.*;
public class BotShip extends Ship {
public BotShip(GameState game, Vector2d s, Vector2d v, Vector2d d) {
super(game, new Vector2d(rand.nextDouble() * width, rand.nextDouble() * height), v, d);
super(game, new Vector2d(rand.nextDouble() * width, rand.nextDouble() * height, true), v, d);
d.rotate(rand.nextDouble() * 2 * Math.PI);
// better to have constructors that capture all of the state
action = new Action();
......
......@@ -11,8 +11,8 @@ public abstract class GameObject {
public double r;
protected GameObject(Vector2d s, Vector2d v) {
this.s = new Vector2d(s);
this.v = new Vector2d(v);
this.s = new Vector2d(s, true);
this.v = new Vector2d(v, true);
}
public abstract void update();
......@@ -20,8 +20,8 @@ public abstract class GameObject {
public abstract GameObject copy();
protected GameObject updateClone(GameObject copyObject) {
copyObject.s = new Vector2d(s);
copyObject.v = new Vector2d(v);
copyObject.s = new Vector2d(s, true);
copyObject.v = new Vector2d(v, true);
copyObject.isTarget = isTarget;
copyObject.dead = dead;
copyObject.r = r;
......
......@@ -163,13 +163,13 @@ public class GameState {
}
private void makeAsteroids(int nAsteroids) {
Vector2d centre = new Vector2d(width / 2, height / 2);
Vector2d centre = new Vector2d(width / 2, height / 2, true);
// assumes that the game object list is currently empty
while (list.objects.size() < nAsteroids) {
// choose a random position and velocity
Vector2d s = new Vector2d(rand.nextDouble() * width,
rand.nextDouble() * height);
Vector2d v = new Vector2d(rand.nextGaussian(), rand.nextGaussian());
rand.nextDouble() * height, true);
Vector2d v = new Vector2d(rand.nextGaussian(), rand.nextGaussian(), true);
if (s.dist(centre) > safeRadius && v.mag() > 0.5) {
// Asteroid a = new Asteroid(this, s, v, 0);
......@@ -201,17 +201,17 @@ public class GameState {
public void makeShip() {
ship = new Ship(this,
new Vector2d(width / 2, height / 2),
new Vector2d(),
new Vector2d(0, -1));
new Vector2d(width / 2, height / 2, true),
new Vector2d(true),
new Vector2d(0, -1, true));
add(ship);
}
public void makeBotShip() {
BotShip ship = new BotShip(this,
new Vector2d(width / 2, height / 2),
new Vector2d(),
new Vector2d(0, -1));
new Vector2d(width / 2, height / 2, true),
new Vector2d(true),
new Vector2d(0, -1, true));
add(ship);
}
......@@ -231,9 +231,9 @@ public class GameState {
if (a.index < radii.length - 1) {
// add some new ones at this position
for (int i=0; i<nSplits; i++) {
Vector2d v1 = new Vector2d(a.v);
Vector2d v1 = new Vector2d(a.v, true);
v1.add(rand.nextGaussian(), rand.nextGaussian());
Asteroid a1 = new Asteroid(this, new Vector2d(a.s), v1, a.index + 1);
Asteroid a1 = new Asteroid(this, new Vector2d(a.s, true), v1, a.index + 1);
list.add(a1);
}
}
......@@ -250,9 +250,9 @@ public class GameState {
if (a.index < radii.length - 1) {
// add some new ones at this position
for (int i=0; i<nSplits; i++) {
Vector2d v1 = new Vector2d(a.v);
Vector2d v1 = new Vector2d(a.v, true);
v1.add(rand.nextGaussian(), rand.nextGaussian());
Asteroid a1 = new AsteroidTwoFace(this, new Vector2d(a.s), v1, a.index + 1);
Asteroid a1 = new AsteroidTwoFace(this, new Vector2d(a.s, true), v1, a.index + 1);
list.add(a1);
}
}
......
......@@ -41,9 +41,9 @@ public class Ship extends GameObject {
public Ship(GameState game, Vector2d s, Vector2d v, Vector2d d) {
super(new Vector2d(s), new Vector2d(v));
super(new Vector2d(s, true), new Vector2d(v, true));
this.game = game;
this.d = new Vector2d(d);
this.d = new Vector2d(d, true);
}
public Ship copy() {
......@@ -110,7 +110,7 @@ public class Ship extends GameObject {
// System.out.println("Trying a missile launch");
if (releaseVelocity > maxRelease) {
releaseVelocity = Math.max(releaseVelocity, missileMinVelocity * 2);
Missile m = new Missile(s, new Vector2d(0, 0));
Missile m = new Missile(s, new Vector2d(0, 0, true));
releaseVelocity = Math.min(releaseVelocity, maxRelease);
m.v.add(d, releaseVelocity);
// make it clear the ship
......
......@@ -29,7 +29,7 @@ public class View extends JComponent {
public View(GameState game) {
this.game = game;
scale = size.width - 2 * offset;
ship = new Ship(null, new Vector2d(), new Vector2d(), new Vector2d());
ship = new Ship(null, new Vector2d(true), new Vector2d(true), new Vector2d(true));
}
public void paintComponent(Graphics gx) {
......
......@@ -46,8 +46,8 @@ public class NeuroShip extends GameObject {
public NeuroShip(Vector2d s, Vector2d v, Vector2d d, int playerID) {
super(new Vector2d(s), new Vector2d(v));
this.d = new Vector2d(d);
super(new Vector2d(s, true), new Vector2d(v, true));
this.d = new Vector2d(d, true);
this.playerID = playerID;
}
......@@ -124,7 +124,7 @@ public class NeuroShip extends GameObject {
// System.out.println("Trying a missile launch");
if (releaseVelocity > maxRelease) {
releaseVelocity = Math.max(releaseVelocity, missileMinVelocity * 2);
Missile m = new Missile(s, new Vector2d(0, 0));
Missile m = new Missile(s, new Vector2d(0, 0, true));
releaseVelocity = Math.min(releaseVelocity, maxRelease);
m.v.add(d, releaseVelocity);
// make it clear the ship
......
......@@ -79,9 +79,9 @@ public class SimpleBattle {
}
protected NeuroShip buildShip(int x, int y, int playerID) {
Vector2d position = new Vector2d(x, y);
Vector2d speed = new Vector2d();
Vector2d direction = new Vector2d(1, 0);
Vector2d position = new Vector2d(x, y, true);
Vector2d speed = new Vector2d(true);
Vector2d direction = new Vector2d(1, 0, true);
return new NeuroShip(position, speed, direction, playerID );
}
......@@ -206,7 +206,7 @@ public class SimpleBattle {
NeuroShip currentShip = playerId == 0 ? s1 : s2;
PlayerStats stats = this.stats.get(playerId);
if (stats.nMissiles < nMissiles) {
Missile m = new Missile(s, new Vector2d(0, 0));
Missile m = new Missile(s, new Vector2d(0, 0, true));
m.v.add(d, releaseVelocity);
// make it clear the ship
m.s.add(m.v, (currentShip.r() + missileRadius) * 1.5 / m.v.mag());
......
......@@ -10,7 +10,7 @@ public class MemoControllerUtils {
// returns turn value (-1, 0, 1)
static double lookAt(Vector2d s, Vector2d d, Vector2d lookat, double rot_threshold) {
Vector2d desired_rot_vec = new Vector2d(lookat);
Vector2d desired_rot_vec = new Vector2d(lookat, true);
desired_rot_vec.add(s, -1);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment