From c5bb0d2aa600d838b301461fe6968c5e6ff66037 Mon Sep 17 00:00:00 2001 From: Frank v/d Haterd Date: Thu, 16 Jan 2014 23:32:00 +0100 Subject: Trees are now positioned away from the track. Small edit in robotrace.java for racetrack funtionallity in terrain. --- src/Terrain.java | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) 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. */ -- cgit v1.2.1 From ce8a83729fc26fea7c1a3ccc9f44ed6ce3b77bc8 Mon Sep 17 00:00:00 2001 From: Frank v/d Haterd Date: Thu, 16 Jan 2014 23:32:03 +0100 Subject: Trees are now positioned away from the track. Small edit in robotrace.java for racetrack funtionallity in terrain. --- src/RobotRace.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/RobotRace.java b/src/RobotRace.java index 66e2594..b634cb2 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); } /** @@ -603,7 +603,7 @@ public class RobotRace extends Base { assert track != null; return track; } - + /** * Main program execution body, delegates to an instance of the RobotRace * implementation. @@ -694,7 +694,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(); } @@ -719,7 +719,7 @@ public class RobotRace extends Base { } return enableTextures; } - + /** * If pause toggle is requested, check state and update. Otherwise, adjust * global animation time. -- cgit v1.2.1 From 38bc4417b6fd81e9ba93d3d626cd0b9d51524caf Mon Sep 17 00:00:00 2001 From: Frank v/d Haterd Date: Fri, 17 Jan 2014 00:58:32 +0100 Subject: L and C tracks, C track is ok, L track not --- src/RaceTrack.java | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/src/RaceTrack.java b/src/RaceTrack.java index ea9694a..6aadbb7 100644 --- a/src/RaceTrack.java +++ b/src/RaceTrack.java @@ -42,6 +42,7 @@ class RaceTrack extends BetterBase { * Array with control points for the custom track. */ private Vector[] controlPointsCustomTrack; + private final RobotRace race; /** * Debug option: set to true to show control points. @@ -88,6 +89,79 @@ class RaceTrack extends BetterBase { new Vector( -8, 15, 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), + }; } /** -- cgit v1.2.1