summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wu <lekensteyn@gmail.com>2014-01-17 15:42:11 +0100
committerPeter Wu <lekensteyn@gmail.com>2014-01-17 15:42:11 +0100
commitdd013f762fdc69da2deff839864f039d6896ba45 (patch)
tree7e3dd06974f59244df7f82419dddab2425473b2b
parent499778373f172dad7b2d0a3eabf335283ae1e274 (diff)
parent38bc4417b6fd81e9ba93d3d626cd0b9d51524caf (diff)
download2iv60-robots-dd013f762fdc69da2deff839864f039d6896ba45.tar.gz
Merge remote-tracking branch 'origin/master'
Conflicts: src/RaceTrack.java
-rw-r--r--src/RaceTrack.java73
-rw-r--r--src/RobotRace.java8
-rw-r--r--src/Terrain.java29
3 files changed, 100 insertions, 10 deletions
diff --git a/src/RaceTrack.java b/src/RaceTrack.java
index 81fdc99..d588fbe 100644
--- a/src/RaceTrack.java
+++ b/src/RaceTrack.java
@@ -88,6 +88,79 @@ class RaceTrack extends BetterBase {
new Vector( 8, -15, 1),
new Vector( 15, -8, 1),
};
+
+ controlPointsLTrack = new Vector[] {
+ /// FAIL
+ // top-right curve to bottom
+ new Vector( -4, 15, 1),
+
+ new Vector( -2.5, 15, 1),
+ new Vector( -1, 15, 1),
+
+ new Vector( -1, 12, 1),
+
+
+ new Vector( -1, -5, 1),
+ new Vector( -1, -6.5, 1),
+ new Vector( 0.5, -8, 1),
+ new Vector( 2, -8, 1),
+
+
+ new Vector( 8, -8, 1),
+ new Vector( 9.5, -8, 1),
+ new Vector( 11, -9.5, 1),
+ new Vector( 11, -11, 1),
+
+ new Vector( 11, -12.5, 1),
+ new Vector( 9.5, -14, 1),
+ new Vector( 8, -14, 1),
+
+
+ new Vector ( -4, -14, 1),
+ new Vector ( -5.5, -14, 1),
+ new Vector ( -7, -12.5, 1),
+ new Vector ( -7, -11, 1),
+
+ new Vector ( -7, 12, 1),
+ new Vector ( -7, 13.5, 1),
+ new Vector ( -5.5, 15, 1),
+ new Vector ( -4, 15, 1),
+
+ };
+
+ controlPointsCTrack = new Vector[] {
+ // CORRECT
+ new Vector( 2, 15, 1),
+
+ new Vector( 6.5, 15, 1),
+ new Vector( 11, 15, 1),
+
+ new Vector( 11, 12, 1),
+
+ new Vector( 11, 9, 1),
+ new Vector( 6.5, 9, 1),
+
+
+ new Vector( 2, 9, 1),
+
+ new Vector( -10, 9, 1),
+ new Vector( -10, -6, 1),
+
+ new Vector( 2, -6, 1),
+
+ new Vector(6.5, -6, 1),
+ new Vector(11, -6, 1),
+
+ new Vector(11, -9, 1),
+
+ new Vector(11, -12, 1),
+ new Vector(6.5, -12, 1),
+
+ new Vector(2, -12, 1),
+
+ new Vector(-17, -12, 1),
+ new Vector(-17, 15, 1),
+ };
}
/**
diff --git a/src/RobotRace.java b/src/RobotRace.java
index e166ad9..81a9355 100644
--- a/src/RobotRace.java
+++ b/src/RobotRace.java
@@ -208,7 +208,7 @@ public class RobotRace extends Base {
camera = new Camera(gs, raceTrack, robots);
// Initialize the terrain
- terrain = new Terrain(this);
+ terrain = new Terrain(this, raceTrack);
}
/**
@@ -600,7 +600,7 @@ public class RobotRace extends Base {
assert track != null;
return track;
}
-
+
/**
* Main program execution body, delegates to an instance of the RobotRace
* implementation.
@@ -691,7 +691,7 @@ public class RobotRace extends Base {
};
int i = Arrays.asList(trackNumbers).indexOf(e.getKeyCode());
assert i != -1 : "Track number not found for key";
- System.err.println("Changing to track number " + i);
+ System.err.println("Changing to track number " + i);
robotRace.gs.trackNr = i;
robotRace.mainWindow.updateElements();
}
@@ -716,7 +716,7 @@ public class RobotRace extends Base {
}
return enableTextures;
}
-
+
/**
* If pause toggle is requested, check state and update. Otherwise, adjust
* global animation time.
diff --git a/src/Terrain.java b/src/Terrain.java
index 6a26e17..54c6d2a 100644
--- a/src/Terrain.java
+++ b/src/Terrain.java
@@ -5,6 +5,7 @@ import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
+import java.util.Arrays;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -17,7 +18,7 @@ import robotrace.Vector;
/**
* Implementation of the terrain.
*/
-class Terrain extends BetterBase {
+public class Terrain extends BetterBase {
/**
* The display list containing the terrain.
@@ -48,10 +49,12 @@ class Terrain extends BetterBase {
private boolean heightMapFileMode;
+ private RaceTrack track;
+
/**
* Can be used to set up a display list.
*/
- public Terrain(RobotRace race) {
+ public Terrain(RobotRace race, RaceTrack track) {
// Setup terrain variables
this.race = race;
this.terrainDisplayList = 0;
@@ -61,7 +64,8 @@ class Terrain extends BetterBase {
this.terrainTrees = new Tree[10];
this.heightMapFile = "heightmap.bmp";
this.heightMapFileMode = true;
-
+ this.track = track;
+
// Fill the height map array
File f = new File("src/" + heightMapFile);
if(f.exists()) {
@@ -131,8 +135,17 @@ class Terrain extends BetterBase {
*/
private Vector getRandomPosition() {
Random r = new Random();
- int x = r.nextInt(37) - 18;
- int y = r.nextInt(37) - 18;
+ double distance;
+ int x, y;
+
+ // Make sure all trees are moved away from the track
+ do {
+ x = 19 - r.nextInt(39);
+ y = 19 - r.nextInt(39);
+
+ distance = Math.sqrt(x * x + y * y);
+ } while (distance < 19);
+
return new Vector(x, y, heightAt(x + 20, y + 20));
}
@@ -157,6 +170,10 @@ class Terrain extends BetterBase {
if (Math.abs(tree.getPosition().y() - y) < marge) {
return false;
}
+
+ if(x < - 19 || x > 19 || y < - 19 || y > 19) {
+ return false;
+ }
// No trees allowed in water
if (z < 0.25f) {
@@ -268,7 +285,7 @@ class Terrain extends BetterBase {
System.out.println("Terrain created");
}
-
+
/**
* Fills the array with new valid trees.
*/