Skip to content
Snippets Groups Projects
Commit acf6c949 authored by Villard PierreFrederic's avatar Villard PierreFrederic
Browse files

Collision detection display with print in the loop depending on the type and the index number

parent b7792590
No related branches found
No related tags found
No related merge requests found
......@@ -24,6 +24,9 @@ public class JeuPhysique{
//le rendu
public Afficheur affiche;
public final static short MONSTRE=1;
public final static short HERO=2;
public final static short DECORS=3;
int i=0;
......
......@@ -11,12 +11,17 @@
package physique;
import static main.JeuPhysique.*;
/**
*
* @author Pierre-Frederic Villard
*/
public class Collision {
public static int typeOfCollision = 0;
/**
*
*/
......@@ -46,11 +51,25 @@ public class Collision {
* @return
*/
public static boolean collision(Objet o, Objet o2) {
if ((o.px >= o2.px + o2.width) || (o.px + o.width <= o2.px)
|| (o.py >= o2.py + o2.height) || (o.py + o.height <= o2.py)) {
return false;
}
return true;
typeOfCollision=0;
if (o2 instanceof ObjetMonstre)
{
typeOfCollision=MONSTRE;
}
if (o2 instanceof ObjetHeros)
{
typeOfCollision=HERO;
}
if (o2 instanceof ObjetMur)
{
typeOfCollision=DECORS;
}
if ((o.px >= o2.px + o2.width) || (o.px + o.width <= o2.px)
|| (o.py >= o2.py + o2.height) || (o.py + o.height <= o2.py)) {
return false;
}
return true;
}
// permet de retourner la direction de collision
......
......@@ -43,6 +43,8 @@ public class Monde {
*/
public ArrayList<Objet> objets=new ArrayList<Objet>();
private int nbMurs=0;
/**
* les monstres
......@@ -85,6 +87,9 @@ public class Monde {
* @param dy */
public void addMur(int x, int y, int dx, int dy){
objets.add(new ObjetMur(x,y,dx,dy));
objets.get(nbMurs).index=nbMurs;
nbMurs++;
}
/** ajouter monstre
......@@ -102,7 +107,7 @@ public class Monde {
monstres.get(nbMonstres).vy=vy;
monstres.get(nbMonstres).px=px;
monstres.get(nbMonstres).py=py;
monstres.get(nbMonstres).index=nbMonstres;
nbMonstres++;
}
......@@ -124,7 +129,7 @@ public class Monde {
heros.get(nbHeros).vy=vy;
heros.get(nbHeros).px=px;
heros.get(nbHeros).py=py;
heros.get(nbHeros).index=nbHeros;
nbHeros++;
}
......
......@@ -13,7 +13,7 @@ package physique;
import java.io.IOException;
import java.util.ArrayList;
import static main.JeuPhysique.*;
import controle.Controle;
//permet de g�rer la physique
......@@ -35,7 +35,9 @@ public class MoteurPhysique {
public boolean gravity=true;
public float gravityValue=-0.04f;
public int current_monster_index=0;
public int current_wall_index=0;
/**
* Construit un moteur par defaut
* @throws IOException
......@@ -49,15 +51,22 @@ public class MoteurPhysique {
*
*/
public void update() {
monde.balle.collision=0;
// mise a jour des objets
for (Objet o : monde.objets) {
o.update();
o.collision=0;
}
}
// mise a jour des monstres
for (ObjetMonstre monstre : monde.monstres) {
monstre.evolue();
if (Collision.typeOfCollision==MONSTRE)
{
monde.balle.collision=MONSTRE;
current_monster_index=monstre.index;
}
}
// gestion du controleur
......@@ -123,7 +132,7 @@ public class MoteurPhysique {
monde.balle.vy = -1;
}
}
monde.balle.collision=0;
// mise a jour de la balle
monde.balle.update();
......@@ -132,17 +141,6 @@ public class MoteurPhysique {
for (Objet obj : monde.objets) {
if (Collision.collision(monde.balle, obj)) {
//m.balle.collision = true;
//obj.collision=true;
//si collision vient de la gauche ou droite
if (Collision.collisionGauche(monde.balle,obj)
|| (Collision.collisionDroite(monde.balle,obj)))
{ monde.balle.px = monde.balle.px - monde.balle.vx;
monde.balle.vx-=monde.balle.ax;
monde.balle.vx = -monde.balle.vx;
}
//si collision vient du haut
if (Collision.collisionHaut(monde.balle,obj))
{
......@@ -168,8 +166,22 @@ public class MoteurPhysique {
monde.balle.py = monde.balle.py - monde.balle.vy;
monde.balle.vy=-monde.balle.vy;;
}
//si collision vient de la gauche ou droite
if (Collision.collisionGauche(monde.balle,obj)
|| (Collision.collisionDroite(monde.balle,obj)))
{ monde.balle.px = monde.balle.px - monde.balle.vx;
monde.balle.vx-=monde.balle.ax;
monde.balle.vx = -monde.balle.vx;
}
current_wall_index=obj.index;
}
}
// Assign the last collision type if not a monster
if (monde.balle.collision==0)
monde.balle.collision=Collision.typeOfCollision;
}
}
......@@ -107,6 +107,9 @@ public class Objet {
//permet de sauver les positions anterieur
// Index de l'élément parmis son type (Monstre , Mur, etc...)
public int index;
/**
*
*/
......
......@@ -40,7 +40,7 @@ public class ObjetMonstre extends Objet {
// lien vers le monde
Monde m;
// par defaut
/**
......@@ -94,7 +94,7 @@ public class ObjetMonstre extends Objet {
*/
public void evolue() {
if (Collision.collision(this, m.balle))
if (Collision.collision(m.balle,this))
etat=Etat.COLLISION;
// en fonction de l'�tat interne
......
......@@ -12,6 +12,9 @@ package miscellaneous;
import main.BouclePrincipale;
import controle.ControleurClavier;
import main.JeuPhysique;
import static main.JeuPhysique.*;
import static physique.Collision.typeOfCollision;
/**
*
......@@ -20,6 +23,11 @@ import controle.ControleurClavier;
*/
public class BouclePrincipaleCool extends BouclePrincipale{
public BouclePrincipaleCool() throws Exception{
//creation du jeu
jeuPhysique = new JeuPhysique();
}
@Override
public void lanceBouclePrincipale() throws Exception {
......@@ -56,6 +64,15 @@ public class BouclePrincipaleCool extends BouclePrincipale{
jeuPhysique.update();
jeuPhysique.render();
switch (jeuPhysique.moteurPhys.monde.balle.collision)
{
case MONSTRE: System.out.println("Aie avec monstre numéro "+jeuPhysique.moteurPhys.current_monster_index);break;
case HERO: System.out.println("Copain !");break;
case DECORS: System.out.println("Pas mal avec mur numéro "+jeuPhysique.moteurPhys.current_wall_index);break;
default: break;
}
//apres le render en nanos
long timafter=System.nanoTime();
......
......@@ -23,6 +23,7 @@ import physique.Monde;
import physique.MoteurPhysique;
import physique.ObjetMur;
import afficheur.Sprites;
import miscellaneous.BouclePrincipaleCool;
public class testMario {
......@@ -88,7 +89,7 @@ public class testMario {
//on creer l'afficheur du monde
affiche=new Afficheur(moteurPhys.monde);
// Gestion de la boucle principale
BouclePrincipale maBoucle= new BouclePrincipale();
BouclePrincipaleCool maBoucle= new BouclePrincipaleCool();
// Ajout du controler à le fenêtre
maBoucle.cClavier=cClavier;
// Ajout de la vue au jeu
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment