diff --git a/.classpath b/.classpath
new file mode 100644
index 00000000..b366d4aa
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ChipsChallengeFirstDeliverable.PNG b/ChipsChallengeFirstDeliverable.PNG
new file mode 100644
index 00000000..88ac2a7c
Binary files /dev/null and b/ChipsChallengeFirstDeliverable.PNG differ
diff --git a/ChipsChallengeRoughClassDiagram.pdf b/ChipsChallengeRoughClassDiagram.pdf
new file mode 100644
index 00000000..8283a094
Binary files /dev/null and b/ChipsChallengeRoughClassDiagram.pdf differ
diff --git a/src/ColumbusGame/OceanExplorer.java b/src/ColumbusGame/OceanExplorer.java
new file mode 100644
index 00000000..64c6d6d5
--- /dev/null
+++ b/src/ColumbusGame/OceanExplorer.java
@@ -0,0 +1,5 @@
+package ColumbusGame;
+
+public class OceanExplorer {
+
+}
diff --git a/src/edu/nd/sarec/railwaycrossing/Simulation.java b/src/edu/nd/sarec/railwaycrossing/Simulation.java
index 0bf1deff..d88ed70a 100644
--- a/src/edu/nd/sarec/railwaycrossing/Simulation.java
+++ b/src/edu/nd/sarec/railwaycrossing/Simulation.java
@@ -9,6 +9,7 @@
import edu.nd.sarec.railwaycrossing.model.infrastructure.gate.CrossingGate;
import edu.nd.sarec.railwaycrossing.model.vehicles.Car;
import edu.nd.sarec.railwaycrossing.model.vehicles.Train;
+import edu.nd.sarec.railwaycrossing.model.vehicles.Train2;
import edu.nd.sarec.railwaycrossing.view.MapDisplay;
import javafx.animation.AnimationTimer;
import javafx.application.Application;
@@ -42,12 +43,19 @@ public void start(Stage stage) throws Exception {
// Train
RailwayTracks track = mapBuilder.getTrack("Royal");
+ RailwayTracks track2 = mapBuilder.getTrack2("Gold");
Train train = new Train(track.getEndX()+100,track.getEndY()-25);
+ Train2 train2 = new Train2(track2.getStartX()-100,track2.getEndY()-25);
root.getChildren().add(train.getImageView());
-
- for(CrossingGate gate: mapBuilder.getAllGates())
- train.addObserver(gate);
-
+ root.getChildren().add(train2.getImageView());
+ //for(CrossingGate gate: mapBuilder.getAllGates())
+ //train.addObserver(gate);
+ //for(CrossingGate gate: mapBuilder.getAllGates())
+ //train2.addObserver(gate);
+ train.addObserver(mapBuilder.setGate("Gate1"));
+ train.addObserver(mapBuilder.setGate("Gate2"));
+ train2.addObserver(mapBuilder.setGate("Gate3"));
+ train2.addObserver(mapBuilder.setGate("Gate4"));
// Sets up a repetitive loop i.e., in handle that runs the actual simulation
new AnimationTimer(){
@@ -55,13 +63,17 @@ public void start(Stage stage) throws Exception {
public void handle(long now) {
createCar();
- train.move();
+ train.moveWest();
+ train2.moveEast();
for(CrossingGate gate: mapBuilder.getAllGates())
gate.operateGate();
if (train.offScreen())
train.reset();
+
+ if (train2.offScreen())
+ train2.reset();
clearCars();
}
diff --git a/src/edu/nd/sarec/railwaycrossing/homework5ClassDiagram.pdf b/src/edu/nd/sarec/railwaycrossing/homework5ClassDiagram.pdf
new file mode 100644
index 00000000..287778a9
Binary files /dev/null and b/src/edu/nd/sarec/railwaycrossing/homework5ClassDiagram.pdf differ
diff --git a/src/edu/nd/sarec/railwaycrossing/homework5Reflection.docx b/src/edu/nd/sarec/railwaycrossing/homework5Reflection.docx
new file mode 100644
index 00000000..40cb5307
Binary files /dev/null and b/src/edu/nd/sarec/railwaycrossing/homework5Reflection.docx differ
diff --git a/src/edu/nd/sarec/railwaycrossing/model/infrastructure/ArraryList.java b/src/edu/nd/sarec/railwaycrossing/model/infrastructure/ArraryList.java
new file mode 100644
index 00000000..05a4f26e
--- /dev/null
+++ b/src/edu/nd/sarec/railwaycrossing/model/infrastructure/ArraryList.java
@@ -0,0 +1,148 @@
+package edu.nd.sarec.railwaycrossing.model.infrastructure;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+
+public class ArraryList implements List {
+
+ @Override
+ public boolean add(RailwayTracks e) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void add(int index, RailwayTracks element) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean addAll(Collection extends RailwayTracks> c) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean addAll(int index, Collection extends RailwayTracks> c) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void clear() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean containsAll(Collection> c) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public RailwayTracks get(int index) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public int indexOf(Object o) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public Iterator iterator() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public int lastIndexOf(Object o) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public ListIterator listIterator() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public ListIterator listIterator(int index) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public RailwayTracks remove(int index) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public boolean removeAll(Collection> c) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean retainAll(Collection> c) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public RailwayTracks set(int index, RailwayTracks element) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public int size() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public List subList(int fromIndex, int toIndex) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Object[] toArray() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public T[] toArray(T[] a) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/src/edu/nd/sarec/railwaycrossing/model/infrastructure/MapBuilder.java b/src/edu/nd/sarec/railwaycrossing/model/infrastructure/MapBuilder.java
index 267ae8e1..932d8d01 100644
--- a/src/edu/nd/sarec/railwaycrossing/model/infrastructure/MapBuilder.java
+++ b/src/edu/nd/sarec/railwaycrossing/model/infrastructure/MapBuilder.java
@@ -30,21 +30,30 @@ public MapBuilder(){
private void buildRoads(){
roads.put("Western Highway",new Road(new Point(800,0),new Point (800,1000),Direction.SOUTH,true,false));
roads.put("Skyway",new Road(new Point(400,0),new Point (400,1000),Direction.SOUTH,true,false));
- roads.put("EastWest",new Road(new Point(415,800),new Point (785,800),Direction.EAST,true,true));
+ roads.put("EastWest",new Road(new Point(415,620),new Point (785,620),Direction.EAST,true,true));
+ }
+
+ public CrossingGate setGate(String gate) {
+ return gates.get(gate);
}
private void buildCrossingGates(){
- gates.put("Gate1", new CrossingGate(780,480, "Gate1"));
- gates.put("Gate2", new CrossingGate(380,480, "Gate2"));
+ gates.put("Gate1", new CrossingGate(780,280, "Gate1"));
+ gates.put("Gate2", new CrossingGate(380,280, "Gate2"));
+ gates.put("Gate3", new CrossingGate(780,510, "Gate3"));
+ gates.put("Gate4", new CrossingGate(380,510, "Gate4"));
}
private void buildTracks(){
- tracks.put("Royal", new RailwayTracks(new Point(0,500),new Point(1200,500)));
+ tracks.put("Royal", new RailwayTracks(new Point(0,300),new Point(1200,300)));
+ tracks.put("Gold", new RailwayTracks(new Point(0,530),new Point(1200,530)));
}
private void assignGatesToRoads(){
roads.get("Western Highway").assignGate(gates.get("Gate1"));
roads.get("Skyway").assignGate(gates.get("Gate2"));
+ roads.get("Western Highway").assignGate(gates.get("Gate3"));
+ roads.get("Skyway").assignGate(gates.get("Gate4"));
}
private void buildCarFactories(){
@@ -67,4 +76,8 @@ public Collection getRoads(){
public RailwayTracks getTrack(String name){
return tracks.get("Royal");
}
+
+ public RailwayTracks getTrack2(String name){
+ return tracks.get("Gold");
+ }
}
diff --git a/src/edu/nd/sarec/railwaycrossing/model/infrastructure/gate/CrossingGate.java b/src/edu/nd/sarec/railwaycrossing/model/infrastructure/gate/CrossingGate.java
index 1314ffcf..e3a1d9b0 100644
--- a/src/edu/nd/sarec/railwaycrossing/model/infrastructure/gate/CrossingGate.java
+++ b/src/edu/nd/sarec/railwaycrossing/model/infrastructure/gate/CrossingGate.java
@@ -4,6 +4,7 @@
import java.util.Observer;
import edu.nd.sarec.railwaycrossing.model.vehicles.Train;
+import edu.nd.sarec.railwaycrossing.model.vehicles.Train2;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Line;
@@ -21,7 +22,9 @@ public class CrossingGate extends Observable implements Observer{
private int movingX;
private int movingY;
private int triggerPoint;
+ private int triggerPoint2;
private int exitPoint;
+ private int exitPoint2;
private IGateState gateClosed;
private IGateState gateOpen;
@@ -41,7 +44,9 @@ public CrossingGate(int xPosition, int yPosition, String crossingGate){
movingX = anchorX;
movingY = anchorY-60;
triggerPoint = anchorX+250;
+ triggerPoint2 = anchorX-250;
exitPoint = anchorX-250;
+ exitPoint2 = anchorX+250;
// Gate elements
line = new Line(anchorX, anchorY,movingX,movingY);
@@ -111,6 +116,10 @@ public void setGateState(IGateState newState){
notifyObservers();
}
+ public int getAnchorY() {
+ return anchorY;
+ }
+
public String getTrafficCommand(){
return currentGateState.getTrafficAction();
}
@@ -125,5 +134,13 @@ else if(train.getVehicleX() < triggerPoint){
currentGateState.approachStation();
}
}
+ if (o instanceof Train2){
+ Train2 train2 = (Train2)o;
+ if (train2.getVehicleX() > exitPoint2)
+ currentGateState.leaveStation();
+ else if(train2.getVehicleX() > triggerPoint2){
+ currentGateState.approachStation();
+ }
+ }
}
}
diff --git a/src/edu/nd/sarec/railwaycrossing/model/vehicles/Car.java b/src/edu/nd/sarec/railwaycrossing/model/vehicles/Car.java
index 3f3073cb..887f9c77 100644
--- a/src/edu/nd/sarec/railwaycrossing/model/vehicles/Car.java
+++ b/src/edu/nd/sarec/railwaycrossing/model/vehicles/Car.java
@@ -19,9 +19,13 @@ public class Car extends Observable implements IVehicle, Observer{
private double currentY = 0;
private double originalY = 0;
private boolean gateDown = false;
+ private boolean gateDown2 = false;
private double leadCarY = -1; // Current Y position of car directly infront of this one
private double speed = 0.5;
-
+ private boolean canMove = true;
+ private boolean canTurn = false;
+ private boolean turn = false;
+
/**
* Constructor
* @param x initial x coordinate of car
@@ -45,6 +49,10 @@ public boolean gateIsClosed(){
return gateDown;
}
+ public boolean gateIsClosed2(){
+ return gateDown2;
+ }
+
public double getVehicleX(){
return currentX;
}
@@ -52,23 +60,56 @@ public double getVehicleY(){
return currentY;
}
- public void move(){
- boolean canMove = true;
+ public void setTurn(boolean turn) {
+ this.turn = turn;
+ }
+
+ public boolean getTurn() {
+ return turn;
+ }
+
+ public void moveSouth(){
+ canMove = true;
+ canTurn = false;
+
+ //allows cars to cross onto the connecting road
+ if (turn && getVehicleY() > 610 && getVehicleY() < 630) {
+ canMove = false;
+ canTurn = true;
+ }
+
+ if(canTurn && getVehicleX() > 360 && getVehicleX() < 390) {
+ canTurn = false;
+ canMove = true;
+ }
// First case. Car is at the front of the stopping line.
- if (gateDown && getVehicleY() < 430 && getVehicleY()> 390)
+ if (gateDown && getVehicleY() < 230 && getVehicleY()> 190)
+ canMove = false;
+
+ //Checking the first case for the second set of gates
+ if (gateDown2 && getVehicleY() < 460 && getVehicleY()> 420)
canMove = false;
// Second case. Car is too close too other car.
if (leadCarY != -1 && getDistanceToLeadCar() < 50)
canMove = false;
+ if(leadCarY > 300 && leadCarY < 370 && getVehicleY() < 260 && getVehicleY() > 180 && gateDown2)
+ canMove = false;
+
if (canMove){
currentY+=speed;
ivCar.setY(currentY);
- setChanged();
- notifyObservers();
}
+
+ if (canTurn){
+ currentX-=speed;
+ ivCar.setX(currentX);
+ }
+
+ setChanged();
+ notifyObservers();
}
public void setSpeed(double speed){
@@ -79,6 +120,10 @@ public void setGateDownFlag(boolean gateDown){
this.gateDown = gateDown;
}
+ public void setGateDownFlag2(boolean gateDown){
+ this.gateDown2 = gateDown;
+ }
+
public boolean offScreen(){
if (currentY > 1020)
return true;
@@ -101,18 +146,40 @@ public void removeLeadCar(){
@Override
public void update(Observable o, Object arg1) {
if (o instanceof Car){
- leadCarY = (((Car)o).getVehicleY());
+ if(((Car)o).getTurn() && ((Car)o).getVehicleY() > 610)
+ leadCarY = -1;
+ else
+ leadCarY = (((Car)o).getVehicleY());
+
if (leadCarY > 1020)
leadCarY = -1;
}
if (o instanceof CrossingGate){
CrossingGate gate = (CrossingGate)o;
- if(gate.getTrafficCommand()=="STOP")
- gateDown = true;
- else
- gateDown = false;
-
- }
+ if(gate.getAnchorY() < 400) {
+ if(gate.getTrafficCommand() == "STOP")
+ gateDown = true;
+ else
+ gateDown = false;
+ }else {
+ if(gate.getTrafficCommand() == "STOP")
+ gateDown2 = true;
+ else
+ gateDown2 = false;
+ }
+ }
+ }
+
+ @Override
+ public void moveWest() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void moveEast() {
+ // TODO Auto-generated method stub
+
}
}
diff --git a/src/edu/nd/sarec/railwaycrossing/model/vehicles/CarFactory.java b/src/edu/nd/sarec/railwaycrossing/model/vehicles/CarFactory.java
index 1eae29ed..ac6f0010 100644
--- a/src/edu/nd/sarec/railwaycrossing/model/vehicles/CarFactory.java
+++ b/src/edu/nd/sarec/railwaycrossing/model/vehicles/CarFactory.java
@@ -35,7 +35,10 @@ public Car buildCar(){
if (previousCar == null || location.y < previousCar.getVehicleY()-100){
Car car = new Car(location.x,location.y);
double speedVariable = (Math.random() * 10)/10;
- car.setSpeed((2-speedVariable)*1.5);
+ car.setSpeed((2-speedVariable)*1.2);
+
+ if ((int)(Math.random()*100) < 50 && location.x > 700)
+ car.setTurn(true);
// All cars created by this factory must be aware of crossing gates in the road
for(CrossingGate gate: gates){
@@ -63,7 +66,7 @@ public ArrayList removeOffScreenCars() {
// Removing cars from the array list.
ArrayList toDelete = new ArrayList();
for(Car car: cars){
- car.move();
+ car.moveSouth();
if (car.offScreen())
toDelete.add(car);
diff --git a/src/edu/nd/sarec/railwaycrossing/model/vehicles/IVehicle.java b/src/edu/nd/sarec/railwaycrossing/model/vehicles/IVehicle.java
index ad739705..b87654fe 100644
--- a/src/edu/nd/sarec/railwaycrossing/model/vehicles/IVehicle.java
+++ b/src/edu/nd/sarec/railwaycrossing/model/vehicles/IVehicle.java
@@ -7,7 +7,9 @@ public interface IVehicle {
public Node getImageView();
public double getVehicleX();
public double getVehicleY();
- public void move();
+ public void moveWest();
+ public void moveEast();
+ public void moveSouth();
public boolean offScreen();
public void reset();
}
diff --git a/src/edu/nd/sarec/railwaycrossing/model/vehicles/Train.java b/src/edu/nd/sarec/railwaycrossing/model/vehicles/Train.java
index 9265466d..c9da019b 100644
--- a/src/edu/nd/sarec/railwaycrossing/model/vehicles/Train.java
+++ b/src/edu/nd/sarec/railwaycrossing/model/vehicles/Train.java
@@ -37,13 +37,20 @@ public double getVehicleY(){
return currentY;
}
- public void move(){
+ public void moveWest(){
currentX-=2;
imgView.setX(currentX);
setChanged();
notifyObservers();
}
+ public void moveEast(){
+ currentX+=2;
+ imgView.setX(currentX);
+ setChanged();
+ notifyObservers();
+ }
+
public boolean offScreen(){
if (currentX < -200)
return true;
@@ -59,4 +66,10 @@ public void reset(){
public Node getImageView() {
return imgView;
}
+
+ @Override
+ public void moveSouth() {
+ // TODO Auto-generated method stub
+
+ }
}
\ No newline at end of file
diff --git a/src/edu/nd/sarec/railwaycrossing/model/vehicles/Train2.java b/src/edu/nd/sarec/railwaycrossing/model/vehicles/Train2.java
new file mode 100644
index 00000000..de67d7bc
--- /dev/null
+++ b/src/edu/nd/sarec/railwaycrossing/model/vehicles/Train2.java
@@ -0,0 +1,75 @@
+package edu.nd.sarec.railwaycrossing.model.vehicles;
+
+import java.util.Observable;
+
+import javafx.scene.Node;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+
+/**
+ * Represents the train entity object
+ * @author jane
+ *
+ */
+public class Train2 extends Observable implements IVehicle{
+ private double currentX = 0;
+ private double currentY = 0;
+ private double originalX = 0;
+ private Image img;
+ private ImageView imgView;
+ private int trainLength = 35;
+
+ public Train2(int x, int y){
+ this.currentX = x;
+ this.currentY = y;
+ originalX = x;
+ img = new Image("images\\Train2.PNG",120,trainLength,false,false);
+ imgView = new ImageView(img);
+ imgView.setX(currentX);
+ imgView.setY(currentY);
+ }
+
+ public double getVehicleX(){
+ return currentX;
+ }
+
+ public double getVehicleY(){
+ return currentY;
+ }
+
+ public void moveWest(){
+ currentX-=2;
+ imgView.setX(currentX);
+ setChanged();
+ notifyObservers();
+ }
+
+ public void moveEast(){
+ currentX+=4;
+ imgView.setX(currentX);
+ setChanged();
+ notifyObservers();
+ }
+
+ public boolean offScreen(){
+ if (currentX > 1800)
+ return true;
+ else
+ return false;
+ }
+
+ public void reset(){
+ currentX = originalX;
+ }
+
+ //@Override
+ public Node getImageView() {
+ return imgView;
+ }
+
+ @Override
+ public void moveSouth() {
+ // TODO Auto-generated method stub
+
+ }
+}
\ No newline at end of file
diff --git a/src/edu/nd/sarec/railwaycrossing/view/MapDisplay.java b/src/edu/nd/sarec/railwaycrossing/view/MapDisplay.java
index 0726aa3c..3b2da748 100644
--- a/src/edu/nd/sarec/railwaycrossing/view/MapDisplay.java
+++ b/src/edu/nd/sarec/railwaycrossing/view/MapDisplay.java
@@ -19,6 +19,7 @@ public class MapDisplay {
IDisplay roadDisplay, tracksDisplay;
Collection roads;
Collection track;
+ Collection track2;
Collection gates;
@@ -26,6 +27,9 @@ public MapDisplay(Pane root, Collection roads, Collection t
this.root = root;
this.roads= roads;
this.track = tracks;
+ this.track2 = tracks;
+ for(Road road: roads)
+ System.out.println(road);
this.gates = gates;
roadDisplay = new RoadDisplay(roads,root);
tracksDisplay = new TracksDisplay(tracks,root);
diff --git a/src/edu/nd/se2018/ColumbusShip.png b/src/edu/nd/se2018/ColumbusShip.png
new file mode 100644
index 00000000..ab23f309
Binary files /dev/null and b/src/edu/nd/se2018/ColumbusShip.png differ
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/BlueDoor.java b/src/edu/nd/se2018/homework/chipsChallenge/src/BlueDoor.java
new file mode 100644
index 00000000..d387b898
--- /dev/null
+++ b/src/edu/nd/se2018/homework/chipsChallenge/src/BlueDoor.java
@@ -0,0 +1,50 @@
+package edu.nd.se2018.homework.chipsChallenge.src;
+
+import java.awt.Point;
+
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+
+public class BlueDoor implements Door{
+ // locals
+ ChipMap map;
+ Point location = new Point();
+ ImageView imageView;
+ int scale = 20;
+ int ID = 1;
+
+ public BlueDoor(ChipMap chipMap, int x, int y) {
+ map = chipMap;
+ location.x = x;
+ location.y = y;
+ Image blueDoorImage = new Image("images\\blueKeyWall.png", scale, scale, false, true);
+ imageView = new ImageView(blueDoorImage);
+ imageView.setX(location.x*scale);
+ imageView.setY(location.y*scale);
+ map.chipsGrid[location.x][location.y] = 1;
+ }
+ @Override
+ public Point getDoorLocation() {
+ return location;
+ }
+
+ @Override
+ public void lockDoor() {
+ map.chipsGrid[location.x][location.y] = 1;
+
+ }
+ @Override
+ public ImageView getDoorImageView() {
+ return imageView;
+ }
+ @Override
+ public int getDoorId() {
+ return ID;
+ }
+ @Override
+ public void unlockDoor() {
+ map.chipsGrid[location.x][location.y] = 0;
+
+ }
+
+}
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/BlueKey.java b/src/edu/nd/se2018/homework/chipsChallenge/src/BlueKey.java
new file mode 100644
index 00000000..7203e0d0
--- /dev/null
+++ b/src/edu/nd/se2018/homework/chipsChallenge/src/BlueKey.java
@@ -0,0 +1,41 @@
+package edu.nd.se2018.homework.chipsChallenge.src;
+
+import java.awt.Point;
+
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+
+public class BlueKey implements Key{
+ // locals
+ Point location = new Point();
+ ChipMap map;
+ ImageView imageView;
+ int scale = 20;
+ int ID = 1;
+
+ public BlueKey(ChipMap chipMap, int x, int y) {
+ map = chipMap;
+ location.x = x;
+ location.y = y;
+ Image blueKeyImage = new Image("images\\blueKey.png", scale, scale, false, true);
+ imageView = new ImageView(blueKeyImage);
+ imageView.setX(location.x*scale);
+ imageView.setY(location.y*scale);
+ }
+
+ @Override
+ public Point getKeyLocation() {
+ return location;
+ }
+
+ @Override
+ public ImageView getKeyImageView() {
+ return imageView;
+ }
+
+ @Override
+ public int getDoorId() {
+ return ID;
+ }
+
+}
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/Bug.java b/src/edu/nd/se2018/homework/chipsChallenge/src/Bug.java
new file mode 100644
index 00000000..6d2891c3
--- /dev/null
+++ b/src/edu/nd/se2018/homework/chipsChallenge/src/Bug.java
@@ -0,0 +1,61 @@
+package edu.nd.se2018.homework.chipsChallenge.src;
+
+import java.awt.Point;
+import java.util.Observable;
+import java.util.Observer;
+import java.util.concurrent.ThreadLocalRandom;
+
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+
+public class Bug implements Observer{
+ // locals
+ Point bugLocation = new Point();
+ Point chipLocation;
+ final int scalingFactor = 20;
+ Image bugImage;
+ ImageView bugImageView;
+ ChipMap map;
+
+ public Bug(ChipMap chipMap, int scale) {
+ map = chipMap;
+ do {
+ bugLocation.x = 14;
+ bugLocation.y = 16;
+ } while (map.chipsGrid[bugLocation.x][bugLocation.y] != 0);
+ Image bugImage = new Image("images\\bugDown.PNG", scale, scale, false, true);
+ bugImageView = new ImageView(bugImage);
+ }
+
+ public void setImageView() {
+ bugImageView.setX(bugLocation.x*scalingFactor);
+ bugImageView.setY(bugLocation.y*scalingFactor);
+ }
+
+ public ImageView getImageView(){
+ return bugImageView;
+ }
+
+ public Point getBugLocation() {
+ return bugLocation;
+ }
+ public void moveBug() {
+
+ if (bugLocation.x - chipLocation.x < 0 && map.chipsGrid[bugLocation.x +1][bugLocation.y] == 0 ) {
+ bugLocation.x++;
+ }else if (bugLocation.x - chipLocation.x > 0 && map.chipsGrid[bugLocation.x -1][bugLocation.y] == 0) {
+ bugLocation.x--;
+ }
+ setImageView();
+ }
+
+ @Override
+ public void update(Observable s, Object arg) {
+ if (s instanceof Chip){
+ chipLocation = ((Chip)s).getChipLocation();
+ moveBug();
+ }
+
+ }
+
+}
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/Chip.java b/src/edu/nd/se2018/homework/chipsChallenge/src/Chip.java
new file mode 100644
index 00000000..266fc3ef
--- /dev/null
+++ b/src/edu/nd/se2018/homework/chipsChallenge/src/Chip.java
@@ -0,0 +1,74 @@
+package edu.nd.se2018.homework.chipsChallenge.src;
+
+import java.awt.Point;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Observable;
+
+public class Chip extends Observable{
+ // locals
+ Point location = new Point();
+ ChipMap map;
+ List bag;
+ int doorId = 1;
+
+ public Chip(ChipMap chipMap) {
+ map = chipMap;
+ location.x = 14;
+ location.y = 14;
+ bag = new LinkedList();
+ }
+
+ public Point getChipLocation() {
+ return location;
+ }
+
+ public int getDoorId() {
+ return doorId;
+ }
+
+ // set starting location of chip for level 2
+ public void resetChip() {
+ location.x = 14;
+ location.y = 14;
+ }
+
+ // set starting location of chip for level 2
+ public void resetChip2() {
+ location.x = 20;
+ location.y = 1;
+ }
+
+ public void goEast() {
+ if(location.x < 24 && map.chipsGrid[location.x +1][location.y] != 1) {
+ location.x += 1;
+ setChanged();
+ notifyObservers();
+ }
+ }
+
+ public void goWest() {
+ if(location.x > 0 && map.chipsGrid[location.x -1][location.y] != 1) {
+ location.x -= 1;
+ setChanged();
+ notifyObservers();
+ }
+ }
+
+ public void goNorth() {
+ if(location.y > 0 && map.chipsGrid[location.x][location.y-1] != 1) {
+ location.y -= 1;
+ setChanged();
+ notifyObservers();
+ }
+ }
+
+ public void goSouth() {
+ if(location.y < 24 && map.chipsGrid[location.x][location.y +1] != 1) {
+ location.y += 1;
+ setChanged();
+ notifyObservers();
+ }
+ }
+
+}
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/ChipMap.java b/src/edu/nd/se2018/homework/chipsChallenge/src/ChipMap.java
new file mode 100644
index 00000000..8d63845e
--- /dev/null
+++ b/src/edu/nd/se2018/homework/chipsChallenge/src/ChipMap.java
@@ -0,0 +1,369 @@
+package edu.nd.se2018.homework.chipsChallenge.src;
+
+import javafx.collections.ObservableList;
+import javafx.scene.Node;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.scene.paint.Color;
+import javafx.scene.shape.Rectangle;
+
+public class ChipMap {
+ // local
+ int[][] chipsGrid = new int[25][25];
+ final int dimensions = 25;
+ ImageView tileImageView;
+ ImageView wallImageView;
+ ImageView waterImageView;
+ ImageView fireImageView;
+ int vert1, vert2, vert3, vert4, vert5, vert6, vert7, vert8, vert9, vert10, vert11;
+ int horiz1, horiz2, horiz3, horiz4, horiz5, horiz6, horiz7, horiz8, horiz9, horiz10, horiz11, horiz12;
+ BlueDoor blueDoor;
+
+
+ public void drawMap(ObservableList root, int scale) {
+ Image tile = new Image("images\\BlankTile.png", scale, scale, false, true);
+ for(int x = 0; x < dimensions; x++) {
+ for(int y = 0; y < dimensions; y++) {
+ tileImageView = new ImageView(tile);
+ tileImageView.setX(x*scale);
+ tileImageView.setY(y*scale);
+ root.add(tileImageView);
+ chipsGrid[x][y] = 0;
+ }
+ }
+ }
+
+ public void resetFloor(ObservableList root, int scale, int x, int y) {
+ Image tile = new Image("images\\BlankTile.png", scale, scale, false, true);
+ tileImageView = new ImageView(tile);
+ tileImageView.setX(x*scale);
+ tileImageView.setY(y*scale);
+ root.add(tileImageView);
+ chipsGrid[x][y] = 0;
+ }
+
+ public void drawObsticles2(ObservableList root, int scale) {
+ // draw fire
+ for(int y = 2; y < 25; y++) {
+ for(int x = 0; x < 1; x++) {
+ Image fire = new Image("images\\fire.PNG", scale, scale, false, true);
+ fireImageView = new ImageView(fire);
+ fireImageView.setX(x*scale);
+ fireImageView.setY(y*scale);
+ root.add(fireImageView);
+ chipsGrid[x][y] = 3;
+ }
+ }
+
+ for(int x = 1; x < 24; x++) {
+ for(int y = 24; y < 25; y++) {
+ Image fire = new Image("images\\fire.PNG", scale, scale, false, true);
+ fireImageView = new ImageView(fire);
+ fireImageView.setX(x*scale);
+ fireImageView.setY(y*scale);
+ root.add(fireImageView);
+ chipsGrid[x][y] = 3;
+ }
+ }
+ }
+
+ public void drawObsticles(ObservableList root, int scale) {
+ // draw water
+ for(int y = 9; y < 12; y++) {
+ for(int x = 0; x < dimensions - 1; x++) {
+ Image water = new Image("images\\water.PNG", scale, scale, false, true);
+ waterImageView = new ImageView(water);
+ waterImageView.setX(x*scale);
+ waterImageView.setY(y*scale);
+ root.add(waterImageView);
+ chipsGrid[x][y] = 1;
+ }
+ }
+
+ // draw fire
+ for(int y = 5; y < 8; y++) {
+ for(int x = 3; x < 12; x++) {
+ Image fire = new Image("images\\fire.PNG", scale, scale, false, true);
+ fireImageView = new ImageView(fire);
+ fireImageView.setX(x*scale);
+ fireImageView.setY(y*scale);
+ root.add(fireImageView);
+ chipsGrid[x][y] = 2;
+ }
+ }
+ for(int x = 3; x < 6; x++) {
+ for(int y = 0; y < 5; y++) {
+ Image fire = new Image("images\\fire.PNG", scale, scale, false, true);
+ fireImageView = new ImageView(fire);
+ fireImageView.setX(x*scale);
+ fireImageView.setY(y*scale);
+ root.add(fireImageView);
+ chipsGrid[x][y] = 2;
+ }
+ }
+ }
+
+ public int killChip(int x, int y) {
+ return chipsGrid[x][y];
+ }
+
+ public void walkOnFire(ObservableList root) {
+ for(int y = 5; y < 8; y++) {
+ for(int x = 3; x < 12; x++) {
+ chipsGrid[x][y] = 0;
+ }
+ }
+ for(int x = 3; x < 6; x++) {
+ for(int y = 0; y < 5; y++) {
+ chipsGrid[x][y] = 0;
+ }
+ }
+ }
+ public void walkOnFire2(ObservableList root) {
+ for(int y = 2; y < 25; y++) {
+ for(int x = 0; x < 1; x++) {
+ chipsGrid[x][y] = 0;
+ }
+ }
+
+ for(int x = 1; x < 24; x++) {
+ for(int y = 24; y < 25; y++) {
+ chipsGrid[x][y] = 0;
+ }
+ }
+ }
+
+
+ public void drawWalls2(ObservableList root, int scale) {
+
+ // vertical walls
+ vert6 = 1;
+ vert7 = 5;
+ vert8 = 4;
+ vert9 = 6;
+ vert10 = 18;
+ vert11 = 16;
+ for(int y = 0; y < dimensions; y++) {
+ if(y < 24) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(vert6*scale);
+ wallImageView.setY(y*scale);
+ root.add(wallImageView);
+ chipsGrid[vert6][y] = 1;
+ }
+ if(y > 1 && y < 8) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(vert7*scale);
+ wallImageView.setY(y*scale);
+ root.add(wallImageView);
+ chipsGrid[vert7][y] = 1;
+ }
+ if(y > 11 && y < 22) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(vert8*scale);
+ wallImageView.setY(y*scale);
+ root.add(wallImageView);
+ chipsGrid[vert8][y] = 1;
+ }
+ if(y > 13 && y < 22) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(vert9*scale);
+ wallImageView.setY(y*scale);
+ root.add(wallImageView);
+ chipsGrid[vert9][y] = 1;
+ }
+ if(y > 3 && y < 14) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(vert10*scale);
+ wallImageView.setY(y*scale);
+ root.add(wallImageView);
+ chipsGrid[vert10][y] = 1;
+ }
+ if(y > 3 && y < 12) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(vert11*scale);
+ wallImageView.setY(y*scale);
+ root.add(wallImageView);
+ chipsGrid[vert11][y] = 1;
+ }
+ }
+
+ // horizontal walls
+ horiz5 = 2;
+ horiz6 = 7;
+ horiz7 = 11;
+ horiz8 = 13;
+ horiz9 = 23;
+ horiz10 = 21;
+ horiz11 = 14;
+ horiz12 = 16;
+ for(int x = 0; x < dimensions; x++) {
+ if(x > 4 && x < 21) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(x*scale);
+ wallImageView.setY(horiz5*scale);
+ root.add(wallImageView);
+ chipsGrid[x][horiz5] = 1;
+ }
+ if(x > 1 && x < 5) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(x*scale);
+ wallImageView.setY(horiz6*scale);
+ root.add(wallImageView);
+ chipsGrid[x][horiz6] = 1;
+ }
+ if(x > 3 && x < 16) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(x*scale);
+ wallImageView.setY(horiz7*scale);
+ root.add(wallImageView);
+ chipsGrid[x][horiz7] = 1;
+ }
+ if(x > 5 && x < 18) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(x*scale);
+ wallImageView.setY(horiz8*scale);
+ root.add(wallImageView);
+ chipsGrid[x][horiz8] = 1;
+ }
+ if(x > 1 && x < 24) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(x*scale);
+ wallImageView.setY(horiz9*scale);
+ root.add(wallImageView);
+ chipsGrid[x][horiz9] = 1;
+ }
+ if(x > 6 && x < 24) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(x*scale);
+ wallImageView.setY(horiz10*scale);
+ root.add(wallImageView);
+ chipsGrid[x][horiz10] = 1;
+ }
+ if(x > 22) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(x*scale);
+ wallImageView.setY(horiz11*scale);
+ root.add(wallImageView);
+ chipsGrid[x][horiz11] = 1;
+ }
+ if(x > 22) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(x*scale);
+ wallImageView.setY(horiz12*scale);
+ root.add(wallImageView);
+ chipsGrid[x][horiz12] = 1;
+ }
+ }
+ }
+
+ public void drawWalls(ObservableList root, int scale) {
+
+ // vertical walls
+ vert1 = 2;
+ vert2 = 14;
+ vert3 = 16;
+ vert4 = 6;
+ vert5 = 23;
+ for(int y = 0; y < dimensions; y++) {
+ if((y > 11 && y < 16) || y > 16) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(vert1*scale);
+ wallImageView.setY(y*scale);
+ root.add(wallImageView);
+ chipsGrid[vert1][y] = 1;
+ }
+ if(y > 19) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(vert2*scale);
+ wallImageView.setY(y*scale);
+ root.add(wallImageView);
+ chipsGrid[vert2][y] = 1;
+ }
+ if(y < 19 && y > 16) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(vert5*scale);
+ wallImageView.setY(y*scale);
+ root.add(wallImageView);
+ chipsGrid[vert5][y] = 1;
+ }
+ if(y > 3 && y < 9) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(vert3*scale);
+ wallImageView.setY(y*scale);
+ root.add(wallImageView);
+ chipsGrid[vert3][y] = 1;
+ }
+ if(y >= 0 && y < 5) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(vert4*scale);
+ wallImageView.setY(y*scale);
+ root.add(wallImageView);
+ chipsGrid[vert4][y] = 1;
+ }
+
+
+
+ }
+
+
+ // horizontal walls
+ horiz1 = 20;
+ horiz2 = 4;
+ horiz3 = 17;
+ horiz4 = 16;
+ for(int x = 0; x < dimensions; x++) {
+ if(x > 13 && x != 24) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(x*scale);
+ wallImageView.setY(horiz1*scale);
+ root.add(wallImageView);
+ chipsGrid[x][horiz1] = 1;
+ }
+ if(x > 3 && x < 23) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(x*scale);
+ wallImageView.setY(horiz3*scale);
+ root.add(wallImageView);
+ chipsGrid[x][horiz3] = 1;
+ }
+ if(x == 4) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(x*scale);
+ wallImageView.setY(horiz4*scale);
+ root.add(wallImageView);
+ chipsGrid[x][horiz4] = 1;
+ }
+ if((x > 12 && x < 24) || (x > 6 && x < 12)) {
+ Image wall = new Image("images\\wall.PNG", scale, scale, false, true);
+ wallImageView = new ImageView(wall);
+ wallImageView.setX(x*scale);
+ wallImageView.setY(horiz2*scale);
+ root.add(wallImageView);
+ chipsGrid[x][horiz2] = 1;
+ }
+ }
+ }
+}
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/ChipsChallengeDesignPatterns.pdf b/src/edu/nd/se2018/homework/chipsChallenge/src/ChipsChallengeDesignPatterns.pdf
new file mode 100644
index 00000000..7c81feb9
Binary files /dev/null and b/src/edu/nd/se2018/homework/chipsChallenge/src/ChipsChallengeDesignPatterns.pdf differ
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/ChipsChallengeDiscussion.pdf b/src/edu/nd/se2018/homework/chipsChallenge/src/ChipsChallengeDiscussion.pdf
new file mode 100644
index 00000000..b2509a26
Binary files /dev/null and b/src/edu/nd/se2018/homework/chipsChallenge/src/ChipsChallengeDiscussion.pdf differ
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/ChipsChallengeUMLDiagram.pdf b/src/edu/nd/se2018/homework/chipsChallenge/src/ChipsChallengeUMLDiagram.pdf
new file mode 100644
index 00000000..75b41c92
Binary files /dev/null and b/src/edu/nd/se2018/homework/chipsChallenge/src/ChipsChallengeUMLDiagram.pdf differ
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/ChipsGame.java b/src/edu/nd/se2018/homework/chipsChallenge/src/ChipsGame.java
new file mode 100644
index 00000000..460193f3
--- /dev/null
+++ b/src/edu/nd/se2018/homework/chipsChallenge/src/ChipsGame.java
@@ -0,0 +1,350 @@
+package edu.nd.se2018.homework.chipsChallenge.src;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+import javafx.application.Application;
+import javafx.event.EventHandler;
+import javafx.scene.Scene;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.scene.input.KeyEvent;
+import javafx.scene.layout.AnchorPane;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+
+public class ChipsGame extends Application {
+ // locals
+ Pane root;
+ Scene scene;
+ ChipMap chipMap;
+ final int scalingFactor = 20;
+ Image chipImage;
+ Image chipLeft = new Image("images\\chipLeft.png", scalingFactor, scalingFactor, false, true);
+ Image chipRight = new Image("images\\chipRight.png", scalingFactor, scalingFactor, false, true);
+ Image chipUp = new Image("images\\chipUp.png", scalingFactor, scalingFactor, false, true);
+ Image chipDown = new Image("images\\chipDown.png", scalingFactor, scalingFactor, false, true);
+ Portal portal = new Portal(chipMap, 4, 0);
+ ImageView chipImageView;
+ List keys;
+ List doors;
+ Chip chip;
+ FireShoe fireShoe;
+ Stage mapStage;
+ List bugs;
+ int winCount = 0;
+ ArrayList keyDelete = new ArrayList();
+
+
+ public static void main(String[] args) {
+ // TODO Auto-generated method stub
+ launch(args);
+ }
+
+ @Override
+ public void start(Stage chipStage) throws Exception {
+ // TODO Auto-generated method stub
+
+ chipMap = new ChipMap();
+ chip = new Chip(chipMap);
+ fireShoe = new FireShoe(chipMap, 17, 8);
+ keys = new LinkedList();
+ keys.add(new BlueKey(chipMap, 15, 24));
+ keys.add(new GreenKey(chipMap, 1, 23));
+ doors = new LinkedList();
+ doors.add(new BlueDoor(chipMap, 2, 16));
+ doors.add(new GreenDoor(chipMap, 24, 11));
+ root = new AnchorPane();
+ //obstacles = new LinkedList();
+ //obstacles.add(new Fire(chipMap));
+ chipMap.drawMap(root.getChildren(), scalingFactor);
+ chipMap.drawWalls(root.getChildren(), scalingFactor);
+ chipMap.drawObsticles(root.getChildren(), scalingFactor);
+ root.getChildren().add(fireShoe.getImageView());
+
+ bugs = new LinkedList();
+ bugs.add(new Bug(chipMap, scalingFactor));
+
+ // register observers of the ship
+ for(Bug bug: bugs)
+ chip.addObserver(bug);
+
+ for(Bug bug: bugs) {
+ bug.setImageView();
+ }
+ // load chip and keys on map
+ loadChipImage();
+ loadItems();
+
+ // lock door
+ for(Door door: doors)
+ door.lockDoor();
+ // set scene
+ root.getChildren().add(portal.getImageView());
+ scene = new Scene(root, 500, 500);
+ chipStage.setTitle("Chips Challenge Game");
+ chipStage.setScene(scene);
+ chipStage.show();
+ mapStage = chipStage;
+ moveChip();
+ }
+
+ private void moveChip() {
+ scene.setOnKeyPressed(new EventHandler(){
+
+ @Override
+ public void handle(KeyEvent ke) {
+ // TODO Auto-generated method stub
+ switch(ke.getCode()) {
+ case RIGHT:
+ chip.goEast();
+ chipImageView.setImage(chipRight);
+ chipImage = chipRight;
+ chipImageView.setX(chip.getChipLocation().x*scalingFactor);
+ chipImageView.setY(chip.getChipLocation().y*scalingFactor);
+ break;
+ case LEFT:
+ chip.goWest();
+ chipImageView.setImage(chipLeft);
+ chipImage = chipLeft;
+ chipImageView.setX(chip.getChipLocation().x*scalingFactor);
+ chipImageView.setY(chip.getChipLocation().y*scalingFactor);
+ break;
+ case UP:
+ chip.goNorth();
+ chipImageView.setImage(chipUp);
+ chipImage = chipUp;
+ chipImageView.setX(chip.getChipLocation().x*scalingFactor);
+ chipImageView.setY(chip.getChipLocation().y*scalingFactor);
+ break;
+ case DOWN:
+ chip.goSouth();
+ chipImageView.setImage(chipDown);
+ chipImage = chipDown;
+ chipImageView.setX(chip.getChipLocation().x*scalingFactor);
+ chipImageView.setY(chip.getChipLocation().y*scalingFactor);
+ break;
+ // break if escape key is pressed
+ case ESCAPE:
+ mapStage.close();
+ break;
+ default:
+ break;
+ }
+
+ // Handle Portal
+ if(chip.getChipLocation().x - portal.getLocation().x == 0 && chip.getChipLocation().y - portal.getLocation().y == 0) {
+ // if on first level go to next level
+ if(winCount == 0) {
+ nextLevel();
+ winCount++;
+ // if on second level exit game
+ } else {
+ mapStage.close();
+ }
+ }
+
+ // Handle fire for level 1
+ if(chipMap.killChip(chip.getChipLocation().x, chip.getChipLocation().y) == 2)
+ resetGame();
+
+ // Handle fire for level 2
+ if(chipMap.killChip(chip.getChipLocation().x, chip.getChipLocation().y) == 3)
+ nextLevel();
+
+ // pick up fire shoe
+ if(chip.getChipLocation().x - fireShoe.getLocation().x == 0 && chip.getChipLocation().y - fireShoe.getLocation().y == 0) {
+ chipMap.resetFloor(root.getChildren(), scalingFactor, fireShoe.getLocation().x, fireShoe.getLocation().y);
+ resetChipImage();
+ // walk on fire on Level 1
+ if(winCount == 0)
+ chipMap.walkOnFire(root.getChildren());
+ // walk on fire on Level 2
+ else
+ chipMap.walkOnFire2(root.getChildren());
+ }
+
+ //HandleBug
+ for(Bug key: bugs) {
+ if(chip.getChipLocation().x - key.getBugLocation().x == 0 && chip.getChipLocation().y - key.getBugLocation().y == 0) {
+ resetGame();
+ }
+ }
+
+ // Handle Key
+ for(Key key: keys) {
+ if(chip.getChipLocation().x - key.getKeyLocation().x == 0 && chip.getChipLocation().y - key.getKeyLocation().y == 0) {
+ keyDelete.add(key);
+ }
+ }
+
+ for(Key key: keyDelete) {
+ chipMap.resetFloor(root.getChildren(), scalingFactor, key.getKeyLocation().x, key.getKeyLocation().y);
+ keys.remove(key);
+ resetChipImage();
+ }
+
+ // Handle Door
+ for(Key key: keyDelete) {
+ for(Door door: doors) {
+ if(key.getDoorId() == door.getDoorId()) {
+ door.unlockDoor();
+ }
+ }
+ }
+ for(Door door: doors) {
+ if(chip.getChipLocation().x - door.getDoorLocation().x == 0 && chip.getChipLocation().y - door.getDoorLocation().y == 0) {
+ chipMap.resetFloor(root.getChildren(), scalingFactor, door.getDoorLocation().x, door.getDoorLocation().y);
+ resetChipImage();
+ }
+ }
+ }
+
+ });
+ }
+
+ // loads the image of chip
+ private void loadChipImage() {
+ Image chipLeft = new Image("images\\chipLeft.png", scalingFactor, scalingFactor, false, true);
+ chipImageView = new ImageView(chipLeft);
+ chipImageView.setX(chip.getChipLocation().x*scalingFactor);
+ chipImageView.setY(chip.getChipLocation().y*scalingFactor);
+ root.getChildren().add(chipImageView);
+ }
+
+ // generates images for all items
+ private void loadItems() {
+ for(Key key: keys)
+ root.getChildren().add(key.getKeyImageView());
+
+ for(Door door: doors)
+ root.getChildren().add(door.getDoorImageView());
+
+ for (Bug bug: bugs)
+ root.getChildren().add(bug.getImageView());
+ }
+
+ private void resetChipImage() {
+ root.getChildren().remove(chipImageView);
+ chipImageView = new ImageView(chipImage);
+ chipImageView.setX(chip.getChipLocation().x*scalingFactor);
+ chipImageView.setY(chip.getChipLocation().y*scalingFactor);
+ root.getChildren().add(chipImageView);
+ }
+
+
+ private void resetGame() {
+ // delete collected keys
+ ArrayList keyDelete2 = new ArrayList();
+ for(Key key: keyDelete) {
+ keyDelete2.add(key);
+ }
+ for(Key key: keyDelete2) {
+ keyDelete.remove(key);
+ }
+
+ // delete bugs
+ ArrayList bugsDelete = new ArrayList();
+ for(Bug key: bugs) {
+ bugsDelete.add(key);
+ }
+ for(Bug key: bugsDelete) {
+ chipMap.resetFloor(root.getChildren(), scalingFactor, key.getBugLocation().x, key.getBugLocation().y);
+ bugs.remove(key);
+ }
+
+ root.getChildren().clear();
+
+ // add bugs
+ bugs.add(new Bug(chipMap, scalingFactor));
+ for(Bug bug: bugs)
+ chip.addObserver(bug);
+ for(Bug bug: bugs)
+ bug.setImageView();
+
+
+ // reset main map
+ chipMap.drawMap(root.getChildren(), scalingFactor);
+ chipMap.drawWalls(root.getChildren(), scalingFactor);
+ chipMap.drawObsticles(root.getChildren(), scalingFactor);
+ root.getChildren().add(portal.getImageView());
+ root.getChildren().add(fireShoe.getImageView());
+
+ // add chip
+ chip.resetChip();
+ loadChipImage();
+
+ // add keys
+ keys = new LinkedList();
+ keys.add(new BlueKey(chipMap, 15, 24));
+ keys.add(new GreenKey(chipMap, 1, 23));
+
+ loadItems();
+
+ // re-lock doors
+ for(Door door: doors)
+ door.lockDoor();
+ }
+
+ private void nextLevel() {
+ // delete bugs
+ ArrayList bugsDelete = new ArrayList();
+ for(Bug key: bugs) {
+ bugsDelete.add(key);
+ }
+ for(Bug bug: bugsDelete) {
+ chipMap.resetFloor(root.getChildren(), scalingFactor, bug.getBugLocation().x, bug.getBugLocation().y);
+ bugs.remove(bug);
+ }
+
+ // delete collected keys
+ ArrayList keyDelete2 = new ArrayList();
+ for(Key key: keyDelete) {
+ keyDelete2.add(key);
+ }
+ for(Key key: keyDelete2) {
+ keyDelete.remove(key);
+ }
+
+ // delete doors
+ ArrayList doorDelete = new ArrayList();
+ for(Door door: doors) {
+ doorDelete.add(door);
+ }
+ for(Door door: doorDelete) {
+ doors.remove(door);
+ }
+
+ root.getChildren().clear();
+ chipMap.drawMap(root.getChildren(), scalingFactor);
+ chip.resetChip2();
+ loadChipImage();
+ chipMap.drawWalls2(root.getChildren(), scalingFactor);
+ chipMap.drawObsticles2(root.getChildren(), scalingFactor);
+
+ // add portal
+ portal.setLocation2();
+ Portal portal = new Portal(chipMap, 0, 0);
+ root.getChildren().add(portal.getImageView());
+
+ // add fire shoe
+ fireShoe = new FireShoe(chipMap, 2, 17);
+ root.getChildren().add(fireShoe.getImageView());
+
+ // create keys
+ keys = new LinkedList();
+ keys.add(new BlueKey(chipMap, 8, 12));
+ keys.add(new GreenKey(chipMap, 4, 6));
+ keys.add(new RedKey(chipMap, 24, 15));
+ keys.add(new YellowKey(chipMap, 0, 14));
+
+ // create doors
+ doors.add(new BlueDoor(chipMap, 24, 22));
+ doors.add(new GreenDoor(chipMap, 5, 21));
+ doors.add(new YellowDoor(chipMap, 23, 15));
+ doors.add(new RedDoor(chipMap, 0, 1));
+ loadItems();
+ }
+
+}
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/Door.java b/src/edu/nd/se2018/homework/chipsChallenge/src/Door.java
new file mode 100644
index 00000000..71bc79bc
--- /dev/null
+++ b/src/edu/nd/se2018/homework/chipsChallenge/src/Door.java
@@ -0,0 +1,14 @@
+package edu.nd.se2018.homework.chipsChallenge.src;
+
+import java.awt.Point;
+
+import javafx.scene.image.ImageView;
+
+public interface Door {
+ // methods for doors
+ Point getDoorLocation();
+ void lockDoor();
+ int getDoorId();
+ void unlockDoor();
+ ImageView getDoorImageView();
+}
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/FireShoe.java b/src/edu/nd/se2018/homework/chipsChallenge/src/FireShoe.java
new file mode 100644
index 00000000..e74d2ffd
--- /dev/null
+++ b/src/edu/nd/se2018/homework/chipsChallenge/src/FireShoe.java
@@ -0,0 +1,39 @@
+package edu.nd.se2018.homework.chipsChallenge.src;
+
+import java.awt.Point;
+
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+
+public class FireShoe {
+ // locals
+ Point location = new Point();
+ ChipMap map;
+ ImageView imageView;
+ int scale = 20;
+ int ID = 1;
+
+ public FireShoe(ChipMap chipMap, int x, int y) {
+ map = chipMap;
+ location.x = x;
+ location.y = y;
+ Image blueKeyImage = new Image("images\\fireShoe.PNG", scale, scale, false, true);
+ imageView = new ImageView(blueKeyImage);
+ imageView.setX(location.x*scale);
+ imageView.setY(location.y*scale);
+ }
+
+ public Point getLocation() {
+ return location;
+ }
+
+ public ImageView getImageView() {
+ return imageView;
+ }
+
+ public int getId() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+}
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/GreenDoor.java b/src/edu/nd/se2018/homework/chipsChallenge/src/GreenDoor.java
new file mode 100644
index 00000000..be9d7634
--- /dev/null
+++ b/src/edu/nd/se2018/homework/chipsChallenge/src/GreenDoor.java
@@ -0,0 +1,50 @@
+package edu.nd.se2018.homework.chipsChallenge.src;
+
+import java.awt.Point;
+
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+
+public class GreenDoor implements Door{
+ // locals
+ ChipMap map;
+ Point location = new Point();
+ ImageView imageView;
+ int scale = 20;
+ int ID = 2;
+
+ public GreenDoor(ChipMap chipMap, int x, int y) {
+ map = chipMap;
+ location.x = x;
+ location.y = y;
+ Image blueDoorImage = new Image("images\\greenKeyWall.png", scale, scale, false, true);
+ imageView = new ImageView(blueDoorImage);
+ imageView.setX(location.x*scale);
+ imageView.setY(location.y*scale);
+ map.chipsGrid[location.x][location.y] = 1;
+ }
+ @Override
+ public Point getDoorLocation() {
+ return location;
+ }
+
+ @Override
+ public void lockDoor() {
+ map.chipsGrid[location.x][location.y] = 1;
+
+ }
+ @Override
+ public ImageView getDoorImageView() {
+ return imageView;
+ }
+ @Override
+ public int getDoorId() {
+ return ID;
+ }
+ @Override
+ public void unlockDoor() {
+ map.chipsGrid[location.x][location.y] = 0;
+
+ }
+
+}
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/GreenKey.java b/src/edu/nd/se2018/homework/chipsChallenge/src/GreenKey.java
new file mode 100644
index 00000000..6db1fd06
--- /dev/null
+++ b/src/edu/nd/se2018/homework/chipsChallenge/src/GreenKey.java
@@ -0,0 +1,41 @@
+package edu.nd.se2018.homework.chipsChallenge.src;
+
+import java.awt.Point;
+
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+
+public class GreenKey implements Key{
+ // locals
+ Point location = new Point();
+ ChipMap map;
+ ImageView imageView;
+ int scale = 20;
+ int ID = 2;
+
+ public GreenKey(ChipMap chipMap, int x, int y) {
+ map = chipMap;
+ location.x = x;
+ location.y = y;
+ Image greenKeyImage = new Image("images\\greenKey.png", scale, scale, false, true);
+ imageView = new ImageView(greenKeyImage);
+ imageView.setX(location.x*scale);
+ imageView.setY(location.y*scale);
+ }
+
+ @Override
+ public Point getKeyLocation() {
+ return location;
+ }
+
+ @Override
+ public ImageView getKeyImageView() {
+ return imageView;
+ }
+
+ @Override
+ public int getDoorId() {
+ return ID;
+ }
+
+}
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/Key.java b/src/edu/nd/se2018/homework/chipsChallenge/src/Key.java
new file mode 100644
index 00000000..e3599a6b
--- /dev/null
+++ b/src/edu/nd/se2018/homework/chipsChallenge/src/Key.java
@@ -0,0 +1,13 @@
+package edu.nd.se2018.homework.chipsChallenge.src;
+
+import java.awt.Point;
+
+import javafx.scene.image.ImageView;
+
+public interface Key {
+ // methods for keys
+ Point getKeyLocation();
+ ImageView getKeyImageView();
+ int getDoorId();
+
+}
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/Portal.java b/src/edu/nd/se2018/homework/chipsChallenge/src/Portal.java
new file mode 100644
index 00000000..b722e3ba
--- /dev/null
+++ b/src/edu/nd/se2018/homework/chipsChallenge/src/Portal.java
@@ -0,0 +1,38 @@
+package edu.nd.se2018.homework.chipsChallenge.src;
+
+import java.awt.Point;
+
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+
+public class Portal {
+ // locals
+ Point location = new Point();
+ ChipMap map;
+ ImageView imageView;
+ int scale = 20;
+
+ public Portal(ChipMap chipMap, int x, int y) {
+ map = chipMap;
+ location.x = x;
+ location.y = y;
+ Image portalImage = new Image("images\\portal.png", scale, scale, false, true);
+ imageView = new ImageView(portalImage);
+ imageView.setX(location.x*scale);
+ imageView.setY(location.y*scale);
+ }
+
+ public Point getLocation() {
+ return location;
+ }
+
+ public void setLocation2() {
+ location.x = 0;
+ location.y = 0;
+ }
+
+ public ImageView getImageView() {
+ return imageView;
+ }
+
+}
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/RedDoor.java b/src/edu/nd/se2018/homework/chipsChallenge/src/RedDoor.java
new file mode 100644
index 00000000..fbfd89ef
--- /dev/null
+++ b/src/edu/nd/se2018/homework/chipsChallenge/src/RedDoor.java
@@ -0,0 +1,57 @@
+package edu.nd.se2018.homework.chipsChallenge.src;
+
+import java.awt.Point;
+
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+
+public class RedDoor implements Door{
+
+ ChipMap map;
+ Point location = new Point();
+ ImageView imageView;
+ int scale = 20;
+ int ID = 3;
+
+ public RedDoor(ChipMap chipMap, int x, int y) {
+ map = chipMap;
+ location.x = x;
+ location.y = y;
+ Image redDoorImage = new Image("images\\redKeyWall.png", scale, scale, false, true);
+ imageView = new ImageView(redDoorImage);
+ imageView.setX(location.x*scale);
+ imageView.setY(location.y*scale);
+ map.chipsGrid[location.x][location.y] = 1;
+ }
+ // test
+ @Override
+ public Point getDoorLocation() {
+ // TODO Auto-generated method stub
+ return location;
+ }
+
+ @Override
+ public void lockDoor() {
+ map.chipsGrid[location.x][location.y] = 1;
+
+ }
+
+ @Override
+ public int getDoorId() {
+ // TODO Auto-generated method stub
+ return ID;
+ }
+
+ @Override
+ public void unlockDoor() {
+ map.chipsGrid[location.x][location.y] = 0;
+
+ }
+
+ @Override
+ public ImageView getDoorImageView() {
+ // TODO Auto-generated method stub
+ return imageView;
+ }
+
+}
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/RedKey.java b/src/edu/nd/se2018/homework/chipsChallenge/src/RedKey.java
new file mode 100644
index 00000000..cde76c9c
--- /dev/null
+++ b/src/edu/nd/se2018/homework/chipsChallenge/src/RedKey.java
@@ -0,0 +1,44 @@
+package edu.nd.se2018.homework.chipsChallenge.src;
+
+import java.awt.Point;
+
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+
+public class RedKey implements Key{
+ // locals
+ Point location = new Point();
+ ChipMap map;
+ ImageView imageView;
+ int scale = 20;
+ int ID = 3;
+
+ public RedKey(ChipMap chipMap, int x, int y) {
+ map = chipMap;
+ location.x = x;
+ location.y = y;
+ Image blueKeyImage = new Image("images\\redKey.png", scale, scale, false, true);
+ imageView = new ImageView(blueKeyImage);
+ imageView.setX(location.x*scale);
+ imageView.setY(location.y*scale);
+ }
+
+ @Override
+ public Point getKeyLocation() {
+ // TODO Auto-generated method stub
+ return location;
+ }
+
+ @Override
+ public ImageView getKeyImageView() {
+ // TODO Auto-generated method stub
+ return imageView;
+ }
+
+ @Override
+ public int getDoorId() {
+ // TODO Auto-generated method stub
+ return ID;
+ }
+
+}
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/YellowDoor.java b/src/edu/nd/se2018/homework/chipsChallenge/src/YellowDoor.java
new file mode 100644
index 00000000..befa7717
--- /dev/null
+++ b/src/edu/nd/se2018/homework/chipsChallenge/src/YellowDoor.java
@@ -0,0 +1,58 @@
+package edu.nd.se2018.homework.chipsChallenge.src;
+
+import java.awt.Point;
+
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+
+public class YellowDoor implements Door{
+ // locals
+ ChipMap map;
+ Point location = new Point();
+ ImageView imageView;
+ int scale = 20;
+ int ID = 4;
+
+ public YellowDoor(ChipMap chipMap, int x, int y) {
+ map = chipMap;
+ location.x = x;
+ location.y = y;
+ Image yellowDoorImage = new Image("images\\yellowKeyWall.png", scale, scale, false, true);
+ imageView = new ImageView(yellowDoorImage);
+ imageView.setX(location.x*scale);
+ imageView.setY(location.y*scale);
+ map.chipsGrid[location.x][location.y] = 1;
+ }
+
+ @Override
+ public Point getDoorLocation() {
+ // TODO Auto-generated method stub
+ return location;
+ }
+
+ @Override
+ public void lockDoor() {
+ map.chipsGrid[location.x][location.y] = 1;
+
+ }
+
+
+ @Override
+ public int getDoorId() {
+ // TODO Auto-generated method stub
+ return ID;
+ }
+
+ @Override
+ public void unlockDoor() {
+ map.chipsGrid[location.x][location.y] = 0;
+
+ }
+
+ @Override
+ public ImageView getDoorImageView() {
+ // TODO Auto-generated method stub
+ return imageView;
+ }
+
+}
diff --git a/src/edu/nd/se2018/homework/chipsChallenge/src/YellowKey.java b/src/edu/nd/se2018/homework/chipsChallenge/src/YellowKey.java
new file mode 100644
index 00000000..1ecadb3a
--- /dev/null
+++ b/src/edu/nd/se2018/homework/chipsChallenge/src/YellowKey.java
@@ -0,0 +1,44 @@
+package edu.nd.se2018.homework.chipsChallenge.src;
+
+import java.awt.Point;
+
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+
+public class YellowKey implements Key{
+ // locals
+ Point location = new Point();
+ ChipMap map;
+ ImageView imageView;
+ int scale = 20;
+ int ID = 4;
+
+ public YellowKey(ChipMap chipMap, int x, int y) {
+ map = chipMap;
+ location.x = x;
+ location.y = y;
+ Image blueKeyImage = new Image("images\\yellowKey.png", scale, scale, false, true);
+ imageView = new ImageView(blueKeyImage);
+ imageView.setX(location.x*scale);
+ imageView.setY(location.y*scale);
+ }
+
+ @Override
+ public Point getKeyLocation() {
+ // TODO Auto-generated method stub
+ return location;
+ }
+
+ @Override
+ public ImageView getKeyImageView() {
+ // TODO Auto-generated method stub
+ return imageView;
+ }
+
+ @Override
+ public int getDoorId() {
+ // TODO Auto-generated method stub
+ return ID;
+ }
+
+}
diff --git a/src/edu/nd/se2018/homework/homework3ClassDiagram.pdf b/src/edu/nd/se2018/homework/homework3ClassDiagram.pdf
new file mode 100644
index 00000000..60ead115
Binary files /dev/null and b/src/edu/nd/se2018/homework/homework3ClassDiagram.pdf differ
diff --git a/src/edu/nd/se2018/homework/homework3Reflection.docx b/src/edu/nd/se2018/homework/homework3Reflection.docx
new file mode 100644
index 00000000..d47bf87f
Binary files /dev/null and b/src/edu/nd/se2018/homework/homework3Reflection.docx differ
diff --git a/src/edu/nd/se2018/homework/homework4ClassDiagram.pdf b/src/edu/nd/se2018/homework/homework4ClassDiagram.pdf
new file mode 100644
index 00000000..74e078e3
Binary files /dev/null and b/src/edu/nd/se2018/homework/homework4ClassDiagram.pdf differ
diff --git a/src/edu/nd/se2018/homework/homework4Reflection.docx b/src/edu/nd/se2018/homework/homework4Reflection.docx
new file mode 100644
index 00000000..cc0d0988
Binary files /dev/null and b/src/edu/nd/se2018/homework/homework4Reflection.docx differ
diff --git a/src/edu/nd/se2018/homework/hwk1/Question1.java b/src/edu/nd/se2018/homework/hwk1/Question1.java
index d990b3b1..e21484a4 100644
--- a/src/edu/nd/se2018/homework/hwk1/Question1.java
+++ b/src/edu/nd/se2018/homework/hwk1/Question1.java
@@ -1,10 +1,22 @@
package edu.nd.se2018.homework.hwk1;
+import java.util.HashSet;
+
public class Question1 {
public Question1(){}
- public int getSumWithoutDuplicates(int[] numbers){
- return 0;
+ public int getSumWithoutDuplicates(int[] arr){
+ int sum = 0 ;
+ HashSet h = new HashSet();
+ for(int i = 0; i < arr.length; i++) {
+ if(h.contains(arr[i])) {
+ break;
+ }else {
+ h.add(arr[i]);
+ sum+=arr[i];
+ }
+ }
+ return sum;
}
}
diff --git a/src/edu/nd/se2018/homework/hwk1/Question2.java b/src/edu/nd/se2018/homework/hwk1/Question2.java
index b04a7f86..684436d4 100644
--- a/src/edu/nd/se2018/homework/hwk1/Question2.java
+++ b/src/edu/nd/se2018/homework/hwk1/Question2.java
@@ -1,10 +1,40 @@
+/*
+ * Shane Johnson Homework 1 Question2
+ * Outputing the most occurring word in a sentence
+ */
package edu.nd.se2018.homework.hwk1;
-
+import java.util.*;
+import java.util.Map.Entry;
public class Question2 {
public Question2(){}
- public String getMostFrequentWord(String input, String stopwords){
- return "";
+ public String getMostFrequentWord(String input, String stopWords){
+ HashMap map = new HashMap<>();
+ String[] tokens1 = stopWords.split(" "); // splits the words
+ HashSet stopSet = new HashSet<>(Arrays.asList(tokens1));
+ String[] tokens2 = input.split(" ");
+
+ for (String token: tokens2){
+ if(!stopSet.contains(token)) {
+ if(map.containsKey(token)) {
+ int count = map.get(token);
+ map.put(token, count+1);
+ } else {
+ map.put(token, 1);
+ }
+ }
+ }
+
+ Object[] numbers = map.values().toArray();
+ Arrays.sort(numbers);
+ if (numbers[numbers.length-1] == numbers[numbers.length-2]) {
+ return null;
+ }
+
+ Map.Entry temp = (Entry) map.entrySet().stream().sorted(Map.Entry.comparingByValue().reversed()).findFirst().get();
+ System.out.println(temp.getKey());
+
+ return temp.getKey();
}
}
diff --git a/src/edu/nd/se2018/homework/hwk1/Question3.java b/src/edu/nd/se2018/homework/hwk1/Question3.java
index 740d282c..b6785b4c 100644
--- a/src/edu/nd/se2018/homework/hwk1/Question3.java
+++ b/src/edu/nd/se2018/homework/hwk1/Question3.java
@@ -1,9 +1,41 @@
package edu.nd.se2018.homework.hwk1;
+
public class Question3 {
public Question3(){}
public int getMirrorCount(int[] numbers){
- return 0;
+ int[] mirroredArr = mirror(numbers);
+ return maxCount(numbers, mirroredArr);
}
+
+ private int[] mirror(int[] arr) { //flips the original array to find any mirror
+ int[] newArray = new int[arr.length];
+
+ for (int i = arr.length-1, j = 0; i >= 0; i--, j++) {
+ newArray[j] = arr[i];
+ }
+
+ return newArray;
+ }
+
+ private int maxCount(int[] original, int[] mirrored) { //finds the most mirrored numbers
+ int maxCount = 0;
+ int count = 0;
+
+ for (int i = 0; i < original.length; i++) {
+ if (original[i] == mirrored[i]) {
+ count++;
+ }else {
+ count = 0;
+ }
+
+ if (count > maxCount) {
+ maxCount = count;
+ }
+ }
+ System.out.println(maxCount);
+ return maxCount;
+
+ }
}
diff --git a/src/edu/nd/se2018/homework/hwk2/src/colombusGame/ColumbusShip.png b/src/edu/nd/se2018/homework/hwk2/src/colombusGame/ColumbusShip.png
new file mode 100644
index 00000000..ab23f309
Binary files /dev/null and b/src/edu/nd/se2018/homework/hwk2/src/colombusGame/ColumbusShip.png differ
diff --git a/src/edu/nd/se2018/homework/hwk2/src/colombusGame/OceanMap.java b/src/edu/nd/se2018/homework/hwk2/src/colombusGame/OceanMap.java
new file mode 100644
index 00000000..6ae5efea
--- /dev/null
+++ b/src/edu/nd/se2018/homework/hwk2/src/colombusGame/OceanMap.java
@@ -0,0 +1,5 @@
+package edu.nd.se2018.homework.hwk2.src.colombusGame;
+
+public class OceanMap {
+
+}
diff --git a/src/edu/nd/se2018/homework/hwk2/src/colombusGame/PirateShip.java b/src/edu/nd/se2018/homework/hwk2/src/colombusGame/PirateShip.java
new file mode 100644
index 00000000..50b622de
--- /dev/null
+++ b/src/edu/nd/se2018/homework/hwk2/src/colombusGame/PirateShip.java
@@ -0,0 +1,5 @@
+package edu.nd.se2018.homework.hwk2.src.colombusGame;
+
+public class PirateShip {
+
+}
diff --git a/src/edu/nd/se2018/homework/hwk2/src/colombusGame/Ship.java b/src/edu/nd/se2018/homework/hwk2/src/colombusGame/Ship.java
new file mode 100644
index 00000000..2a540b2b
--- /dev/null
+++ b/src/edu/nd/se2018/homework/hwk2/src/colombusGame/Ship.java
@@ -0,0 +1,5 @@
+package edu.nd.se2018.homework.hwk2.src.colombusGame;
+
+public class Ship {
+
+}
diff --git a/src/edu/nd/se2018/homework/hwk2/src/colombusGame/island.jpg b/src/edu/nd/se2018/homework/hwk2/src/colombusGame/island.jpg
new file mode 100644
index 00000000..8ae6d1a1
Binary files /dev/null and b/src/edu/nd/se2018/homework/hwk2/src/colombusGame/island.jpg differ
diff --git a/src/edu/nd/se2018/homework/hwk2/src/colombusGame/pirateship.gif b/src/edu/nd/se2018/homework/hwk2/src/colombusGame/pirateship.gif
new file mode 100644
index 00000000..c3bbfa28
Binary files /dev/null and b/src/edu/nd/se2018/homework/hwk2/src/colombusGame/pirateship.gif differ
diff --git a/src/edu/nd/se2018/homework/hwk2/src/homework2/EarlySprintStrategy.java b/src/edu/nd/se2018/homework/hwk2/src/homework2/EarlySprintStrategy.java
new file mode 100644
index 00000000..7d7593a4
--- /dev/null
+++ b/src/edu/nd/se2018/homework/hwk2/src/homework2/EarlySprintStrategy.java
@@ -0,0 +1,33 @@
+package edu.nd.se2018.homework.hwk2.src.homework2;
+
+public class EarlySprintStrategy extends Horse{
+
+ public double slowSpeed;
+ public double intspeed;
+
+ public EarlySprintStrategy(String n, double s) {
+ intspeed = s;
+ slowSpeed = s*.75;
+ }
+
+ @Override
+ public void run() {
+ if (position < 10) {
+ if (position >= 2) {
+ intspeed = slowSpeed;
+ }
+ position = position + intspeed*timeIncr;
+ }else {
+ finished = true;
+ }
+ }
+
+ public void display() {
+ if (!finished) {
+ System.out.println(name + " ran " + position + " miles.");
+ }else {
+ System.out.println(name + " finished.");
+ }
+
+ }
+}
diff --git a/src/edu/nd/se2018/homework/hwk2/src/homework2/Horse.java b/src/edu/nd/se2018/homework/hwk2/src/homework2/Horse.java
new file mode 100644
index 00000000..d634a8fb
--- /dev/null
+++ b/src/edu/nd/se2018/homework/hwk2/src/homework2/Horse.java
@@ -0,0 +1,20 @@
+package edu.nd.se2018.homework.hwk2.src.homework2;
+
+public class Horse {
+
+ public void display() {
+ }
+
+ public Horse(){
+ }
+
+ public void run(){
+ }
+
+ public String name;
+ public double timeIncr = .04;
+ public double position = 0;
+ public boolean finished = false;
+ public double intspeed;
+ public double slowSpeed = 0;
+}
diff --git a/src/edu/nd/se2018/homework/hwk2/src/homework2/SlowStartStrategy.java b/src/edu/nd/se2018/homework/hwk2/src/homework2/SlowStartStrategy.java
new file mode 100644
index 00000000..334e517a
--- /dev/null
+++ b/src/edu/nd/se2018/homework/hwk2/src/homework2/SlowStartStrategy.java
@@ -0,0 +1,42 @@
+package edu.nd.se2018.homework.hwk2.src.homework2;
+
+public class SlowStartStrategy extends Horse{
+ public double intspeed;
+ public double nonslowSpeed;
+ public double slowSpeed;
+ public double slowerSpeed;
+
+ public SlowStartStrategy(String n, double s) {
+ name = n;
+ nonslowSpeed = s;
+ slowerSpeed = s*.75;
+ slowSpeed = s*.90;
+ }
+
+ @Override
+ public void run() {
+ if (position < 10) {
+ if (position <= 6) {
+ intspeed = slowerSpeed;
+ }else if (position > 6 && position < 9) {
+ intspeed = slowSpeed;
+ }else {
+ intspeed = nonslowSpeed;
+ }
+
+ position = position + intspeed*timeIncr;
+ }else {
+ finished = true;
+ }
+ }
+
+ public void display() {
+ if (!finished) {
+ System.out.println(name + " ran " + position + " miles.");
+ }else {
+ System.out.println(name + " finished.");
+ }
+
+ }
+
+}
diff --git a/src/edu/nd/se2018/homework/hwk2/src/homework2/SteadyRunStrategy.java b/src/edu/nd/se2018/homework/hwk2/src/homework2/SteadyRunStrategy.java
new file mode 100644
index 00000000..12ac6224
--- /dev/null
+++ b/src/edu/nd/se2018/homework/hwk2/src/homework2/SteadyRunStrategy.java
@@ -0,0 +1,28 @@
+package edu.nd.se2018.homework.hwk2.src.homework2;
+
+public class SteadyRunStrategy extends Horse {
+ public double intspeed;
+
+ public SteadyRunStrategy(String n, double s) {
+ name = n;
+ intspeed = s*.8;
+ }
+
+
+ @Override
+ public void run() {
+ if (position < 10) {
+ position = position + intspeed*timeIncr;
+ }else {
+ finished = true;
+ }
+ }
+
+ public void display() {
+ if (!finished) {
+ System.out.println(name + " tran " + position + " miles.");
+ }else {
+ System.out.println(name + " finished.");
+ }
+ }
+}
diff --git a/src/edu/nd/se2018/homework/hwk2/src/racetest/Race.java b/src/edu/nd/se2018/homework/hwk2/src/racetest/Race.java
new file mode 100644
index 00000000..14223c3c
--- /dev/null
+++ b/src/edu/nd/se2018/homework/hwk2/src/racetest/Race.java
@@ -0,0 +1,50 @@
+package edu.nd.se2018.homework.hwk2.src.racetest;
+
+import edu.nd.se2018.homework.hwk2.src.homework2.EarlySprintStrategy;
+import edu.nd.se2018.homework.hwk2.src.homework2.Horse;
+import edu.nd.se2018.homework.hwk2.src.homework2.SlowStartStrategy;
+import edu.nd.se2018.homework.hwk2.src.homework2.SteadyRunStrategy;
+
+public class Race {
+ public Horse[] arr = new Horse[5];
+ public int horseNum = 0;
+
+ public void enrollHorse(String n, double s, String t) {
+ if(t == "steady") {
+ arr[horseNum] = new SteadyRunStrategy(n, s);
+ }else if (t == "slow") {
+ arr[horseNum] = new SlowStartStrategy(n, s);
+ }else {
+ arr[horseNum] = new EarlySprintStrategy(n, s);
+ }
+
+ horseNum++;
+ }
+
+ public Race(){
+ }
+
+ public void startRace() throws InterruptedException{
+ while (!arr[0].finished && !arr[1].finished && !arr[2].finished && !arr[3].finished && !arr[4].finished) {
+ for (int i = 0; i < 5; i++) {
+ arr[i].run();
+ }
+ for (int i = 0; i < 5; i++) {
+ arr[i].display();
+ }
+ if (arr[0].finished) {
+ System.out.println(arr[0].name + " HAS WON!");
+ }else if(arr[1].finished) {
+ System.out.println(arr[1].name + " HAS WON!");
+ }else if(arr[2].finished) {
+ System.out.println(arr[2].name + " HAS WON!");
+ }else if(arr[3].finished) {
+ System.out.println(arr[3].name + " HAS WON!");
+ }else if(arr[4].finished) {
+ System.out.println(arr[4].name + " HAS WON!");
+ }
+ Thread.sleep(500);
+ }
+ }
+
+}
diff --git a/src/edu/nd/se2018/homework/hwk2/src/racetest/RaceTest1.java b/src/edu/nd/se2018/homework/hwk2/src/racetest/RaceTest1.java
new file mode 100644
index 00000000..10f910a5
--- /dev/null
+++ b/src/edu/nd/se2018/homework/hwk2/src/racetest/RaceTest1.java
@@ -0,0 +1,19 @@
+package edu.nd.se2018.homework.hwk2.src.racetest;
+import org.junit.Test;
+
+import edu.nd.se2018.homework.hwk2.src.homework2.EarlySprintStrategy;
+import edu.nd.se2018.homework.hwk2.src.homework2.Horse;
+import edu.nd.se2018.homework.hwk2.src.homework2.SlowStartStrategy;
+import edu.nd.se2018.homework.hwk2.src.homework2.SteadyRunStrategy;
+
+public class RaceTest1 {
+ @Test
+ public void test() throws InterruptedException {
+ Horse test1 = new SteadyRunStrategy(null, 0);
+ test1.run();
+ Horse test2 = new SlowStartStrategy(null, 0);
+ test2.run();
+ Horse test3 = new EarlySprintStrategy(null, 0);
+ test3.run();
+ }
+}
diff --git a/src/edu/nd/se2018/homework/hwk2/src/racetest/RaceTest2.java b/src/edu/nd/se2018/homework/hwk2/src/racetest/RaceTest2.java
new file mode 100644
index 00000000..e6a5cd51
--- /dev/null
+++ b/src/edu/nd/se2018/homework/hwk2/src/racetest/RaceTest2.java
@@ -0,0 +1,20 @@
+package edu.nd.se2018.homework.hwk2.src.racetest;
+import org.junit.Test;
+
+import edu.nd.se2018.homework.hwk2.src.homework2.EarlySprintStrategy;
+import edu.nd.se2018.homework.hwk2.src.homework2.Horse;
+import edu.nd.se2018.homework.hwk2.src.homework2.SlowStartStrategy;
+import edu.nd.se2018.homework.hwk2.src.homework2.SteadyRunStrategy;
+
+
+public class RaceTest2 {
+ @Test
+ public void test() throws InterruptedException {
+ Horse test1 = new SteadyRunStrategy(null, 0);
+ test1.display();
+ Horse test2 = new SlowStartStrategy(null, 0);
+ test2.display();
+ Horse test3 = new EarlySprintStrategy(null, 0);
+ test3.display();
+ }
+}
\ No newline at end of file
diff --git a/src/edu/nd/se2018/homework/hwk2/src/racetest/RaceTest3.java b/src/edu/nd/se2018/homework/hwk2/src/racetest/RaceTest3.java
new file mode 100644
index 00000000..d60c29ce
--- /dev/null
+++ b/src/edu/nd/se2018/homework/hwk2/src/racetest/RaceTest3.java
@@ -0,0 +1,15 @@
+package edu.nd.se2018.homework.hwk2.src.racetest;
+import org.junit.Test;
+
+public class RaceTest3 {
+ @Test
+ public void test() throws InterruptedException {
+ Race race = new Race();
+ race.enrollHorse("Lily", 41, "steady");
+ race.enrollHorse("Argo", 42, "slow");
+ race.enrollHorse("Jackie", 45, "early");
+ race.enrollHorse("Stone", 46, "slow");
+ race.enrollHorse("Caleb", 41, "steady");
+ }
+}
+
diff --git a/src/edu/nd/se2018/pirateship.gif b/src/edu/nd/se2018/pirateship.gif
new file mode 100644
index 00000000..c3bbfa28
Binary files /dev/null and b/src/edu/nd/se2018/pirateship.gif differ
diff --git a/src/images/BlankTile.png b/src/images/BlankTile.png
new file mode 100644
index 00000000..c594f20d
Binary files /dev/null and b/src/images/BlankTile.png differ
diff --git a/src/images/Train2.PNG b/src/images/Train2.PNG
new file mode 100644
index 00000000..6bda3e18
Binary files /dev/null and b/src/images/Train2.PNG differ
diff --git a/src/images/blueKey.png b/src/images/blueKey.png
new file mode 100644
index 00000000..2c6b249b
Binary files /dev/null and b/src/images/blueKey.png differ
diff --git a/src/images/blueKeyWall.png b/src/images/blueKeyWall.png
new file mode 100644
index 00000000..70480b9c
Binary files /dev/null and b/src/images/blueKeyWall.png differ
diff --git a/src/images/bugDown.PNG b/src/images/bugDown.PNG
new file mode 100644
index 00000000..a9ddcfd3
Binary files /dev/null and b/src/images/bugDown.PNG differ
diff --git a/src/images/chipCrispy.PNG b/src/images/chipCrispy.PNG
new file mode 100644
index 00000000..8f31b174
Binary files /dev/null and b/src/images/chipCrispy.PNG differ
diff --git a/src/images/chipDown.png b/src/images/chipDown.png
new file mode 100644
index 00000000..1d06deb1
Binary files /dev/null and b/src/images/chipDown.png differ
diff --git a/src/images/chipLeft.png b/src/images/chipLeft.png
new file mode 100644
index 00000000..243a4400
Binary files /dev/null and b/src/images/chipLeft.png differ
diff --git a/src/images/chipRight.png b/src/images/chipRight.png
new file mode 100644
index 00000000..ec669d27
Binary files /dev/null and b/src/images/chipRight.png differ
diff --git a/src/images/chipUp.png b/src/images/chipUp.png
new file mode 100644
index 00000000..fdfb383c
Binary files /dev/null and b/src/images/chipUp.png differ
diff --git a/src/images/fire.PNG b/src/images/fire.PNG
new file mode 100644
index 00000000..650b0f29
Binary files /dev/null and b/src/images/fire.PNG differ
diff --git a/src/images/fireShoe.PNG b/src/images/fireShoe.PNG
new file mode 100644
index 00000000..0a140b88
Binary files /dev/null and b/src/images/fireShoe.PNG differ
diff --git a/src/images/greenKey.png b/src/images/greenKey.png
new file mode 100644
index 00000000..c6b4dfe4
Binary files /dev/null and b/src/images/greenKey.png differ
diff --git a/src/images/greenKeyWall.png b/src/images/greenKeyWall.png
new file mode 100644
index 00000000..6c9660b8
Binary files /dev/null and b/src/images/greenKeyWall.png differ
diff --git a/src/images/portal.png b/src/images/portal.png
new file mode 100644
index 00000000..600ff4c6
Binary files /dev/null and b/src/images/portal.png differ
diff --git a/src/images/redKey.png b/src/images/redKey.png
new file mode 100644
index 00000000..3bb88b4b
Binary files /dev/null and b/src/images/redKey.png differ
diff --git a/src/images/redKeyWall.png b/src/images/redKeyWall.png
new file mode 100644
index 00000000..8ac73e32
Binary files /dev/null and b/src/images/redKeyWall.png differ
diff --git a/src/images/wall.PNG b/src/images/wall.PNG
new file mode 100644
index 00000000..fe336378
Binary files /dev/null and b/src/images/wall.PNG differ
diff --git a/src/images/water.PNG b/src/images/water.PNG
new file mode 100644
index 00000000..095c7261
Binary files /dev/null and b/src/images/water.PNG differ
diff --git a/src/images/yellowKey.png b/src/images/yellowKey.png
new file mode 100644
index 00000000..b537de26
Binary files /dev/null and b/src/images/yellowKey.png differ
diff --git a/src/images/yellowKeyWall.png b/src/images/yellowKeyWall.png
new file mode 100644
index 00000000..d6a5ea1a
Binary files /dev/null and b/src/images/yellowKeyWall.png differ