diff --git a/src/main/java/app/controller/AgentImp.java b/src/main/java/app/controller/AgentImp.java index d4d8ae3d..c85a597c 100644 --- a/src/main/java/app/controller/AgentImp.java +++ b/src/main/java/app/controller/AgentImp.java @@ -5,6 +5,8 @@ import javafx.scene.paint.Color; import java.util.ArrayList; +import java.util.Random; +import java.util.random.RandomGenerator; public class AgentImp implements Agent { @@ -27,7 +29,14 @@ public AgentImp(Vector position, Vector direction, double radius) @Override public void move() { - // Null + double x = Math.random() * MAX_WALK; + if(Math.random() > 0.5) + x = x * -1; + double y = Math.random() * MAX_WALK; + if(Math.random() > 0.5) + y = y * -1; + + position = position.add(new Vector(x, y)); } @Override diff --git a/src/main/java/app/controller/Clock.java b/src/main/java/app/controller/Clock.java new file mode 100644 index 00000000..baa2591d --- /dev/null +++ b/src/main/java/app/controller/Clock.java @@ -0,0 +1,20 @@ +package app.controller; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class Clock implements ActionListener +{ + private GameEngine ge; + + public Clock(GameEngine ge) + { + this.ge = ge; + } + + @Override + public void actionPerformed(ActionEvent e) + { + ge.tick(); + } +} diff --git a/src/main/java/app/controller/GameEngine.java b/src/main/java/app/controller/GameEngine.java index 52e65c62..2cb3212b 100644 --- a/src/main/java/app/controller/GameEngine.java +++ b/src/main/java/app/controller/GameEngine.java @@ -4,24 +4,37 @@ import app.model.MapTemp; import app.view.Renderer; +import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + public class GameEngine { private MapTemp map; private Renderer renderer; private GraphicsEngine graphicsEngine; + private Timer clock; + private int delay = 100; public GameEngine(MapTemp map, Renderer renderer) { this.map = map; this.renderer = renderer; this.graphicsEngine = new RayTracing(); - tick(); + clock = new Timer(delay, new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + tick(); + } + }); + clock.start(); } public void tick() { for(Agent a: map.getAgents()) { + a.move(); a.updateView(graphicsEngine.compute(map, a)); } renderer.render(); diff --git a/src/main/java/app/controller/ManualAgent.java b/src/main/java/app/controller/ManualAgent.java new file mode 100644 index 00000000..944ecdad --- /dev/null +++ b/src/main/java/app/controller/ManualAgent.java @@ -0,0 +1,15 @@ +package app.controller; + +public class ManualAgent extends AgentImp +{ + public ManualAgent(Vector position, Vector direction, double radius) + { + super(position, direction, radius); + } + + @Override + public void move() + { + + } +} diff --git a/src/main/java/app/controller/RayTracing.java b/src/main/java/app/controller/RayTracing.java index 9c317484..64c5594d 100644 --- a/src/main/java/app/controller/RayTracing.java +++ b/src/main/java/app/controller/RayTracing.java @@ -8,8 +8,8 @@ public class RayTracing implements GraphicsEngine { - private int noOfRays = 3600; - private double angle = 0.1; + private int noOfRays = 360; + private double angle = 1; public ArrayList compute(MapTemp map, Agent agent) { diff --git a/src/main/java/app/view/Renderer.java b/src/main/java/app/view/Renderer.java index 33a4b52c..f86e0b69 100644 --- a/src/main/java/app/view/Renderer.java +++ b/src/main/java/app/view/Renderer.java @@ -6,6 +6,7 @@ import app.model.Placeable; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; +import javafx.scene.paint.Color; public class Renderer extends Canvas { @@ -21,6 +22,9 @@ public void render() { GraphicsContext gc = this.getGraphicsContext2D(); + gc.setFill(Color.WHITE); + gc.fillRect(0,0,getWidth(), getHeight()); + for(Placeable p: map.getObjects()) { p.draw(gc);