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;
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.PongObject;
......@@ -12,12 +17,12 @@ import java.util.Random;
public class Kernel {
ArrayList<Engine> engines = new ArrayList<Engine>();
engine.Grid grid;
GraphicEngine graphicEngine;
//public HashMap<PongObject, ImageComponent> pongObjectImageComponentHashMap = new HashMap<>();
protected static ArrayList<PongObject> gameObjects;
protected HashMap<PongObject, Entity> pongObjectEntityHashMap = new HashMap<>();
public static ArrayList<PongObject> gameObjects;
public HashMap<PongObject, Entity> pongObjectEntityHashMap = new HashMap<>();
Movable movable;
public Kernel(String gameName, int width, int height, ArrayList<PongObject> gameObjects) throws IOException {
......@@ -25,13 +30,15 @@ public class Kernel {
this.setGameObject(gameObjects);
System.out.println("Model created");
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
this.graphicEngine = new GraphicEngine(); // Will create a new grid and a new kernel
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.setKeysListeners((JPanel) this.grid.getContentPane());
this.setKeysListeners((JPanel) this.graphicEngine.getContentPane());
}
/**
......@@ -42,18 +49,10 @@ public class Kernel {
public void start() throws IOException {
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 {
public void update() {
System.out.println("One step");
// 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
grid.repaint();
grid.revalidate();
graphicEngine.repaint();
graphicEngine.revalidate();
}
/**
......@@ -100,6 +98,6 @@ public class Kernel {
}
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 javax.swing.*;
import java.awt.*;
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 {
......
package engine;
package engine.graphic;
import engine.physic.Coordinates2D;
import javax.swing.*;
import java.awt.*;
......
package engine;
package engine.physic;
public class Coordinates2D {
private int x;
......
package engine;
package engine.physic;
import engine.physic.Coordinates2D;
/**
* Interface for all entities in the game
......
package engine;
package engine.physic;
import pong.PongApp;
......@@ -13,7 +13,7 @@ public class Movable implements Entity {
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.speed = speed;
this.position = position;
......
package engine;
package engine.physic;
import engine.physic.Coordinates2D;
import engine.physic.Entity;
/**
* 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;
import engine.Coordinates2D;
import engine.Grid;
import engine.ImageComponent;
import engine.physic.Coordinates2D;
import engine.Kernel;
import sprint2_demo.Hero;
import javax.swing.*;
import java.io.IOException;
import java.util.ArrayList;
......
package pong;
import engine.Coordinates2D;
import engine.physic.Coordinates2D;
import java.awt.*;
......
package pong;
import engine.Coordinates2D;
import engine.physic.Coordinates2D;
import java.awt.*;
......
package pong;
import engine.Coordinates2D;
import engine.physic.Coordinates2D;
import java.awt.*;
......
package sprint2_demo;
import engine.*;
import engine.physic.Coordinates2D;
import javax.swing.*;
import java.awt.*;
......
package sprint2_demo;
import engine.Coordinates2D;
import engine.physic.Coordinates2D;
import javax.imageio.ImageIO;
import java.awt.*;
......
package engine;
import engine.physic.Coordinates2D;
import engine.physic.Movable;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment