From 0b279ab19bb04d22fabda614ef57b22f606cc6c2 Mon Sep 17 00:00:00 2001 From: bosskkev <kossivikevin29@gmail.com> Date: Mon, 6 Nov 2023 15:41:40 +0100 Subject: [PATCH] Rajout de l'interface Engine.java --- src/main/java/engine/Engine.java | 5 ++++ src/main/java/engine/Grid.java | 24 +++++++++-------- src/main/java/engine/Kernel.java | 41 ++++++++++++++++++++---------- src/main/java/pong/PongApp.java | 8 +++--- src/main/java/pong/PongBall.java | 5 ++++ src/main/java/pong/PongObject.java | 2 ++ src/main/java/pong/PongRacket.java | 5 ++++ 7 files changed, 64 insertions(+), 26 deletions(-) create mode 100644 src/main/java/engine/Engine.java diff --git a/src/main/java/engine/Engine.java b/src/main/java/engine/Engine.java new file mode 100644 index 0000000..049c922 --- /dev/null +++ b/src/main/java/engine/Engine.java @@ -0,0 +1,5 @@ +package engine; + +public interface Engine { + void update(); +} diff --git a/src/main/java/engine/Grid.java b/src/main/java/engine/Grid.java index 2f2b510..3569a1c 100644 --- a/src/main/java/engine/Grid.java +++ b/src/main/java/engine/Grid.java @@ -1,21 +1,15 @@ package engine; import pong.PongObject; -import sprint2_demo.Hero; import javax.swing.*; import java.awt.*; import java.io.IOException; -import java.util.ArrayList; -public class Grid extends JFrame { +public class Grid extends JFrame implements Engine { - public Kernel kernel; - public Grid() throws IOException { - this.kernel = new Kernel(this); - //components.add() } public void init(String title, int width, int height) throws IOException { @@ -30,14 +24,24 @@ public class Grid extends JFrame { this.setResizable(false); this.setVisible(true); this.setLayout(this.getLayout()); - kernel.start(); - kernel.setKeysListeners((JPanel) getContentPane()); - this.revalidate(); } public void draw(ImageComponent ic) throws IOException { getContentPane().add(ic); } + @Override + public void update(){ + for (PongObject po : Kernel.gameObjects + ) { + try { + this.draw(new ImageComponent(po.getImage(), po.getPosition(), po.getWidth(), po.getHeight())); + } catch (IOException e) { + throw new RuntimeException(e); + } + + } + } + } diff --git a/src/main/java/engine/Kernel.java b/src/main/java/engine/Kernel.java index daed469..e8754fe 100644 --- a/src/main/java/engine/Kernel.java +++ b/src/main/java/engine/Kernel.java @@ -5,20 +5,33 @@ import pong.PongObject; import javax.swing.*; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; import java.util.Random; public class Kernel { + ArrayList<Engine> engines = new ArrayList<Engine>(); engine.Grid grid; //public HashMap<PongObject, ImageComponent> pongObjectImageComponentHashMap = new HashMap<>(); - public HashMap<PongObject, Movable> pongObjectEntityHashMap = new HashMap<>(); + + protected static ArrayList<PongObject> gameObjects; + protected HashMap<PongObject, Entity> pongObjectEntityHashMap = new HashMap<>(); Movable movable; - public Kernel(Grid grid) { + public Kernel(String gameName, int width, int height, ArrayList<PongObject> gameObjects) throws IOException { + + this.setGameObject(gameObjects); System.out.println("Model created"); - this.grid = grid; + + this.grid = new Grid(); // Will create a new grid and a new kernel + grid.init(gameName, width, height); // Will start the kernel and set the keys listeners + + engines.add(this.grid); + + this.start(); + this.setKeysListeners((JPanel) this.grid.getContentPane()); } /** @@ -30,11 +43,16 @@ public class Kernel { Random random = new Random(); // For random speed for (PongObject pongObject: PongApp.components) { + Coordinates2D speed = new Coordinates2D(0, 0); + if(pongObject.getName().equals("Ball")){ + speed = new Coordinates2D(1, 1); + } //Coordinates2D speed = new Coordinates2D(random.nextInt(2) - 1, random.nextInt(2) - 1); - Coordinates2D speed = new Coordinates2D(0, 1); pongObjectEntityHashMap.put(pongObject, new Movable(1, pongObject.getPosition(), speed, new Coordinates2D(0, 0), pongObject.getWidth(), pongObject.getHeight())); - grid.draw(new ImageComponent(pongObject.getImage(), pongObject.getPosition(), pongObject.getWidth(), pongObject.getHeight())); - } + + + } + grid.update(); } @@ -48,13 +66,8 @@ public class Kernel { pongObjectEntityHashMap.get(pongObject).updatePosition(); // Updating of the associated movable position pongObject.setPosition(pongObjectEntityHashMap.get(pongObject).getPosition()); // Updating of the pong object position - - try { - grid.draw(new ImageComponent(pongObject.getImage(), pongObject.getPosition(), pongObject.getWidth(), pongObject.getHeight())); - } catch (IOException e) { - throw new RuntimeException(e); - } } + grid.update(); // Repainting the grid grid.repaint(); grid.revalidate(); @@ -86,5 +99,7 @@ public class Kernel { mainPanel.setFocusable(true); } - + public void setGameObject(ArrayList<PongObject> gameObject) { + this.gameObjects = gameObject; + } } diff --git a/src/main/java/pong/PongApp.java b/src/main/java/pong/PongApp.java index b1a9e40..8d06861 100644 --- a/src/main/java/pong/PongApp.java +++ b/src/main/java/pong/PongApp.java @@ -6,6 +6,7 @@ import engine.ImageComponent; import engine.Kernel; import sprint2_demo.Hero; +import javax.swing.*; import java.io.IOException; import java.util.ArrayList; @@ -30,11 +31,12 @@ public class PongApp { PongBall pongBall = new PongBall("Ball", "src/main/resources/sprint2_demo/asteroid.png", new Coordinates2D(100, 10), 64, 64); components.add(pongBall); - Grid grid = new Grid(); // Will create a new grid and a new kernel - grid.init("Pong", width, height); // Will start the kernel and set the keys listeners + Kernel kernel = new Kernel("Pong", width, height, components); + //kernel.setGameObject(components); + while(true){ try { - grid.kernel.update(); + kernel.update(); Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); diff --git a/src/main/java/pong/PongBall.java b/src/main/java/pong/PongBall.java index c155c61..0bd4008 100644 --- a/src/main/java/pong/PongBall.java +++ b/src/main/java/pong/PongBall.java @@ -49,4 +49,9 @@ public class PongBall implements PongObject { public void setPosition(Coordinates2D position) { this.position = position; } + + @Override + public String getName() { + return name; + } } diff --git a/src/main/java/pong/PongObject.java b/src/main/java/pong/PongObject.java index 98853c5..67be737 100644 --- a/src/main/java/pong/PongObject.java +++ b/src/main/java/pong/PongObject.java @@ -11,4 +11,6 @@ public interface PongObject { public int getHeight(); public int getResistance(); public void setPosition(Coordinates2D position); + + public String getName(); } diff --git a/src/main/java/pong/PongRacket.java b/src/main/java/pong/PongRacket.java index af33d90..9198ef5 100644 --- a/src/main/java/pong/PongRacket.java +++ b/src/main/java/pong/PongRacket.java @@ -48,4 +48,9 @@ public class PongRacket implements PongObject { public void setPosition(Coordinates2D position) { this.position = position; } + + @Override + public String getName() { + return name; + } } -- GitLab