From 69c192ccf41163c55b73ea52ccaa50b3b43b3458 Mon Sep 17 00:00:00 2001 From: koz01 <koz01@PCFEIB207-060.msad.vsb.cz> Date: Wed, 2 Nov 2022 08:37:29 +0100 Subject: [PATCH] solution --- src/main/java/lab/GameController.java | 23 +++++++++++++++++++++++ src/main/java/lab/HitListener.java | 1 + src/main/java/lab/World.java | 20 ++++++++++++++++++-- 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/main/java/lab/GameController.java b/src/main/java/lab/GameController.java index a13d519..8931134 100644 --- a/src/main/java/lab/GameController.java +++ b/src/main/java/lab/GameController.java @@ -32,6 +32,7 @@ public class GameController { } public void startGame() { + this.world = new World(canvas.getWidth(), canvas.getHeight()); //Draw scene on a separate thread to avoid blocking UI. animationTimer = new DrawingThread(canvas, world); @@ -40,6 +41,14 @@ public class GameController { strengthSlider.valueProperty().addListener(this::strenghtChanged); world.setCannonStrength(strengthSlider.getValue()); + world.setGameListener(new EmptyGameListener() { + @Override + public void stateChanged(int shoots, int hits) { + GameController.this.setShoots(shoots); + GameController.this.setHits(hits); + + } + }); animationTimer.start(); } @@ -63,4 +72,18 @@ public class GameController { , Number oldValue, Number newValue) { world.setCannonStrength(newValue.doubleValue()); } + + + + + + private void setHits(int hits) { + this.hits.setText(""+hits); + } + + private void setShoots(int shoots) { + this.shoots.setText(""+shoots); + } + + } diff --git a/src/main/java/lab/HitListener.java b/src/main/java/lab/HitListener.java index 51cc8dd..d1b4b89 100644 --- a/src/main/java/lab/HitListener.java +++ b/src/main/java/lab/HitListener.java @@ -1,5 +1,6 @@ package lab; +@FunctionalInterface public interface HitListener { void hit(); } diff --git a/src/main/java/lab/World.java b/src/main/java/lab/World.java index 817ed95..d357add 100644 --- a/src/main/java/lab/World.java +++ b/src/main/java/lab/World.java @@ -21,13 +21,24 @@ public class World { private DrawableSimulable []entities; public World(double width, double height) { - super(); + this.width = width; this.height = height; Cannon cannon = new Cannon(this, new Point2D(50, 50), new Point2D(100, 20)); + BulletAnimated bullet; entities = new DrawableSimulable[2 + NUMBER_OF_DRAGONS]; entities[0] = cannon; - entities[1] = new BulletAnimated(this, cannon, new Point2D(30, 60), new Point2D(0, 0), 40); + entities[1] = bullet = new BulletAnimated(this, cannon, new Point2D(30, 60), new Point2D(0, 0), 40); + bullet.setHitListener(this::hits); + + /*new HitListener() { + @Override + public void hit() { + hits++; + gameListener.stateChanged(shoots, hits); + } + + });*/ Random rnd = new Random(); for (int i = 2; i < entities.length; i++) { @@ -39,6 +50,11 @@ public class World { } } + private void hits() { + hits++; + gameListener.stateChanged(shoots, hits); + } + public Point2D getCanvasPoint(Point2D worldPoint) { return new Point2D(worldPoint.getX(), height - worldPoint.getY()); } -- GitLab