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

Allow to with with two controlers!

parent 0fc134a9
No related branches found
No related tags found
No related merge requests found
......@@ -24,7 +24,7 @@ public class BouclePrincipale {
public BouclePrincipale() throws Exception{
//creation du jeu
jeuPhysique = new JeuPhysique();
//jeuPhysique = new JeuPhysique();
}
public void lanceBouclePrincipale() throws Exception {
......
......@@ -34,7 +34,7 @@ public class JeuPhysique{
public JeuPhysique() throws IOException
{
//on creer le moteur physique
moteurPhys=new MoteurPhysique();
//moteurPhys=new MoteurPhysique();
//on creer l'afficheur du monde
//affiche=new Afficheur(moteurPhys.monde);
......
......@@ -44,7 +44,7 @@ public class Monde {
public ArrayList<Objet> objets=new ArrayList<Objet>();
private int nbMurs=0;
public int nbMurs=0;
/**
* les monstres
......@@ -52,7 +52,7 @@ public class Monde {
public ArrayList<ObjetMonstre> monstres=new ArrayList<ObjetMonstre>();
private int nbHeros=0;
public int nbHeros=0;
/**
* les heros
......@@ -60,7 +60,7 @@ public class Monde {
public ArrayList<ObjetHeros> heros=new ArrayList<ObjetHeros>();
private int nbMonstres=0;
public int nbMonstres=0;
/**
*
* @throws IOException
......
/* ========================================================== */
/* Bibliotheque MoteurDeJeu */
/* -------------------------------------------- */
/* Bibliotheque pour aider la création de jeu video comme : */
/* - Jeux de role */
/* - Jeux de plateforme */
/* - Jeux de combat */
/* - Jeux de course */
/* - Ancien jeu d'arcade (Pac-Man, Space Invider, Snake, ...) */
/* ========================================================== */
package miscellaneous;
import controle.ControleurClavier;
import main.BouclePrincipale;
import main.JeuPhysique;
/**
*
* @author Pierre-Frederic Villard
*/
public class BouclePourDeux extends BouclePrincipale{
public ControleurClavier2 cClavier2;
public BouclePourDeux() throws Exception{
//creation du jeu
//jeuPhysique = new JeuPhysique();
//jeuPhysique.moteurPhys=
}
@Override
public void lanceBouclePrincipale() throws Exception {
//ControleurClavier cClavier=new ControleurClavier(true);
jeuPhysique.affiche.addKeyListener(cClavier);
jeuPhysique.affiche.addKeyListener(cClavier2);
//mettre l'acces au controleur dans monde
jeuPhysique.moteurPhys.monde.c=cClavier.c;
MondePourDeux monMonde=(MondePourDeux) jeuPhysique.moteurPhys.monde;
monMonde.c2=cClavier2.c;
//afficher
System.out.println("\n\n**************************************************");
System.out.println("* "+nom);
System.out.println("* *");
System.out.println("*** touche 'Q' pour arreter jeu ***");
System.out.println("****************************************************");
System.out.println("\n\n");
//fps
long dureeBoucle=1000000/fps;
System.out.println(" ---> duree d'une boucle "+dureeBoucle/1000.);
//lancement
Thread.sleep(1000);
jeuPhysique.affiche.requestFocusInWindow();
// boucle
long beforeTime = System.nanoTime();
long l = System.currentTimeMillis();
//nombre iterations
int n=0;
while(!ControleurClavier.fin)
{
n++;
jeuPhysique.update();
jeuPhysique.render();
switch (jeuPhysique.moteurPhys.monde.balle.collision)
{
}
//apres le render en nanos
long timafter=System.nanoTime();
//sleep en millisecond
while(System.nanoTime()-beforeTime-dureeBoucle*1000L<0)
{
}
beforeTime=System.nanoTime();
}
long l2 = System.currentTimeMillis();
// statistiques
System.out.println("\n\n\n************************\n");
System.out.println("Iterations = "+n);
System.out.println("FPS = " + (n * 1000.0 / (l2 - l)));
System.out.println("\n************************");
System.exit(0);
}
}
......@@ -25,7 +25,7 @@ public class BouclePrincipaleCool extends BouclePrincipale{
public BouclePrincipaleCool() throws Exception{
//creation du jeu
jeuPhysique = new JeuPhysique();
//jeuPhysique = new JeuPhysique();
}
@Override
......
/* ========================================================== */
/* Bibliotheque MoteurDeJeu */
/* -------------------------------------------- */
/* Bibliotheque pour aider la création de jeu video comme : */
/* - Jeux de role */
/* - Jeux de plateforme */
/* - Jeux de combat */
/* - Jeux de course */
/* - Ancien jeu d'arcade (Pac-Man, Space Invider, Snake, ...) */
/* ========================================================== */
package miscellaneous;
import controle.AfficheControle;
import controle.Controle;
import controle.ControleurClavier;
import static controle.ControleurClavier.fin;
import java.awt.event.KeyEvent;
/**
*
* @author Pierre-Frederic Villard
*/
public class ControleurClavier2 extends ControleurClavier{
public ControleurClavier2(boolean affiche) {
super(affiche);
}
/**
*
* @param affiche
*/
@Override
public void keyPressed(KeyEvent e) {
//touche gauche
if (e.getKeyCode()==KeyEvent.VK_A)
{
c.gauche=true;
}
//touche droite
if (e.getKeyCode()==KeyEvent.VK_E)
{
c.droite=true;
}
//touche up
if (e.getKeyCode()==KeyEvent.VK_Z)
{
c.haut=true;
}
//touche down
if (e.getKeyCode()==KeyEvent.VK_S)
{
c.bas=true;
}
//touche up
if (e.getKeyCode()==KeyEvent.VK_Q)
{
fin=true;
}
}
@Override
public void keyReleased(KeyEvent e) {
//touche gauche
if (e.getKeyCode()==KeyEvent.VK_A)
{
c.gauche=false;
}
//touche droite
if (e.getKeyCode()==KeyEvent.VK_E)
{
c.droite=false;
}
//touche up
if (e.getKeyCode()==KeyEvent.VK_Z)
{
c.haut=false;
}
//touche down
if (e.getKeyCode()==KeyEvent.VK_S)
{
c.bas=false;
}
}
}
/* ========================================================== */
/* Bibliotheque MoteurDeJeu */
/* -------------------------------------------- */
/* Bibliotheque pour aider la création de jeu video comme : */
/* - Jeux de role */
/* - Jeux de plateforme */
/* - Jeux de combat */
/* - Jeux de course */
/* - Ancien jeu d'arcade (Pac-Man, Space Invider, Snake, ...) */
/* ========================================================== */
package miscellaneous;
import afficheur.Repere;
import controle.Controle;
import java.io.IOException;
import physique.Monde;
/**
*
* @author Pierre-Frederic Villard
*/
public class MondePourDeux extends Monde{
public Controle c2;
public MondePourDeux() throws IOException
{
}
}
/* ========================================================== */
/* Bibliotheque MoteurDeJeu */
/* -------------------------------------------- */
/* Bibliotheque pour aider la création de jeu video comme : */
/* - Jeux de role */
/* - Jeux de plateforme */
/* - Jeux de combat */
/* - Jeux de course */
/* - Ancien jeu d'arcade (Pac-Man, Space Invider, Snake, ...) */
/* ========================================================== */
package miscellaneous;
import controle.ControleurClavier;
import static main.JeuPhysique.MONSTRE;
import physique.Collision;
import physique.MoteurPhysique;
import physique.Objet;
import physique.ObjetMonstre;
/**
*
* @author Pierre-Frederic Villard
*/
public class MoteurPourDeux extends MoteurPhysique{
public MondePourDeux monde;
public MoteurPourDeux() {
}
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
if (monde.c.gauche)
{
if (monde.balle.ovx==0)
{
monde.balle.sprites.changeEtape("course");
}
monde.balle.ax = -0.1;
if (monde.balle.vx<-2)
monde.balle.vx=-2;
}
else if (monde.c.droite)
{
if (monde.balle.ovx==0)
{
monde.balle.sprites.changeEtape("course");
}
monde.balle.ax = 0.1;
if (monde.balle.vx>2)
monde.balle.vx=2;
}
else
{
if ((monde.balle.vx<0.2)&&(monde.balle.vx>-0.2))
{
monde.balle.vx=0;
monde.balle.ax=0;
monde.balle.sprites.changeEtape("fixe");
}
else
if (monde.balle.vx>0) monde.balle.ax = -0.1;
else
if (monde.balle.vx<0) monde.balle.ax = +0.1;
}
//gestion des sauts
if (gravity)
{
if ((monde.c.haut)&&(!monde.c.enAir))
{
monde.balle.sprites.changeEtape("saut");
monde.balle.vy=3;
monde.balle.ay=gravityValue;
monde.c.enAir=true;
}
}
else
{
monde.balle.ay = 0;
monde.balle.vy = 0;
if (monde.c.haut)
{
monde.balle.vy = 1;
}
if (monde.c.bas)
{
monde.balle.vy = -1;
}
}
// mise a jour de la balle
monde.balle.update();
// test de collision pour chaque mur
for (Objet obj : monde.objets) {
if (Collision.collision(monde.balle, obj)) {
//si collision vient du haut
if (Collision.collisionHaut(monde.balle,obj))
{
monde.balle.py = monde.balle.py - monde.balle.vy;
monde.balle.vy=-1;
if (monde.c.enAir)
{
monde.c.enAir=false;
if (monde.balle.vx==0)
{
monde.balle.sprites.changeEtape("fixe");
}
else
monde.balle.sprites.changeEtape("course");
}
}
//si collision vient du Bas
if (Collision.collisionBas(monde.balle,obj))
{
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;
}
}
......@@ -2,6 +2,11 @@
import main.BouclePrincipale;
import afficheur.Afficheur;
import controle.ControleurClavier;
import main.JeuPhysique;
import miscellaneous.BouclePourDeux;
import miscellaneous.ControleurClavier2;
import miscellaneous.MondePourDeux;
import miscellaneous.MoteurPourDeux;
import miscellaneous.MurCool;
import physique.Monde;
import physique.MoteurPhysique;
......@@ -26,19 +31,20 @@ public class testFighter {
//le moteur physique
MoteurPhysique moteurPhys;
MoteurPourDeux moteurPhys;
//le rendu
Afficheur affiche;
//le controler
ControleurClavier cClavier=new ControleurClavier(true);
//leS controlerS
ControleurClavier cClavier1=new ControleurClavier(true);
ControleurClavier2 cClavier2=new ControleurClavier2(true);
//Le monde
Monde monMonde;
MondePourDeux monMonde;
// Construction du monde
monMonde= new Monde();
monMonde= new MondePourDeux();
//////////////////////
// Les MURS
......@@ -52,26 +58,31 @@ public class testFighter {
//////////////////////
// Le Hero
/////////////////////
monMonde.addHero(0,0,500,20);
monMonde.addHero(0,0,50,20);
monMonde.addHero(0,0,500,20);
//on creer le moteur physique
moteurPhys=new MoteurPhysique();
moteurPhys.gravity=false;
moteurPhys=new MoteurPourDeux();
//On ajoute le monde au moteur
moteurPhys.monde=monMonde;
//on creer l'afficheur du monde
affiche=new Afficheur(moteurPhys.monde);
// Gestion de la boucle principale
BouclePrincipale maBoucle= new BouclePrincipale();
BouclePourDeux maBoucle= new BouclePourDeux();
// Ajout du jeu physique
JeuPhysique MonJeuPhysique = new JeuPhysique();
maBoucle.jeuPhysique=MonJeuPhysique;
// Ajout du controler à le fenêtre
maBoucle.cClavier=cClavier;
maBoucle.cClavier=cClavier1;
maBoucle.cClavier2=cClavier2;
// Ajout de la vue au jeu
maBoucle.jeuPhysique.affiche=affiche;
// Ajout du jeu à la boucle
maBoucle.jeuPhysique.moteurPhys=moteurPhys;
maBoucle.jeuPhysique.moteurPhys.monde=moteurPhys.monde;
maBoucle.lanceBouclePrincipale();
......
......@@ -23,6 +23,7 @@ import physique.Monde;
import physique.MoteurPhysique;
import physique.ObjetMur;
import afficheur.Sprites;
import main.JeuPhysique;
import miscellaneous.BouclePrincipaleCool;
import miscellaneous.MonMondeCool;
......@@ -38,15 +39,14 @@ public class testMario {
Afficheur affiche;
//le controler
ControleurClavier cClavier=new ControleurClavier(true);
//Le monde
MonMondeCool monMonde;
// Construction du monde
monMonde= new MonMondeCool();
//MonMondeCool monMonde= new MonMondeCool();
Monde monMonde= new Monde();
//////////////////////
// Les MURS
/////////////////////
......@@ -57,8 +57,8 @@ public class testMario {
monMonde.addMur(0,-20,600,20);
//mur vertical centre
MurCool monMur=new MurCool(250,65,50,200);
monMonde.addObjet(monMur);
//MurCool monMur=new MurCool(250,65,50,200);
//monMonde.addObjet(monMur);
monMonde.addMur(200,60,50,200);
monMonde.addMur(0,00,20,1500);
monMonde.addMur(800,00,1500,20);
......@@ -90,17 +90,23 @@ public class testMario {
//on creer l'afficheur du monde
affiche=new Afficheur(moteurPhys.monde);
// Gestion de la boucle principale
BouclePrincipaleCool maBoucle= new BouclePrincipaleCool();
BouclePrincipale maBoucle= new BouclePrincipale();
//BouclePrincipaleCool maBoucle= new BouclePrincipaleCool();
// Ajout du controler à le fenêtre
maBoucle.cClavier=cClavier;
// Ajout du jeu physique
JeuPhysique MonJeuPhysique = new JeuPhysique();
maBoucle.jeuPhysique=MonJeuPhysique;
// Ajout de la vue au jeu
maBoucle.jeuPhysique.affiche=affiche;
// Ajout du jeu à la boucle
maBoucle.jeuPhysique.moteurPhys=moteurPhys;
// Change l'image de fond
affiche.decor.changeImage("background2.jpg");
//affiche.decor.changeImage("background2.jpg");
// Passage à une vue non subjective
Repere.isSubjective=false;
//Repere.isSubjective=false;
// Test to change the image
//monMonde.balle.sprites.assignNewImage("hero2.png");
......
import afficheur.Afficheur;
import controle.ControleurClavier;
import main.BouclePrincipale;
import physique.Monde;
import physique.MoteurPhysique;
/* ========================================================== */
/* Bibliotheque MoteurDeJeu */
/* -------------------------------------------- */
......@@ -14,5 +21,58 @@
* @author Pierre-Frederic Villard
*/
public class testRace {
public static void main(String[] args) throws Exception {
//le moteur physique
MoteurPhysique moteurPhys;
//le rendu
Afficheur affiche;
//le controler
ControleurClavier cClavier=new ControleurClavier(true);
//Le monde
Monde monMonde;
// Construction du monde
monMonde= new Monde();
//////////////////////
// Les MURS
/////////////////////
//sol
monMonde.addMur(-200,-20,1000,20);
//////////////////////
// Le Hero
/////////////////////
monMonde.addHero(0,0,500,20);
//on creer le moteur physique
moteurPhys=new MoteurPhysique();
moteurPhys.gravity=false;
//On ajoute le monde au moteur
moteurPhys.monde=monMonde;
//on creer l'afficheur du monde
affiche=new Afficheur(moteurPhys.monde);
// Gestion de la boucle principale
BouclePrincipale maBoucle= new BouclePrincipale();
// Ajout du controler à le fenêtre
maBoucle.cClavier=cClavier;
// Ajout de la vue au jeu
maBoucle.jeuPhysique.affiche=affiche;
// Ajout du jeu à la boucle
maBoucle.jeuPhysique.moteurPhys=moteurPhys;
maBoucle.lanceBouclePrincipale();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment