diff options
author | Peter Wu <lekensteyn@gmail.com> | 2014-01-17 15:42:11 +0100 |
---|---|---|
committer | Peter Wu <lekensteyn@gmail.com> | 2014-01-17 15:42:11 +0100 |
commit | dd013f762fdc69da2deff839864f039d6896ba45 (patch) | |
tree | 7e3dd06974f59244df7f82419dddab2425473b2b /src | |
parent | 499778373f172dad7b2d0a3eabf335283ae1e274 (diff) | |
parent | 38bc4417b6fd81e9ba93d3d626cd0b9d51524caf (diff) | |
download | 2iv60-robots-dd013f762fdc69da2deff839864f039d6896ba45.tar.gz |
Merge remote-tracking branch 'origin/master'
Conflicts:
src/RaceTrack.java
Diffstat (limited to 'src')
-rw-r--r-- | src/RaceTrack.java | 73 | ||||
-rw-r--r-- | src/RobotRace.java | 8 | ||||
-rw-r--r-- | src/Terrain.java | 29 |
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. */ |