Added a class for the marker, and added documentation

- Added documentation for the Race class
- Added a class for the Marker instead of just storing the name of the marker in a string

Tags: #docs #implement #story[4]
This commit is contained in:
Michael Rausch
2017-03-06 19:31:25 +13:00
parent 8c0cc67ae3
commit 9b1d90d2bf
4 changed files with 124 additions and 20 deletions
+9 -3
View File
@@ -27,6 +27,12 @@ public class App
race.addBoat(new Boat(boatNames.get(i)));
}
race.addLeg(new Leg(035, 100, "Start"));
race.addLeg(new Leg(010, 300, "Marker 1"));
race.addLeg(new Leg(350, 400, "Leeward Gate"));
race.addLeg(new Leg(010, 400, "Windward Gate"));
race.addLeg(new Leg(010, 400, "Leeward Gate"));
return race;
}
@@ -43,11 +49,11 @@ public class App
}
if (race != null){
race.displayStartingBoats();
System.out.println("");
race.startRace();
race.displayFinishingOrder();
}
else{
System.out.println("e");
+61 -7
View File
@@ -3,44 +3,98 @@ package seng302;
public class Leg {
private int heading;
private int distance;
private String startLabel;
private boolean isFinishingLeg;
private Marker startingMarker;
public Leg(int heading, int distance, String label){
/*
Create a new leg
@param heading, the magnetic heading of this leg
@param distance, the total distance of this leg in meters
@param marker, the marker this leg starts on
*/
public Leg(int heading, int distance, Marker marker){
this.heading = heading;
this.distance = distance;
this.startLabel = label;
this.startingMarker = marker;
this.isFinishingLeg = false;
}
/*
Create a new leg
@param heading, the magnetic heading of this leg
@param distance, the total distance of this leg in meters
@param markerName, the name of the marker this leg starts on
*/
public Leg(int heading, int distance, String markerName){
this.heading = heading;
this.distance = distance;
this.startingMarker = new Marker(markerName);
this.isFinishingLeg = false;
}
/*
Set the heading for this leg
*/
public void setHeading(int heading){
this.heading = heading;
}
/*
Get the heading of this leg
*/
public int getHeading(){
return this.heading;
}
/*
Set the distance of this leg in meters
*/
public void setDistance(int distance){
this.distance = distance;
}
/*
Get the total distance of this leg in meters
*/
public int getDistance(){
return this.distance;
}
public void setLabel(String label){
this.startLabel = label;
/*
Set the marker this leg starts on
*/
public void setMarker(Marker marker){
this.startingMarker = marker;
}
public String getLabel(){
return this.startLabel;
/*
Returns the marker this leg started on
*/
public Marker getMarker(){
return this.startingMarker;
}
/*
Returns the name of the marker this leg started on
*/
public String getMarkerLabel(){
return this.startingMarker.getName();
}
/*
Specify whether or not the race finishes on this leg
@param isFinishingLeg whether or not the race finishes on this leg
*/
public void setFinishingLeg(boolean isFinishingLeg){
this.isFinishingLeg = isFinishingLeg;
}
/*
@returns true if this the race finishes after this leg
*/
public boolean getIsFinishingLeg(){
return this.isFinishingLeg;
}
+17
View File
@@ -0,0 +1,17 @@
package seng302;
class Marker{
private String name;
public Marker(String name){
this.name = name;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
+36 -9
View File
@@ -25,6 +25,19 @@ public class Race {
numberOfBoats += 1;
}
/*
Returns a list of boats in a random order
@returns a list of boats
*/
public Boat[] getShuffledBoats(){
// Shuffle the list of boats
long seed = System.nanoTime();
Collections.shuffle(this.boats, new Random(seed));
return boats.toArray(new Boat[boats.size()]);
}
/*
Returns a list of boats in the order that they
finished the race (position 0 is first place)
@@ -32,11 +45,7 @@ public class Race {
@returns a list of boats
*/
public Boat[] getFinishedBoats(){
// Shuffle the list of boats
long seed = System.nanoTime();
Collections.shuffle(this.boats, new Random(seed));
return boats.toArray(new Boat[boats.size()]);
return getShuffledBoats();
}
/*
@@ -74,24 +83,42 @@ public class Race {
/*
Prints the list of boats competing in the race
*/
public void displayStartingBoats(){
private void displayStartingBoats(){
int numberOfBoats = this.getNumberOfBoats();
Boat[] boats = this.getBoats();
System.out.println("--- Competing Boats ---");
System.out.println("--- Starting Boats ---");
for (int i = 0; i < numberOfBoats; i++) {
System.out.println(boats[i].getTeamName());
}
}
/*
Adds a leg to the race
@param leg, the leg to add to the race
*/
public void addLeg(Leg leg){
this.legs.add(leg);
}
public void printLegs(){
/*
Start the race and print each marker with the order
in which the boats passed that marker
*/
public void startRace(){
for (Leg leg : this.legs.toArray(new Leg[legs.size()])){
System.out.println(leg.getLabel());
Boat[] boats = this.getShuffledBoats();
System.out.println("--- " + leg.getMarkerLabel() + " ---");
// Print the order in which the boats passed the marker
for (int i = 0; i < this.getNumberOfBoats(); i++) {
System.out.println("#" + Integer.toString(i+1) + " - " + boats[i].getTeamName());
}
System.out.println("");
}
}
}