From 33f4823d81eb7dc61ab9cb10f3f5d9544e11b4df Mon Sep 17 00:00:00 2001 From: bosskkev <kossivikevin29@gmail.com> Date: Sun, 26 Nov 2023 18:29:42 +0100 Subject: [PATCH] Rajout des tests des CartesianVector et des Movable. --- src/main/java/engine/Kernel.java | 19 +++--- .../java/engine/graphic/GraphicEngine.java | 9 +-- .../java/engine/graphic/ImageComponent.java | 10 +-- .../java/engine/graphic/ScoreComponent.java | 8 +-- ...oordinates2D.java => CartesianVector.java} | 21 ++++--- src/main/java/engine/physic/Entity.java | 14 ++--- src/main/java/engine/physic/Movable.java | 28 ++++----- src/main/java/engine/physic/NotMovable.java | 19 +++--- src/main/java/engine/physic/PhysicEngine.java | 11 ++-- src/main/java/pong/PongApp.java | 12 ++-- src/main/java/pong/PongBall.java | 24 +++---- src/main/java/pong/PongObject.java | 14 ++--- src/main/java/pong/PongRacket.java | 24 +++---- src/main/java/sprint2_demo/Grid.java | 8 +-- src/main/java/sprint2_demo/Hero.java | 18 +++--- .../engine/physic/CartesianVectorTest.java | 49 +++++++++++++++ src/test/java/engine/physic/MovableTest.java | 63 +++++++++++++++++++ src/test/java/pong/PongBallTest.java | 18 ------ 18 files changed, 226 insertions(+), 143 deletions(-) rename src/main/java/engine/physic/{Coordinates2D.java => CartesianVector.java} (50%) create mode 100644 src/test/java/engine/physic/CartesianVectorTest.java create mode 100644 src/test/java/engine/physic/MovableTest.java delete mode 100644 src/test/java/pong/PongBallTest.java diff --git a/src/main/java/engine/Kernel.java b/src/main/java/engine/Kernel.java index ac5221d..c50f348 100644 --- a/src/main/java/engine/Kernel.java +++ b/src/main/java/engine/Kernel.java @@ -1,14 +1,13 @@ package engine; import engine.graphic.GraphicEngine; -import engine.physic.Coordinates2D; +import engine.physic.CartesianVector; import engine.physic.Entity; import engine.sound.SoundEngine; import engine.physic.PhysicEngine; import pong.PongObject; import javax.swing.*; -import java.awt.*; import java.awt.event.ActionEvent; import java.io.IOException; import java.util.ArrayList; @@ -103,28 +102,28 @@ public class Kernel { Action upAction = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { - physicEngine.pongObjectEntityHashMap.get(gameObjects.get(1)).setSpeed(new Coordinates2D(0, -3)); + physicEngine.pongObjectEntityHashMap.get(gameObjects.get(1)).setSpeed(new CartesianVector(0, -3)); } }; Action downAction = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { - physicEngine.pongObjectEntityHashMap.get(gameObjects.get(1)).setSpeed(new Coordinates2D(0, 3)); + physicEngine.pongObjectEntityHashMap.get(gameObjects.get(1)).setSpeed(new CartesianVector(0, 3)); } }; Action zAction = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { - physicEngine.pongObjectEntityHashMap.get(gameObjects.get(0)).setSpeed(new Coordinates2D(0, -3)); + physicEngine.pongObjectEntityHashMap.get(gameObjects.get(0)).setSpeed(new CartesianVector(0, -3)); } }; Action sAction = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { - physicEngine.pongObjectEntityHashMap.get(gameObjects.get(0)).setSpeed(new Coordinates2D(0, 3)); + physicEngine.pongObjectEntityHashMap.get(gameObjects.get(0)).setSpeed(new CartesianVector(0, 3)); } }; @@ -144,28 +143,28 @@ public class Kernel { Action upReleaseAction = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { - physicEngine.pongObjectEntityHashMap.get(gameObjects.get(1)).setSpeed(new Coordinates2D(0, 0)); + physicEngine.pongObjectEntityHashMap.get(gameObjects.get(1)).setSpeed(new CartesianVector(0, 0)); } }; Action downReleaseAction = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { - physicEngine.pongObjectEntityHashMap.get(gameObjects.get(1)).setSpeed(new Coordinates2D(0, 0)); + physicEngine.pongObjectEntityHashMap.get(gameObjects.get(1)).setSpeed(new CartesianVector(0, 0)); } }; Action zReleaseAction = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { - physicEngine.pongObjectEntityHashMap.get(gameObjects.get(0)).setSpeed(new Coordinates2D(0, 0)); + physicEngine.pongObjectEntityHashMap.get(gameObjects.get(0)).setSpeed(new CartesianVector(0, 0)); } }; Action sReleaseAction = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { - physicEngine.pongObjectEntityHashMap.get(gameObjects.get(0)).setSpeed(new Coordinates2D(0, 0)); + physicEngine.pongObjectEntityHashMap.get(gameObjects.get(0)).setSpeed(new CartesianVector(0, 0)); } }; diff --git a/src/main/java/engine/graphic/GraphicEngine.java b/src/main/java/engine/graphic/GraphicEngine.java index 3e88eb6..9dda229 100644 --- a/src/main/java/engine/graphic/GraphicEngine.java +++ b/src/main/java/engine/graphic/GraphicEngine.java @@ -2,15 +2,12 @@ package engine.graphic; import engine.Engine; import engine.Kernel; -import engine.physic.Coordinates2D; -import engine.sound.SoundEngine; +import engine.physic.CartesianVector; import pong.PongApp; import pong.PongObject; import javax.swing.*; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.io.IOException; public class GraphicEngine extends JFrame implements Engine { @@ -64,7 +61,7 @@ public class GraphicEngine extends JFrame implements Engine { } } drawRect(); - this.getContentPane().add(new ScoreComponent(new Coordinates2D(100, 100), new Coordinates2D(670, 100), PongApp.score1, PongApp.score2)); + this.getContentPane().add(new ScoreComponent(new CartesianVector(100, 100), new CartesianVector(670, 100), PongApp.score1, PongApp.score2)); repaint(); revalidate(); @@ -95,7 +92,7 @@ public class GraphicEngine extends JFrame implements Engine { } public void drawScore(int score1, int score2){ - this.getContentPane().add(new ScoreComponent(new Coordinates2D(100, 100), new Coordinates2D(500, 100), score1, score2)); + this.getContentPane().add(new ScoreComponent(new CartesianVector(100, 100), new CartesianVector(500, 100), score1, score2)); } public void addButton(JButton button){ diff --git a/src/main/java/engine/graphic/ImageComponent.java b/src/main/java/engine/graphic/ImageComponent.java index 3efac2a..310360f 100644 --- a/src/main/java/engine/graphic/ImageComponent.java +++ b/src/main/java/engine/graphic/ImageComponent.java @@ -1,6 +1,6 @@ package engine.graphic; -import engine.physic.Coordinates2D; +import engine.physic.CartesianVector; import pong.PongApp; import javax.swing.*; @@ -8,12 +8,12 @@ import java.awt.*; public class ImageComponent extends JComponent { private Image image; - private Coordinates2D position; + private CartesianVector position; private int width; private int height; - public ImageComponent(Image image, Coordinates2D position, int width, int height) { + public ImageComponent(Image image, CartesianVector position, int width, int height) { this.width = width; this.height = height; this.image = image; @@ -29,11 +29,11 @@ public class ImageComponent extends JComponent { return image; } - public Coordinates2D getPosition() { + public CartesianVector getPosition() { return position; } - public void setPosition(Coordinates2D position) { + public void setPosition(CartesianVector position) { this.position = position; } diff --git a/src/main/java/engine/graphic/ScoreComponent.java b/src/main/java/engine/graphic/ScoreComponent.java index bbde00a..e1640f2 100644 --- a/src/main/java/engine/graphic/ScoreComponent.java +++ b/src/main/java/engine/graphic/ScoreComponent.java @@ -1,6 +1,6 @@ package engine.graphic; -import engine.physic.Coordinates2D; +import engine.physic.CartesianVector; import pong.PongApp; import javax.swing.*; @@ -9,10 +9,10 @@ import java.awt.*; public class ScoreComponent extends JComponent { private int score1; private int score2; - Coordinates2D position1; - Coordinates2D position2; + CartesianVector position1; + CartesianVector position2; - public ScoreComponent(Coordinates2D position1, Coordinates2D position2, int score1, int score2) { + public ScoreComponent(CartesianVector position1, CartesianVector position2, int score1, int score2) { this.score1 = score1; this.score2 = score2; this.position1 = position1; diff --git a/src/main/java/engine/physic/Coordinates2D.java b/src/main/java/engine/physic/CartesianVector.java similarity index 50% rename from src/main/java/engine/physic/Coordinates2D.java rename to src/main/java/engine/physic/CartesianVector.java index c2c3f9f..d2a6089 100644 --- a/src/main/java/engine/physic/Coordinates2D.java +++ b/src/main/java/engine/physic/CartesianVector.java @@ -1,20 +1,20 @@ package engine.physic; -public class Coordinates2D { +public class CartesianVector { private int x; private int y; - public Coordinates2D(int x, int y){ + public CartesianVector(int x, int y){ this.x = x; this.y = y; } - public void add(Coordinates2D otherCoordinates2D){ - this.x += otherCoordinates2D.getX(); - this.y += otherCoordinates2D.getY(); + public void add(CartesianVector otherCartesianVector){ + this.x += otherCartesianVector.getX(); + this.y += otherCartesianVector.getY(); } - public void sub(Coordinates2D otherCoordinates2D){ - this.x -= otherCoordinates2D.getX(); - this.y -= otherCoordinates2D.getY(); + public void sub(CartesianVector otherCartesianVector){ + this.x -= otherCartesianVector.getX(); + this.y -= otherCartesianVector.getY(); } public void mul(int scalar){ @@ -51,7 +51,8 @@ public class Coordinates2D { this.x = x; } - public boolean equals(Coordinates2D otherCoordinates2D){ - return this.x == otherCoordinates2D.getX() && this.y == otherCoordinates2D.getY(); + public boolean equals(CartesianVector otherCartesianVector){ + System.out.println("Comparing " + this.x + " " + this.y + " with " + otherCartesianVector.getX() + " " + otherCartesianVector.getY()); + return this.x == otherCartesianVector.getX() && this.y == otherCartesianVector.getY(); } } \ No newline at end of file diff --git a/src/main/java/engine/physic/Entity.java b/src/main/java/engine/physic/Entity.java index 9b1fd46..d159b30 100644 --- a/src/main/java/engine/physic/Entity.java +++ b/src/main/java/engine/physic/Entity.java @@ -1,7 +1,5 @@ package engine.physic; -import engine.physic.Coordinates2D; - /** * Interface for all entities in the game */ @@ -18,40 +16,40 @@ public interface Entity { * * @return speed */ - public Coordinates2D getSpeed(); + public CartesianVector getSpeed(); /** * Return the position of the entity * * @return position */ - public Coordinates2D getPosition(); + public CartesianVector getPosition(); /** * Return the acceleration of the entity * * @return acceleration */ - public Coordinates2D getAcceleration(); + public CartesianVector getAcceleration(); /** * Set the speed of the entity * * @param speed the new speed of the entity */ - public void setSpeed(Coordinates2D speed); + public void setSpeed(CartesianVector speed); /** * Set the position of the entity * * @param position the new position of the entity */ - public void setPosition(Coordinates2D position); + public void setPosition(CartesianVector position); /** * Set the acceleration of the entity */ - public void setAcceleration(Coordinates2D acceleration); + public void setAcceleration(CartesianVector acceleration); /** * Update the position of the entity diff --git a/src/main/java/engine/physic/Movable.java b/src/main/java/engine/physic/Movable.java index 5aef204..b2a9c46 100644 --- a/src/main/java/engine/physic/Movable.java +++ b/src/main/java/engine/physic/Movable.java @@ -7,13 +7,13 @@ public class Movable implements Entity { private int width; private int height; - private Coordinates2D speed; - private Coordinates2D position; + private CartesianVector speed; + private CartesianVector position; - private Coordinates2D acceleration; + private CartesianVector acceleration; - public Movable(int weight, Coordinates2D position, Coordinates2D speed, Coordinates2D acceleration, int width, int height) { + public Movable(int weight, CartesianVector position, CartesianVector speed, CartesianVector acceleration, int width, int height) { this.weight = weight; this.speed = speed; this.position = position; @@ -28,38 +28,38 @@ public class Movable implements Entity { } @Override - public Coordinates2D getSpeed() { + public CartesianVector getSpeed() { return speed; } @Override - public Coordinates2D getPosition() { + public CartesianVector getPosition() { return position; } @Override - public Coordinates2D getAcceleration() { + public CartesianVector getAcceleration() { return acceleration; } @Override - public void setSpeed(Coordinates2D speed) { + public void setSpeed(CartesianVector speed) { this.speed = speed; } @Override - public void setPosition(Coordinates2D position) { + public void setPosition(CartesianVector position) { this.position = position; } @Override - public void setAcceleration(Coordinates2D acceleration) { + public void setAcceleration(CartesianVector acceleration) { } @Override public void updatePosition() { - Coordinates2D newPosition = new Coordinates2D(this.position.getX(), this.position.getY()); + CartesianVector newPosition = new CartesianVector(this.position.getX(), this.position.getY()); newPosition.add(this.speed); // Calculating the new position if(newPosition.getX() <= 100 && !PongApp.isGoal){ @@ -71,7 +71,7 @@ public class Movable implements Entity { PongApp.isGoal = true; } if (newPosition.getY() <= 100 || newPosition.getY() >= PongApp.rectHeight - this.height + 100) { // -20 Ă cause de la barre verticale de la fenĂȘtre - this.speed = new Coordinates2D(speed.getX(), -speed.getY()); + this.speed = new CartesianVector(speed.getX(), -speed.getY()); } this.position.add(this.speed); // Modifying the position (x = x + vx ; y = y + vy) } @@ -88,11 +88,11 @@ public class Movable implements Entity { @Override public void halt() { - this.speed = new Coordinates2D(0, 0); // Making the speed null + this.speed = new CartesianVector(0, 0); // Making the speed null updatePosition(); // Updating the position with a null acceleration } - public void setDirection(Movable movable, Coordinates2D direction) throws InterruptedException { + public void setDirection(Movable movable, CartesianVector direction) throws InterruptedException { while (true) { this.speed = direction; this.position.add(this.speed); diff --git a/src/main/java/engine/physic/NotMovable.java b/src/main/java/engine/physic/NotMovable.java index 8b7e9aa..35d79da 100644 --- a/src/main/java/engine/physic/NotMovable.java +++ b/src/main/java/engine/physic/NotMovable.java @@ -1,8 +1,5 @@ package engine.physic; -import engine.physic.Coordinates2D; -import engine.physic.Entity; - /** * Class for all obstacles in the game. * Obstacles are static entities. @@ -10,8 +7,8 @@ import engine.physic.Entity; public class NotMovable implements Entity { private int weight; - private final Coordinates2D speed = new Coordinates2D(0, 0); // Our obstacle is static - private Coordinates2D position; + private final CartesianVector speed = new CartesianVector(0, 0); // Our obstacle is static + private CartesianVector position; @Override public int getWeight() { @@ -19,32 +16,32 @@ public class NotMovable implements Entity { } @Override - public Coordinates2D getSpeed() { + public CartesianVector getSpeed() { return null; } @Override - public Coordinates2D getPosition() { + public CartesianVector getPosition() { return null; } @Override - public Coordinates2D getAcceleration() { + public CartesianVector getAcceleration() { return null; } @Override - public void setSpeed(Coordinates2D speed) { + public void setSpeed(CartesianVector speed) { } @Override - public void setPosition(Coordinates2D position) { + public void setPosition(CartesianVector position) { } @Override - public void setAcceleration(Coordinates2D acceleration) { + public void setAcceleration(CartesianVector acceleration) { } diff --git a/src/main/java/engine/physic/PhysicEngine.java b/src/main/java/engine/physic/PhysicEngine.java index fca35f1..329d8cf 100644 --- a/src/main/java/engine/physic/PhysicEngine.java +++ b/src/main/java/engine/physic/PhysicEngine.java @@ -6,7 +6,6 @@ import engine.sound.SoundEngine; import pong.PongObject; import java.util.HashMap; -import java.util.Random; public class PhysicEngine implements Engine { @@ -15,7 +14,7 @@ public class PhysicEngine implements Engine { public boolean isCollision = false; SoundEngine soundEngine; - //private HashMap<Coordinates2D, PongObject> positions; // Map of the positions and the associated pong object + //private HashMap<CartesianVector, PongObject> positions; // Map of the positions and the associated pong object public PhysicEngine(SoundEngine soundEngine) { this.soundEngine = soundEngine; restart(); @@ -23,7 +22,7 @@ public class PhysicEngine implements Engine { @Override public void update(){ //TODO: we cannot have the mention of "Ball" here so we need to find a way to do it without mentioning "Ball" for (PongObject pongObject: Kernel.gameObjects) { - Coordinates2D previousPosition = pongObjectEntityHashMap.get(pongObject).getPosition(); + CartesianVector previousPosition = pongObjectEntityHashMap.get(pongObject).getPosition(); pongObjectEntityHashMap.get(pongObject).updatePosition();// Updating of the associated movable position if(pongObject.getName().equals("Ball")){ for (PongObject po2: pongObjectEntityHashMap.keySet() @@ -61,13 +60,13 @@ public class PhysicEngine implements Engine { public void restart() { pongObjectEntityHashMap = new HashMap<>(); for (PongObject pongObject: Kernel.gameObjects) { - pongObjectEntityHashMap.put(pongObject, new Movable(1, pongObject.getPosition(), pongObject.getInitSpeed(), new Coordinates2D(0, 0), pongObject.getWidth(), pongObject.getHeight())); + pongObjectEntityHashMap.put(pongObject, new Movable(1, pongObject.getPosition(), pongObject.getInitSpeed(), new CartesianVector(0, 0), pongObject.getWidth(), pongObject.getHeight())); } } public boolean checkCollision(Entity firstObject, Entity secondObject){ - Coordinates2D pos1 = firstObject.getPosition(); - Coordinates2D pos2 = secondObject.getPosition(); + CartesianVector pos1 = firstObject.getPosition(); + CartesianVector pos2 = secondObject.getPosition(); return pos1.getX() < pos2.getX() + secondObject.getWidth() && pos1.getX() + firstObject.getWidth() > pos2.getX() && pos1.getY() < pos2.getY() + secondObject.getHeight() && diff --git a/src/main/java/pong/PongApp.java b/src/main/java/pong/PongApp.java index 8a42458..7384b9a 100644 --- a/src/main/java/pong/PongApp.java +++ b/src/main/java/pong/PongApp.java @@ -1,13 +1,11 @@ package pong; -import engine.physic.Coordinates2D; +import engine.physic.CartesianVector; import engine.Kernel; import engine.sound.SoundEngine; import javax.swing.*; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; import java.io.IOException; import java.util.ArrayList; @@ -38,13 +36,13 @@ public class PongApp { int racketHeight = 120; int ballWidth = 32; - PongRacket leftRacket = new PongRacket("Left racket", "src/main/resources/pong/raquette.png", new Coordinates2D(widthDiff + 5, height/2 - racketHeight/2), new Coordinates2D(0, 0), racketWidth, racketHeight, true); + PongRacket leftRacket = new PongRacket("Left racket", "src/main/resources/pong/raquette.png", new CartesianVector(widthDiff + 5, height/2 - racketHeight/2), new CartesianVector(0, 0), racketWidth, racketHeight, true); components.add(leftRacket); - PongRacket rightRacket = new PongRacket("Right racket", "src/main/resources/pong/raquette.png", new Coordinates2D(rectWidth + widthDiff - 5 - racketWidth, height/2 - racketHeight/2), new Coordinates2D(0, 0), racketWidth, racketHeight, false); + PongRacket rightRacket = new PongRacket("Right racket", "src/main/resources/pong/raquette.png", new CartesianVector(rectWidth + widthDiff - 5 - racketWidth, height/2 - racketHeight/2), new CartesianVector(0, 0), racketWidth, racketHeight, false); components.add(rightRacket); - PongBall pongBall = new PongBall("Ball", "src/main/resources/pong/ball.png", new Coordinates2D(width/2, height/2), new Coordinates2D(2, 2), ballWidth, ballWidth); + PongBall pongBall = new PongBall("Ball", "src/main/resources/pong/ball.png", new CartesianVector(width/2, height/2), new CartesianVector(2, 2), ballWidth, ballWidth); components.add(pongBall); Kernel kernel = new Kernel("Pong", width, height, components); @@ -111,7 +109,7 @@ public class PongApp { */ public static void restart(){ isGoal = false; - components.get(2).setPosition(new Coordinates2D(width/2, height/2)); + components.get(2).setPosition(new CartesianVector(width/2, height/2)); } diff --git a/src/main/java/pong/PongBall.java b/src/main/java/pong/PongBall.java index f1a087a..60d186e 100644 --- a/src/main/java/pong/PongBall.java +++ b/src/main/java/pong/PongBall.java @@ -1,6 +1,6 @@ package pong; -import engine.physic.Coordinates2D; +import engine.physic.CartesianVector; import java.awt.*; @@ -9,15 +9,15 @@ public class PongBall implements PongObject { public String name; private final int width; private final int height; - private Coordinates2D position; + private CartesianVector position; - private Coordinates2D speed; + private CartesianVector speed; - private final Coordinates2D initSpeed; - private Coordinates2D initPosition; + private final CartesianVector initSpeed; + private CartesianVector initPosition; private final Image image; - PongBall(String name, String imagePath, Coordinates2D position, Coordinates2D speed, int width, int height){ + PongBall(String name, String imagePath, CartesianVector position, CartesianVector speed, int width, int height){ this.name = name; this.width = width; this.height = height; @@ -29,12 +29,12 @@ public class PongBall implements PongObject { } @Override - public Coordinates2D getPosition() { + public CartesianVector getPosition() { return this.position; } @Override - public Coordinates2D getSpeed() { + public CartesianVector getSpeed() { return this.speed; } @@ -60,12 +60,12 @@ public class PongBall implements PongObject { } @Override - public void setPosition(Coordinates2D position) { + public void setPosition(CartesianVector position) { this.position = position; } @Override - public void setSpeed(Coordinates2D speed) { + public void setSpeed(CartesianVector speed) { this.speed = speed; } @@ -77,7 +77,7 @@ public class PongBall implements PongObject { } @Override - public Coordinates2D getInitPosition() { + public CartesianVector getInitPosition() { return this.initPosition; } @@ -94,7 +94,7 @@ public class PongBall implements PongObject { } @Override - public Coordinates2D getInitSpeed(){ + public CartesianVector getInitSpeed(){ return this.initSpeed; } } diff --git a/src/main/java/pong/PongObject.java b/src/main/java/pong/PongObject.java index 63cfdab..3011cf7 100644 --- a/src/main/java/pong/PongObject.java +++ b/src/main/java/pong/PongObject.java @@ -1,25 +1,25 @@ package pong; -import engine.physic.Coordinates2D; +import engine.physic.CartesianVector; import java.awt.*; public interface PongObject { - public Coordinates2D getPosition(); + public CartesianVector getPosition(); - public Coordinates2D getSpeed(); + public CartesianVector getSpeed(); public Image getImage(); public int getWidth(); public int getHeight(); public int getResistance(); - public void setPosition(Coordinates2D position); + public void setPosition(CartesianVector position); - public void setSpeed(Coordinates2D speed); + public void setSpeed(CartesianVector speed); - public Coordinates2D getInitSpeed(); + public CartesianVector getInitSpeed(); public String getName(); - Coordinates2D getInitPosition(); + CartesianVector getInitPosition(); boolean isLeftRacket(); diff --git a/src/main/java/pong/PongRacket.java b/src/main/java/pong/PongRacket.java index 9d49986..b519044 100644 --- a/src/main/java/pong/PongRacket.java +++ b/src/main/java/pong/PongRacket.java @@ -1,6 +1,6 @@ package pong; -import engine.physic.Coordinates2D; +import engine.physic.CartesianVector; import java.awt.*; @@ -9,16 +9,16 @@ public class PongRacket implements PongObject { public String name; private final int width; private final int height; - private Coordinates2D position; - private final Coordinates2D initPosition; + private CartesianVector position; + private final CartesianVector initPosition; private final Image image; - private Coordinates2D speed; + private CartesianVector speed; - private final Coordinates2D initSpeed; + private final CartesianVector initSpeed; private boolean isLeftRacket; - public PongRacket(String name, String imagePath, Coordinates2D position, Coordinates2D speed, int width, int height, boolean isLeftRacket) { + public PongRacket(String name, String imagePath, CartesianVector position, CartesianVector speed, int width, int height, boolean isLeftRacket) { this.name = name; this.width = width; this.height = height; @@ -31,12 +31,12 @@ public class PongRacket implements PongObject { } @Override - public Coordinates2D getPosition() { + public CartesianVector getPosition() { return position; } @Override - public Coordinates2D getSpeed() { + public CartesianVector getSpeed() { return this.speed; } @@ -61,12 +61,12 @@ public class PongRacket implements PongObject { } @Override - public void setPosition(Coordinates2D position) { + public void setPosition(CartesianVector position) { this.position = position; } @Override - public void setSpeed(Coordinates2D speed) { + public void setSpeed(CartesianVector speed) { this.speed = speed; } @@ -77,7 +77,7 @@ public class PongRacket implements PongObject { } @Override - public Coordinates2D getInitPosition() { + public CartesianVector getInitPosition() { return initPosition; } @@ -127,7 +127,7 @@ public class PongRacket implements PongObject { } @Override - public Coordinates2D getInitSpeed() { + public CartesianVector getInitSpeed() { return initSpeed; } } diff --git a/src/main/java/sprint2_demo/Grid.java b/src/main/java/sprint2_demo/Grid.java index 1229641..6cee6d1 100644 --- a/src/main/java/sprint2_demo/Grid.java +++ b/src/main/java/sprint2_demo/Grid.java @@ -1,7 +1,7 @@ package sprint2_demo; import engine.*; -import engine.physic.Coordinates2D; +import engine.physic.CartesianVector; import javax.swing.*; import java.awt.*; @@ -12,8 +12,8 @@ public class Grid extends JFrame { // Arraylist<Elements> elements = new ArrayList<>(); ArrayList<JButton> buttons = new ArrayList<>(); - public Hero hero = new Hero("asteroid", 1, "src/main/resources/sprint2_demo/asteroid.png", new Coordinates2D(100, 100), - new Coordinates2D(-1, -1), new Coordinates2D(0, 0)); + public Hero hero = new Hero("asteroid", 1, "src/main/resources/sprint2_demo/asteroid.png", new CartesianVector(100, 100), + new CartesianVector(-1, -1), new CartesianVector(0, 0)); // JPanel mainPanel = new JPanel(); Kernel kernel; @@ -59,7 +59,7 @@ public class Grid extends JFrame { * @param image * @throws IOException */ - public void draw(Coordinates2D position, Image image, int width, int height) throws IOException { + public void draw(CartesianVector position, Image image, int width, int height) throws IOException { //getContentPane().add(new CircleComponent(100)); //getContentPane().add(new ImageComponent(image, position, width, height)); } diff --git a/src/main/java/sprint2_demo/Hero.java b/src/main/java/sprint2_demo/Hero.java index 24cf15e..ded1fff 100644 --- a/src/main/java/sprint2_demo/Hero.java +++ b/src/main/java/sprint2_demo/Hero.java @@ -1,6 +1,6 @@ package sprint2_demo; -import engine.physic.Coordinates2D; +import engine.physic.CartesianVector; import javax.imageio.ImageIO; import java.awt.*; @@ -12,13 +12,13 @@ public class Hero { public String name; public int life; - public Coordinates2D position; - private Coordinates2D speed; - private Coordinates2D acceleration; + public CartesianVector position; + private CartesianVector speed; + private CartesianVector acceleration; private Image image; - public Hero(String name, int life, String imagePath, Coordinates2D position, Coordinates2D speed, Coordinates2D acceleration) throws IOException { + public Hero(String name, int life, String imagePath, CartesianVector position, CartesianVector speed, CartesianVector acceleration) throws IOException { this.name = name; this.life = life; this.position = position; @@ -35,11 +35,11 @@ public class Hero { return image; } - public void setPosition(Coordinates2D position) { + public void setPosition(CartesianVector position) { this.position = position; } - public Coordinates2D getPosition() { + public CartesianVector getPosition() { return position; } @@ -47,11 +47,11 @@ public class Hero { return 0; } - public Coordinates2D getSpeed() { + public CartesianVector getSpeed() { return speed; } - public Coordinates2D getAcceleration() { + public CartesianVector getAcceleration() { return acceleration; } diff --git a/src/test/java/engine/physic/CartesianVectorTest.java b/src/test/java/engine/physic/CartesianVectorTest.java new file mode 100644 index 0000000..7897a55 --- /dev/null +++ b/src/test/java/engine/physic/CartesianVectorTest.java @@ -0,0 +1,49 @@ +package engine.physic; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class CartesianVectorTest { + @Test + public void testAdd() { + CartesianVector cartesianVector = new CartesianVector(1, 1); + CartesianVector otherCartesianVector = new CartesianVector(2, 2); + cartesianVector.add(otherCartesianVector); + CartesianVector expectedCartesianVector = new CartesianVector(3, 3); + assertTrue(expectedCartesianVector.equals(cartesianVector)); + } + + @Test + public void testAddNegativeVector() { + CartesianVector cartesianVector = new CartesianVector(1, 1); + CartesianVector otherCartesianVector = new CartesianVector(-2, -2); + cartesianVector.add(otherCartesianVector); + CartesianVector expectedCartesianVector = new CartesianVector(-1, -1); + assertTrue(expectedCartesianVector.equals(cartesianVector)); + } + + @Test + public void testMultiply() { + CartesianVector cartesianVector = new CartesianVector(1, 1); + cartesianVector.mul(2); + CartesianVector expectedCartesianVector = new CartesianVector(2, 2); + assertTrue(expectedCartesianVector.equals(cartesianVector)); + } + + @Test + public void testMultiplyNegative() { + CartesianVector cartesianVector = new CartesianVector(1, 1); + cartesianVector.mul(-2); + CartesianVector expectedCartesianVector = new CartesianVector(-2, -2); + assertTrue(expectedCartesianVector.equals(cartesianVector)); + } + + @Test + public void testEquals() { + CartesianVector cartesianVector = new CartesianVector(1, 1); + CartesianVector otherCartesianVector = new CartesianVector(1, 1); + assertTrue(cartesianVector.equals(otherCartesianVector)); + } + +} \ No newline at end of file diff --git a/src/test/java/engine/physic/MovableTest.java b/src/test/java/engine/physic/MovableTest.java new file mode 100644 index 0000000..f889249 --- /dev/null +++ b/src/test/java/engine/physic/MovableTest.java @@ -0,0 +1,63 @@ +package engine.physic; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + + +/** + * Test class for the Movable class. Here we test the updatePosition method according to the following rules: + * - The position should be x > 100 and y > 100 + * - If the speed is positive, the position should be updated with the speed + * - If the speed is negative, the position should be updated with the speed + * - If the speed is null, the position should not be updated + * @see Movable + */ +class MovableTest { + @Test + public void testUpdatePosition() { + // Create an instance of Movable for the tests + CartesianVector initialPosition = new CartesianVector(200, 200); + CartesianVector initialSpeed = new CartesianVector(2, 2); + CartesianVector acceleration = new CartesianVector(1, 1); + Movable movable = new Movable(1, initialPosition, initialSpeed, acceleration, 10, 10); + + // Update the position + movable.updatePosition(); + + // test if the position has been updated correctly + CartesianVector expectedPosition = new CartesianVector(202, 202); + assertTrue(expectedPosition.equals(movable.getPosition())); + } + + @Test + public void testUpdatePositionWithNegativeSpeed() { + // Create an instance of Movable for the tests + CartesianVector initialPosition = new CartesianVector(200, 200); + CartesianVector initialSpeed = new CartesianVector(-2, -2); + + Movable movable = new Movable(1, initialPosition, initialSpeed, null, 10, 10); + + // Update the position + movable.updatePosition(); + + // Test if the position has been updated correctly + CartesianVector expectedPosition = new CartesianVector(198, 198); + assertTrue(expectedPosition.equals(movable.getPosition())); + } + + @Test + public void testUpdateWithNullSpeed() { + // Create an instance of Movable for the tests + CartesianVector initialPosition = new CartesianVector(200, 200); + CartesianVector initialSpeed = new CartesianVector(0, 0); + Movable movable = new Movable(1, initialPosition, initialSpeed, null, 10, 10); + + // Update the position + movable.updatePosition(); + + // Test if the position has been updated correctly + CartesianVector expectedPosition = new CartesianVector(200, 200); + assertTrue(expectedPosition.equals(movable.getPosition())); + } +} \ No newline at end of file diff --git a/src/test/java/pong/PongBallTest.java b/src/test/java/pong/PongBallTest.java deleted file mode 100644 index bd204bc..0000000 --- a/src/test/java/pong/PongBallTest.java +++ /dev/null @@ -1,18 +0,0 @@ -package pong; - -import engine.physic.Coordinates2D; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; - -class PongBallTest { - /** - * Test if the speed of the ball is updated correctly when the ball hits the upper half of the paddle - * If we hit the upper half of the paddle, the ball should go up (-x, -y) and - * if we hit the lower half of the paddle, the ball should go down (-x, y) - */ - @Test - void testUpdateSpeedUpperHalfHit() { - - } -} \ No newline at end of file -- GitLab