mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 06:18:44 +00:00
Currently displaying basic javafx window with canvas. Also changed the file structure a bit.
At this point the javafx is not tied to the old code in any way #story[377]
This commit is contained in:
@@ -43,7 +43,7 @@
|
|||||||
<transformer
|
<transformer
|
||||||
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
|
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
|
||||||
<manifestEntries>
|
<manifestEntries>
|
||||||
<Main-Class>seng302.App</Main-Class>
|
<Main-Class>seng302.models.App</Main-Class>
|
||||||
<X-Compile-Source-JDK>${maven.compiler.source}</X-Compile-Source-JDK>
|
<X-Compile-Source-JDK>${maven.compiler.source}</X-Compile-Source-JDK>
|
||||||
<X-Compile-Target-JDK>${maven.compiler.target}</X-Compile-Target-JDK>
|
<X-Compile-Target-JDK>${maven.compiler.target}</X-Compile-Target-JDK>
|
||||||
</manifestEntries>
|
</manifestEntries>
|
||||||
|
|||||||
+17
-100
@@ -1,111 +1,28 @@
|
|||||||
package seng302;
|
package seng302;
|
||||||
|
|
||||||
import java.lang.reflect.Array;
|
import javafx.application.Application;
|
||||||
import java.util.ArrayList;
|
import javafx.fxml.FXMLLoader;
|
||||||
import java.util.Collections;
|
import javafx.scene.Parent;
|
||||||
import java.util.Map;
|
import javafx.scene.Scene;
|
||||||
import java.util.Random;
|
import javafx.stage.Stage;
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
|
|
||||||
public class App {
|
|
||||||
|
|
||||||
/**
|
public class App extends Application
|
||||||
* Builds a race object for the AC35 course
|
{
|
||||||
*
|
@Override
|
||||||
* @return a Race object for the AC35 course
|
public void start(Stage primaryStage) throws Exception {
|
||||||
*/
|
System.out.println(getClass().getResource("/RaceView.fxml"));
|
||||||
public static Race createRace(String configFile) throws Exception {
|
|
||||||
Race race = new Race();
|
|
||||||
FileParser fp;
|
|
||||||
|
|
||||||
// Read team names from file
|
Parent root = FXMLLoader.load(getClass().getResource("/RaceView.fxml"));
|
||||||
try{
|
primaryStage.setTitle("RaceVision");
|
||||||
fp = new FileParser(configFile);
|
primaryStage.setScene(new Scene(root));
|
||||||
}
|
|
||||||
catch (FileNotFoundException e){
|
|
||||||
System.out.println("Config file does not exist");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
ArrayList<String> boatNames = new ArrayList<>();
|
primaryStage.show();
|
||||||
ArrayList<Map<String, Object>> teams = fp.getTeams();
|
|
||||||
|
|
||||||
//get race size
|
|
||||||
int numberOfBoats = (int) fp.getRaceSize();
|
|
||||||
|
|
||||||
//get time scale
|
|
||||||
double timeScale = fp.getTimeScale();
|
|
||||||
race.setTimeScale(timeScale);
|
|
||||||
|
|
||||||
for (Map<String, Object> team : teams) {
|
|
||||||
boatNames.add((String) team.get("team-name"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Shuffle team names
|
|
||||||
long seed = System.nanoTime();
|
|
||||||
Collections.shuffle(boatNames, new Random(seed));
|
|
||||||
|
|
||||||
if (numberOfBoats > Array.getLength(boatNames.toArray())) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add boats to the race
|
|
||||||
for (int i = 0; i < numberOfBoats; i++) {
|
|
||||||
race.addBoat(new Boat(boatNames.get(i), (Double) (teams.get(i).get("velocity"))));
|
|
||||||
}
|
|
||||||
|
|
||||||
race.addLeg(new Leg(35, 100, "Start"));
|
|
||||||
race.addLeg(new Leg(10, 300, "Marker 1"));
|
|
||||||
race.addLeg(new Leg(350, 400, "Leeward Gate"));
|
|
||||||
race.addLeg(new Leg(10, 400, "Windward Gate"));
|
|
||||||
|
|
||||||
Leg finishingLeg = new Leg(10, 400, "Leeward Gate");
|
|
||||||
finishingLeg.setFinishingLeg(true);
|
|
||||||
|
|
||||||
race.addLeg(finishingLeg);
|
|
||||||
|
|
||||||
return race;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
Race race = null;
|
launch(args);
|
||||||
String raceConfigFile;
|
|
||||||
|
|
||||||
if (args.length == 2 && args[0].equals("-f")){
|
|
||||||
raceConfigFile = args[1];
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
// Use default config
|
|
||||||
raceConfigFile = "doc/examples/config.json";
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
race = createRace(raceConfigFile);
|
|
||||||
} catch (Exception e) {
|
|
||||||
System.out.println("There was an error creating the race.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// If race was created
|
|
||||||
if (race != null) {
|
|
||||||
race.displayStartingBoats();
|
|
||||||
|
|
||||||
System.out.println("\n\n");
|
|
||||||
System.out.println("######################");
|
|
||||||
System.out.println("# Live Race Updates ");
|
|
||||||
System.out.println("######################");
|
|
||||||
|
|
||||||
race.startRace();
|
|
||||||
|
|
||||||
System.out.println("\n\n");
|
|
||||||
System.out.println("######################");
|
|
||||||
System.out.println("# Race Results ");
|
|
||||||
System.out.println("######################");
|
|
||||||
|
|
||||||
race.showRaceMarkerResults();
|
|
||||||
race.displayFinishingOrder();
|
|
||||||
|
|
||||||
} else {
|
|
||||||
System.out.println("There was an error creating the race. Exiting.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package seng302.controllers;
|
||||||
|
|
||||||
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.scene.canvas.Canvas;
|
||||||
|
import javafx.scene.canvas.GraphicsContext;
|
||||||
|
import javafx.scene.paint.Color;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by ptg19 on 15/03/17.
|
||||||
|
*/
|
||||||
|
public class CanvasController {
|
||||||
|
@FXML private Canvas canvas;
|
||||||
|
|
||||||
|
public void initialize() {
|
||||||
|
GraphicsContext gc = canvas.getGraphicsContext2D();
|
||||||
|
gc.setFill(Color.GREEN);
|
||||||
|
gc.fillOval(100, 200, 100, 80);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
package seng302.models;
|
||||||
|
|
||||||
|
import java.lang.reflect.Array;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
|
||||||
|
public class App {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds a race object for the AC35 course
|
||||||
|
*
|
||||||
|
* @return a Race object for the AC35 course
|
||||||
|
*/
|
||||||
|
public static Race createRace(String configFile) throws Exception {
|
||||||
|
Race race = new Race();
|
||||||
|
FileParser fp;
|
||||||
|
|
||||||
|
// Read team names from file
|
||||||
|
try{
|
||||||
|
fp = new FileParser(configFile);
|
||||||
|
}
|
||||||
|
catch (FileNotFoundException e){
|
||||||
|
System.out.println("Config file does not exist");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<String> boatNames = new ArrayList<>();
|
||||||
|
ArrayList<Map<String, Object>> teams = fp.getTeams();
|
||||||
|
|
||||||
|
//get race size
|
||||||
|
int numberOfBoats = (int) fp.getRaceSize();
|
||||||
|
|
||||||
|
//get time scale
|
||||||
|
double timeScale = fp.getTimeScale();
|
||||||
|
race.setTimeScale(timeScale);
|
||||||
|
|
||||||
|
for (Map<String, Object> team : teams) {
|
||||||
|
boatNames.add((String) team.get("team-name"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Shuffle team names
|
||||||
|
long seed = System.nanoTime();
|
||||||
|
Collections.shuffle(boatNames, new Random(seed));
|
||||||
|
|
||||||
|
if (numberOfBoats > Array.getLength(boatNames.toArray())) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add boats to the race
|
||||||
|
for (int i = 0; i < numberOfBoats; i++) {
|
||||||
|
race.addBoat(new Boat(boatNames.get(i), (Double) (teams.get(i).get("velocity"))));
|
||||||
|
}
|
||||||
|
|
||||||
|
race.addLeg(new Leg(35, 100, "Start"));
|
||||||
|
race.addLeg(new Leg(10, 300, "Marker 1"));
|
||||||
|
race.addLeg(new Leg(350, 400, "Leeward Gate"));
|
||||||
|
race.addLeg(new Leg(10, 400, "Windward Gate"));
|
||||||
|
|
||||||
|
Leg finishingLeg = new Leg(10, 400, "Leeward Gate");
|
||||||
|
finishingLeg.setFinishingLeg(true);
|
||||||
|
|
||||||
|
race.addLeg(finishingLeg);
|
||||||
|
|
||||||
|
return race;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Race race = null;
|
||||||
|
String raceConfigFile;
|
||||||
|
|
||||||
|
if (args.length == 2 && args[0].equals("-f")){
|
||||||
|
raceConfigFile = args[1];
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
// Use default config
|
||||||
|
raceConfigFile = "doc/examples/config.json";
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
race = createRace(raceConfigFile);
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("There was an error creating the race.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// If race was created
|
||||||
|
if (race != null) {
|
||||||
|
race.displayStartingBoats();
|
||||||
|
|
||||||
|
System.out.println("\n\n");
|
||||||
|
System.out.println("######################");
|
||||||
|
System.out.println("# Live Race Updates ");
|
||||||
|
System.out.println("######################");
|
||||||
|
|
||||||
|
race.startRace();
|
||||||
|
|
||||||
|
System.out.println("\n\n");
|
||||||
|
System.out.println("######################");
|
||||||
|
System.out.println("# Race Results ");
|
||||||
|
System.out.println("######################");
|
||||||
|
|
||||||
|
race.showRaceMarkerResults();
|
||||||
|
race.displayFinishingOrder();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
System.out.println("There was an error creating the race. Exiting.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package seng302;
|
package seng302.models;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a boat in the race.
|
* Represents a boat in the race.
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package seng302;
|
package seng302.models;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package seng302;
|
package seng302.models;
|
||||||
|
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
import org.json.simple.parser.JSONParser;
|
import org.json.simple.parser.JSONParser;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package seng302;
|
package seng302.models;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the leg of a race.
|
* Represents the leg of a race.
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package seng302;
|
package seng302.models;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the marker at the beginning of a leg
|
* Represents the marker at the beginning of a leg
|
||||||
*/
|
*/
|
||||||
class Marker{
|
public class Marker{
|
||||||
private String name;
|
private String name;
|
||||||
private ArrayList<Boat> boatOrder;
|
private ArrayList<Boat> boatOrder;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package seng302;
|
package seng302.models;
|
||||||
|
|
||||||
import java.lang.reflect.Array;
|
import java.lang.reflect.Array;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import javafx.scene.canvas.*?>
|
||||||
|
<?import java.lang.*?>
|
||||||
|
<?import javafx.scene.layout.*?>
|
||||||
|
|
||||||
|
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="seng302.controllers.CanvasController">
|
||||||
|
<children>
|
||||||
|
<Canvas fx:id="canvas" height="400.0" width="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
package seng302;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Unit test for simple App.
|
|
||||||
*/
|
|
||||||
public class AppTest {
|
|
||||||
@Test
|
|
||||||
public void testApp() {
|
|
||||||
assertTrue(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package seng302;
|
package seng302;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import seng302.models.Boat;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
package seng302;
|
package seng302;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import seng302.models.Boat;
|
||||||
|
import seng302.models.Event;
|
||||||
|
import seng302.models.Leg;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package seng302;
|
package seng302;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import seng302.models.FileParser;
|
||||||
|
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package seng302;
|
package seng302;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import seng302.models.Leg;
|
||||||
|
import seng302.models.Marker;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package seng302;
|
package seng302;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import seng302.models.Boat;
|
||||||
|
import seng302.models.Race;
|
||||||
|
|
||||||
import java.lang.reflect.Array;
|
import java.lang.reflect.Array;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user