Skip to content
Snippets Groups Projects
Commit ee6f9170 authored by bosskkev's avatar bosskkev
Browse files

Rajout interface Engine et son implémentation dans les différents moteurs

parent 5b7dc4ae
No related branches found
No related tags found
No related merge requests found
Pipeline #22969 failed
Showing
with 78 additions and 41 deletions
package engine; package engine;
import engine.graphic.GraphicEngine;
import engine.physic.Coordinates2D;
import engine.physic.Entity;
import engine.physic.Movable;
import engine.physic.PhysicEngine;
import pong.PongApp; import pong.PongApp;
import pong.PongObject; import pong.PongObject;
...@@ -12,12 +17,12 @@ import java.util.Random; ...@@ -12,12 +17,12 @@ import java.util.Random;
public class Kernel { public class Kernel {
ArrayList<Engine> engines = new ArrayList<Engine>(); ArrayList<Engine> engines = new ArrayList<Engine>();
engine.Grid grid; GraphicEngine graphicEngine;
//public HashMap<PongObject, ImageComponent> pongObjectImageComponentHashMap = new HashMap<>(); //public HashMap<PongObject, ImageComponent> pongObjectImageComponentHashMap = new HashMap<>();
protected static ArrayList<PongObject> gameObjects; public static ArrayList<PongObject> gameObjects;
protected HashMap<PongObject, Entity> pongObjectEntityHashMap = new HashMap<>(); public HashMap<PongObject, Entity> pongObjectEntityHashMap = new HashMap<>();
Movable movable; Movable movable;
public Kernel(String gameName, int width, int height, ArrayList<PongObject> gameObjects) throws IOException { public Kernel(String gameName, int width, int height, ArrayList<PongObject> gameObjects) throws IOException {
...@@ -25,13 +30,15 @@ public class Kernel { ...@@ -25,13 +30,15 @@ public class Kernel {
this.setGameObject(gameObjects); this.setGameObject(gameObjects);
System.out.println("Model created"); System.out.println("Model created");
this.grid = new Grid(); // Will create a new grid and a new kernel this.graphicEngine = new GraphicEngine(); // Will create a new grid and a new kernel
grid.init(gameName, width, height); // Will start the kernel and set the keys listeners graphicEngine.init(gameName, width, height); // Will start the kernel and set the keys listeners
engines.add(this.grid);// engines.add(this.graphicEngine);//
engines.add(new PhysicEngine());
this.start(); this.start();
this.setKeysListeners((JPanel) this.grid.getContentPane()); this.setKeysListeners((JPanel) this.graphicEngine.getContentPane());
} }
/** /**
...@@ -42,18 +49,10 @@ public class Kernel { ...@@ -42,18 +49,10 @@ public class Kernel {
public void start() throws IOException { public void start() throws IOException {
Random random = new Random(); // For random speed 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);
pongObjectEntityHashMap.put(pongObject, new Movable(1, pongObject.getPosition(), speed, new Coordinates2D(0, 0), pongObject.getWidth(), pongObject.getHeight()));
graphicEngine.update();
} }
grid.update();
}
/** /**
...@@ -62,15 +61,14 @@ public class Kernel { ...@@ -62,15 +61,14 @@ public class Kernel {
public void update() { public void update() {
System.out.println("One step"); System.out.println("One step");
// Updating all objects positions // Updating all objects positions
for (PongObject pongObject: PongApp.components) {
pongObjectEntityHashMap.get(pongObject).updatePosition(); // Updating of the associated movable position
pongObject.setPosition(pongObjectEntityHashMap.get(pongObject).getPosition()); // Updating of the pong object position for (Engine engine: engines
) {
engine.update();
} }
grid.update();
// Repainting the grid // Repainting the grid
grid.repaint(); graphicEngine.repaint();
grid.revalidate(); graphicEngine.revalidate();
} }
/** /**
...@@ -100,6 +98,6 @@ public class Kernel { ...@@ -100,6 +98,6 @@ public class Kernel {
} }
public void setGameObject(ArrayList<PongObject> gameObject) { public void setGameObject(ArrayList<PongObject> gameObject) {
this.gameObjects = gameObject; gameObjects = gameObject;
} }
} }
package engine; package engine.graphic;
import engine.Engine;
import engine.Kernel;
import pong.PongObject; import pong.PongObject;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.io.IOException; import java.io.IOException;
public class Grid extends JFrame implements Engine { public class GraphicEngine extends JFrame implements Engine {
public Grid() throws IOException { public GraphicEngine() throws IOException {
} }
public void init(String windowTitle, int width, int height) throws IOException { public void init(String windowTitle, int width, int height) throws IOException {
......
package engine; package engine.graphic;
import engine.physic.Coordinates2D;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
......
package engine; package engine.physic;
public class Coordinates2D { public class Coordinates2D {
private int x; private int x;
......
package engine; package engine.physic;
import engine.physic.Coordinates2D;
/** /**
* Interface for all entities in the game * Interface for all entities in the game
......
package engine; package engine.physic;
import pong.PongApp; import pong.PongApp;
...@@ -13,7 +13,7 @@ public class Movable implements Entity { ...@@ -13,7 +13,7 @@ public class Movable implements Entity {
private Coordinates2D acceleration; private Coordinates2D acceleration;
Movable(int weight, Coordinates2D position, Coordinates2D speed, Coordinates2D acceleration, int width, int height) { public Movable(int weight, Coordinates2D position, Coordinates2D speed, Coordinates2D acceleration, int width, int height) {
this.weight = weight; this.weight = weight;
this.speed = speed; this.speed = speed;
this.position = position; this.position = position;
......
package engine; package engine.physic;
import engine.physic.Coordinates2D;
import engine.physic.Entity;
/** /**
* Class for all obstacles in the game. * Class for all obstacles in the game.
......
package engine.physic;
import engine.Engine;
import engine.Kernel;
import pong.PongApp;
import pong.PongObject;
import java.util.HashMap;
public class PhysicEngine implements Engine {
public HashMap<PongObject, Entity> pongObjectEntityHashMap = new HashMap<>();
public PhysicEngine(){
for (PongObject pongObject: Kernel.gameObjects) {
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);
pongObjectEntityHashMap.put(pongObject, new Movable(1, pongObject.getPosition(), speed, new Coordinates2D(0, 0), pongObject.getWidth(), pongObject.getHeight()));
}
}
@Override
public void update(){
for (PongObject pongObject: Kernel.gameObjects) {
pongObjectEntityHashMap.get(pongObject).updatePosition(); // Updating of the associated movable position
pongObject.setPosition(pongObjectEntityHashMap.get(pongObject).getPosition()); // Updating of the pong object position
}
}
}
package pong; package pong;
import engine.Coordinates2D; import engine.physic.Coordinates2D;
import engine.Grid;
import engine.ImageComponent;
import engine.Kernel; import engine.Kernel;
import sprint2_demo.Hero;
import javax.swing.*;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
......
package pong; package pong;
import engine.Coordinates2D; import engine.physic.Coordinates2D;
import java.awt.*; import java.awt.*;
......
package pong; package pong;
import engine.Coordinates2D; import engine.physic.Coordinates2D;
import java.awt.*; import java.awt.*;
......
package pong; package pong;
import engine.Coordinates2D; import engine.physic.Coordinates2D;
import java.awt.*; import java.awt.*;
......
package sprint2_demo; package sprint2_demo;
import engine.*; import engine.*;
import engine.physic.Coordinates2D;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
......
package sprint2_demo; package sprint2_demo;
import engine.Coordinates2D; import engine.physic.Coordinates2D;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import java.awt.*; import java.awt.*;
......
package engine; package engine;
import engine.physic.Coordinates2D;
import engine.physic.Movable;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment