From 7c0d9203a585528f6cb3a2a712de3444e5470d25 Mon Sep 17 00:00:00 2001 From: cbt24 Date: Mon, 6 Mar 2017 16:20:20 +1300 Subject: [PATCH] Boats pass marks at times according to boat speed and distance of mark from start. --- .idea/misc.xml | 18 +----------- src/main/java/seng302/App.java | 23 ++++++++++----- src/main/java/seng302/Boat.java | 8 +++++- .../java/seng302/ConstantVelocityRace.java | 22 +++++++++++++++ src/main/java/seng302/Event.java | 8 +++--- src/main/java/seng302/Race.java | 24 ++++------------ src/main/java/seng302/RaceMarker.java | 22 +++++++++++++++ src/main/java/seng302/RandomisedRace.java | 28 +++++++++++++++++++ 8 files changed, 105 insertions(+), 48 deletions(-) create mode 100644 src/main/java/seng302/ConstantVelocityRace.java create mode 100644 src/main/java/seng302/RaceMarker.java create mode 100644 src/main/java/seng302/RandomisedRace.java diff --git a/.idea/misc.xml b/.idea/misc.xml index 71de1e1f..9cbaf1bd 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -45,26 +45,10 @@ - + $USER_HOME$/.subversion - - - - - 1.8 - - - - - - - \ No newline at end of file diff --git a/src/main/java/seng302/App.java b/src/main/java/seng302/App.java index 9c0824fe..5fbfbac7 100644 --- a/src/main/java/seng302/App.java +++ b/src/main/java/seng302/App.java @@ -12,16 +12,25 @@ public class App test.add(5); test.add(1, 8); - Boat boat1 = new Boat("ORACLE TEAM USA"); - Boat boat2 = new Boat("Artemis Racing"); - Boat boat3 = new Boat("Emirates Team New Zealand"); - Boat boat4 = new Boat("Groupama Team France"); - Boat boat5 = new Boat("Land Rover BAR"); - Boat boat6 = new Boat("SoftBank Team Japan"); + Boat boat1 = new Boat("ORACLE TEAM USA", 10); + Boat boat2 = new Boat("Artemis Racing", 8); + Boat boat3 = new Boat("Emirates Team New Zealand", 12); + Boat boat4 = new Boat("Groupama Team France", 11); + Boat boat5 = new Boat("Land Rover BAR", 10); + Boat boat6 = new Boat("SoftBank Team Japan", 9); + + RaceMarker mark1 = new RaceMarker("Start", 0); + RaceMarker mark2 = new RaceMarker("Mark", 120); + RaceMarker mark3 = new RaceMarker("Leeward Gate", 240); + RaceMarker mark4 = new RaceMarker("Windward Gate", 360); + RaceMarker mark5 = new RaceMarker("Leeward Gate", 480); + RaceMarker mark6 = new RaceMarker("Finish", 600); + Boat[] all_boats = {boat1, boat2, boat3, boat4, boat5, boat6}; Boat[] boats = {all_boats[0], all_boats[1]}; + RaceMarker[] marks = {mark1, mark2, mark3, mark4, mark5, mark6}; - Race race = new Race(boats); + Race race = new ConstantVelocityRace(boats, marks); race.simulateRace(); } diff --git a/src/main/java/seng302/Boat.java b/src/main/java/seng302/Boat.java index 1b47ea77..64c68e24 100644 --- a/src/main/java/seng302/Boat.java +++ b/src/main/java/seng302/Boat.java @@ -7,8 +7,10 @@ import java.util.ArrayList; */ public class Boat { private String name; + private double velocity; - public Boat(String name){ + public Boat(String name, double velocity){ + this.velocity = velocity; this.name = name; } @@ -16,6 +18,10 @@ public class Boat { return name; } + public double getVelocity() { + return velocity; + } + public String toString(){ return getName(); } diff --git a/src/main/java/seng302/ConstantVelocityRace.java b/src/main/java/seng302/ConstantVelocityRace.java new file mode 100644 index 00000000..f78d8d66 --- /dev/null +++ b/src/main/java/seng302/ConstantVelocityRace.java @@ -0,0 +1,22 @@ +package seng302; + +import java.util.Collections; + +/** + * Created by cbt24 on 6/03/17. + */ +public class ConstantVelocityRace extends Race { + public ConstantVelocityRace(Boat[] boats, RaceMarker[] marks) { + super(boats, marks); + generateRace(); + } + + private void generateRace() { + for(Boat boat : boats) { + for(RaceMarker raceMarker : marks) { + events.add(new Event(raceMarker, boat, (int)(raceMarker.getDistance() / boat.getVelocity()))); + } + } + Collections.sort(events, (o1, o2) -> o1.getTime() - o2.getTime()); + } +} diff --git a/src/main/java/seng302/Event.java b/src/main/java/seng302/Event.java index 4c781dad..7520ce69 100644 --- a/src/main/java/seng302/Event.java +++ b/src/main/java/seng302/Event.java @@ -8,12 +8,12 @@ import java.util.Collections; * Created by fwy13 on 3/03/17. */ public class Event { - private String name; + private RaceMarker raceMarker; private Boat boat; private int time; - public Event(String name, Boat boat, int time){ - this.name = name; + public Event(RaceMarker raceMarker, Boat boat, int time){ + this.raceMarker = raceMarker; this.boat = boat; this.time = time; } @@ -27,6 +27,6 @@ public class Event { } public String toString() { - return boat.getName() + " passed " + name + " at " + time; + return boat.getName() + " passed " + raceMarker.toString() + " at " + time + " seconds."; } } diff --git a/src/main/java/seng302/Race.java b/src/main/java/seng302/Race.java index 85ce03d6..6649a938 100644 --- a/src/main/java/seng302/Race.java +++ b/src/main/java/seng302/Race.java @@ -8,16 +8,16 @@ import java.util.*; */ public class Race { Boat[] boats; + RaceMarker[] marks; LinkedList events = new LinkedList(); - public Race(Boat[] boats){ + public Race(Boat[] boats, RaceMarker[] marks){ this.boats = boats; + this.marks = marks; } public void simulateRace(){ - String[] marks = {"Mark", "Leeward Gate", "Windward Gate", "Leeward Gate", "Finish"}; - randomiseRace(marks); - //printRace(); + //printRace() for (Event event: events) { Timer timer = new Timer(); timer.schedule(new TimerTask(){ @@ -25,22 +25,8 @@ public class Race { public void run(){ System.out.println(event); } - }, event.getTime() * 1000); + }, event.getTime() * 100); } } - public void randomiseRace(String[] eventNames){ - Random rand = new Random(); - for (Boat boat: this.boats){ - events.add(new Event("Start", boat, 0)); - int prevTime = 0; - for (String markName: eventNames){ - int time = rand.nextInt(12) + 6; - events.add(new Event(markName, boat, prevTime + time)); - prevTime += time; - } - } - Collections.sort(events, (o1, o2) -> o1.getTime() - o2.getTime()); - } - } diff --git a/src/main/java/seng302/RaceMarker.java b/src/main/java/seng302/RaceMarker.java new file mode 100644 index 00000000..56babca0 --- /dev/null +++ b/src/main/java/seng302/RaceMarker.java @@ -0,0 +1,22 @@ +package seng302; + +/** + * Created by cbt24 on 6/03/17. + */ +public class RaceMarker { + String name; + double distance; + + public RaceMarker(String name, double distance) { + this.name = name; + this.distance = distance; + } + + public double getDistance() { + return distance; + } + + public String toString() { + return name; + } +} diff --git a/src/main/java/seng302/RandomisedRace.java b/src/main/java/seng302/RandomisedRace.java new file mode 100644 index 00000000..a7be7a44 --- /dev/null +++ b/src/main/java/seng302/RandomisedRace.java @@ -0,0 +1,28 @@ +package seng302; + +import java.util.Collections; +import java.util.Random; + +/** + * Created by cbt24 on 6/03/17. + */ +public class RandomisedRace extends Race { + public RandomisedRace(Boat[] boats, RaceMarker[] marks) { + super(boats, marks); + generateRace(); + } + + private void generateRace() { + Random rand = new Random(); + for (Boat boat: this.boats){ + events.add(new Event(new RaceMarker("Start", 0), boat, 0)); + int prevTime = 0; + for (RaceMarker raceMarker: marks){ + int time = rand.nextInt(12) + 6; + events.add(new Event(raceMarker, boat, prevTime + time)); + prevTime += time; + } + } + Collections.sort(events, (o1, o2) -> o1.getTime() - o2.getTime()); + } +}