Skip to content
Snippets Groups Projects
Commit 00a5c229 authored by Azurlors's avatar Azurlors
Browse files

Début implémentation collision

parent ae3e8f76
Branches
No related tags found
No related merge requests found
package entity;
import environnement.Coordonnees;
import environnement.HitBox;
import environnement.Physique;
import jeu.Jeu;
......@@ -10,12 +11,15 @@ public class Character extends Entity{
private double vitesseActuZ = 0;
private final double impulsionSaut;
private double masse;
private HitBox charaterHitBox;
private final double entityWIDTH = 30;
private final double entityHEIGHT= 60;
public Character(Coordonnees c,double vitesseMax,double m,double impSaut){
super(c,vitesseMax);
this.masse = m;
this.impulsionSaut = impSaut;
this.charaterHitBox = new HitBox(c,entityHEIGHT,entityWIDTH);
}
@Override
public void deplacements(double commandX,double commandZ,int alpha){ // alpha indique si il est au sol ou non, il vaut 0 ou 1 en fonction
......@@ -68,6 +72,13 @@ public class Character extends Entity{
public double getImpulsionSaut() {
return impulsionSaut;
}
@Override
public double getEntityWIDTH() {
return this.entityWIDTH;
}
@Override
public double getEntityHEIGHT() {
return this.entityHEIGHT;
}
}
......@@ -6,6 +6,9 @@ public abstract class Entity {
private Coordonnees coord;
final double vitesseMax;
private final double entityWIDTH = 10;
private final double entityHEIGHT = 10;
public Entity(Coordonnees c,double vitesseMax){
this.coord = c;
this.vitesseMax = vitesseMax;
......@@ -18,5 +21,11 @@ public abstract class Entity {
public void setCoord(Coordonnees coord) {
this.coord = coord;
}
public double getEntityWIDTH() {
return entityWIDTH;
}
public double getEntityHEIGHT() {
return entityHEIGHT;
}
}
......@@ -23,14 +23,4 @@ public class Coordonnees {
public double getZ() {
return z;
}
public void evolveX(double var){
// evolution des coordonnees en x
this.x += var;
}
public void evolveZ(double var){
// evolution des coordonnees en z
this.z += var;
}
}
package environnement;
import java.util.HashMap;
public class HitBox {
//private final Coordonnees centre;
private HashMap<String, Coordonnees> extremites = new HashMap<String,Coordonnees>();
private static double defaultUnit = 10;
public HitBox(Coordonnees c){
extremites.put("HautDroite",new Coordonnees(c.getX()+defaultUnit/2,c.getZ()-defaultUnit/2));
extremites.put("BasDroite",new Coordonnees(c.getX()+defaultUnit/2,c.getZ()+defaultUnit/2));
extremites.put("HautGauche",new Coordonnees(c.getX()-defaultUnit/2,c.getZ()-defaultUnit/2));
extremites.put("BasGauche",new Coordonnees(c.getX()-defaultUnit/2,c.getZ()+defaultUnit/2));
}
public HitBox(Coordonnees c , double Height , double Width){
extremites.put("HautDroite",new Coordonnees(c.getX()+Width/2,c.getZ()-Height/2));
extremites.put("BasDroite",new Coordonnees(c.getX()+Width/2,c.getZ()+Height/2));
extremites.put("HautGauche",new Coordonnees(c.getX()-Width/2,c.getZ()-Height/2));
extremites.put("BasGauche",new Coordonnees(c.getX()-Width/2,c.getZ()+Height/2));
}
public static int getDefaultUnit() {
return (int)defaultUnit;
}
public static Boolean Collision(HitBox A, HitBox B){ // lignes sautées pour raison de lisibilité
return A.extremites.get("HautDroite").getX() >= B.extremites.get("BasGauche").getX()
&& A.extremites.get("HautDroite").getZ() <= B.extremites.get("BasGauche").getZ()
||
A.extremites.get("BasDroite").getX() >= B.extremites.get("HautGauche").getX()
&& A.extremites.get("BasDroite").getZ() >= B.extremites.get("HautGauche").getZ()
||
A.extremites.get("HautGauche").getX() <= B.extremites.get("BasDroite").getX()
&& A.extremites.get("HautGauche").getZ() <= B.extremites.get("BasDroite").getZ()
||
A.extremites.get("BasGauche").getX() <= B.extremites.get("HautDroite").getX()
&& A.extremites.get("BasGauche").getZ() >= B.extremites.get("HautDroite").getZ();
}
}
package environnement;
import java.util.HashMap;
public class Obstacle {
//private final Coordonnees centre;
private HashMap<String, Coordonnees> extremites;
private static int defaultUnit = 10;
public Obstacle(Coordonnees c){
HashMap<String, Coordonnees> extremites = new HashMap<String,Coordonnees>();
extremites.put("DH",new Coordonnees(c.getX()+(double)defaultUnit/2,c.getZ()-(double)defaultUnit/2));
extremites.put("DB",new Coordonnees(c.getX()+(double)defaultUnit/2,c.getZ()+(double)defaultUnit/2));
extremites.put("GH",new Coordonnees(c.getX()-(double)defaultUnit/2,c.getZ()-(double)defaultUnit/2));
extremites.put("GB",new Coordonnees(c.getX()-(double)defaultUnit/2,c.getZ()+(double)defaultUnit/2));
}
public int getDefaultUnit() {
return defaultUnit;
}
}
......@@ -3,12 +3,12 @@ package jeu;
import engine.GameController;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.HashMap;
public class Controller implements GameController{
private boolean isRightPressed, isLeftPressed, isSpacePressed;
private HashMap<String,Boolean> cmd = new HashMap<String,Boolean>();
/*
* commande en cours
*/
......@@ -25,7 +25,6 @@ public class Controller implements GameController{
*/
@Override
public HashMap<String,Boolean> getCommand() {
HashMap<String,Boolean> cmd = new HashMap<String,Boolean>();
cmd.put("Right",isRightPressed);
cmd.put("Left",isLeftPressed);
cmd.put("Jump",isSpacePressed);
......@@ -37,23 +36,17 @@ public class Controller implements GameController{
switch (e.getKeyCode()) {
// si on appuie sur une touche ci dessous le boolean devient vraie.
case KeyEvent.VK_RIGHT: isRightPressed = true; break;
case KeyEvent.VK_LEFT: isLeftPressed = true; break;
case KeyEvent.VK_SPACE: isSpacePressed = true; break;
case KeyEvent.VK_RIGHT -> isRightPressed = true;
case KeyEvent.VK_LEFT -> isLeftPressed = true;
case KeyEvent.VK_SPACE -> isSpacePressed = true;
}
}
@Override
public void keyReleased(KeyEvent e) {
switch(e.getKeyCode()) {
case KeyEvent.VK_RIGHT:
isRightPressed = false;
break;
case KeyEvent.VK_LEFT:
isLeftPressed = false;
break;
case KeyEvent.VK_SPACE:
isSpacePressed = false;
break;
switch (e.getKeyCode()) {
case KeyEvent.VK_RIGHT -> isRightPressed = false;
case KeyEvent.VK_LEFT -> isLeftPressed = false;
case KeyEvent.VK_SPACE -> isSpacePressed = false;
}
}
@Override
......
package jeu;
import engine.GamePainter;
import entity.Character;
import environnement.Obstacle;
import java.awt.*;
import java.awt.image.BufferedImage;
import static environnement.HitBox.getDefaultUnit;
import static jeu.Jeu.charac;
import static jeu.Jeu.getCoordSol;
......@@ -21,8 +24,10 @@ public class Painter implements GamePainter{
public void draw(BufferedImage im) {
Graphics2D crayon = (Graphics2D) im.getGraphics();
crayon.setColor(Color.blue);
drawCharacter(crayon);
drawCharacter(crayon, charac);
drawSol(crayon);
crayon.setColor(Color.red);
//drawQuadrillage(crayon);
}
@Override
......@@ -35,10 +40,10 @@ public class Painter implements GamePainter{
return HEIGHT;
}
private void drawCharacter(Graphics2D crayon){
private void drawCharacter(Graphics2D crayon, Character charac){
int x = (int) charac.getCoord().getX();
int y = (int) charac.getCoord().getZ();
crayon.fillRect(x-15,y-30,30,60);
crayon.fillRect(x-15,y-30, (int) charac.getEntityWIDTH(),(int) charac.getEntityHEIGHT());
}
private void drawObstacle(Graphics2D crayon, Obstacle obstacle){
......@@ -46,6 +51,16 @@ public class Painter implements GamePainter{
}
private void drawSol(Graphics2D crayon){
crayon.drawLine(0,(int) getCoordSol().getZ(),getWidth(),(int) getCoordSol().getZ());
crayon.drawLine(0,(int) getCoordSol().getZ(),WIDTH,(int) getCoordSol().getZ());
}
private void drawQuadrillage(Graphics2D crayon){ //pour le test de la classe obstacle
int taille = getDefaultUnit();
for (int i=1;i<(double) HEIGHT/taille;i++) {
crayon.drawLine(0, i * taille, WIDTH, i * taille);
}
for (int j =0;j<(double) WIDTH/taille;j++) {
crayon.drawLine(j * taille, 0, j * taille,HEIGHT );
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment