Phase 8.0.5

This commit is contained in:
Erwann PHILIPPE 2025-03-17 17:11:47 +01:00
parent ba3ddf99a4
commit 65134fcca9
13 changed files with 63 additions and 297 deletions

View file

@ -1,24 +0,0 @@
/**
* Gestion de la boule
*
*/
public class Boule extends Objet {
/**
* instance de JeuServeur pour la communication
*/
private JeuServeur jeuServeur ;
/**
* Constructeur
*/
public Boule() {
}
/**
* Tire d'une boule
*/
public void tireBoule() {
}
}

View file

@ -1,28 +0,0 @@
/**
* Informations et méthodes communes aux jeux client et serveur
*
*/
public abstract class Jeu {
/**
* Réception d'une connexion (pour communiquer avec un ordinateur distant)
*/
public abstract void connexion() ;
/**
* Réception d'une information provenant de l'ordinateur distant
*/
public abstract void reception() ;
/**
* Déconnexion de l'ordinateur distant
*/
public abstract void deconnexion() ;
/**
* Envoi d'une information vers un ordinateur distant
*/
public void envoi() {
}
}

View file

@ -1,32 +0,0 @@
/**
* Gestion du jeu côté client
*
*/
public class JeuClient extends Jeu {
/**
* Controleur
*/
public JeuClient() {
}
@Override
public void connexion() {
}
@Override
public void reception() {
}
/**
* Envoi d'une information vers le serveur
* fais appel une fois à l'envoi dans la classe Jeu
*/
public void envoi() {
}
public void deconnexion() {
}
}

View file

@ -1,49 +0,0 @@
import java.util.ArrayList;
/**
* Gestion du jeu côté serveur
*
*/
public class JeuServeur extends Jeu {
/**
* Collection de murs
*/
private ArrayList<Mur> lesMurs = new ArrayList<Mur>() ;
/**
* Collection de joueurs
*/
private ArrayList<Joueur> lesJoueurs = new ArrayList<Joueur>() ;
/**
* Constructeur
*/
public JeuServeur() {
}
@Override
public void connexion() {
}
@Override
public void reception() {
}
@Override
public void deconnexion() {
}
/**
* Envoi d'une information vers tous les clients
* fais appel plusieurs fois à l'envoi de la classe Jeu
*/
public void envoi() {
}
/**
* Génération des murs
*/
public void constructionMurs() {
}
}

View file

@ -1,120 +0,0 @@
/**
* Gestion des joueurs
*
*/
public class Joueur extends Objet {
/**
* vie de départ pour tous les joueurs
*/
private static final int MAXVIE = 10 ;
/**
* gain de points de vie lors d'une attaque
*/
private static final int GAIN = 1 ;
/**
* perte de points de vie lors d'une attaque
*/
private static final int PERTE = 2 ;
/**
* pseudo saisi
*/
private String pseudo ;
/**
* n° correspondant au personnage (avatar) pour le fichier correspondant
*/
private int numPerso ;
/**
* instance de JeuServeur pour communiquer avec lui
*/
private JeuServeur jeuServeur ;
/**
* numéro d'<EFBFBD>tape dans l'animation (de la marche, touché ou mort)
*/
private int etape ;
/**
* la boule du joueur
*/
private Boule boule ;
private int vie;
private int orientation;
/**
* Constructeur
*/
public Joueur() {
}
/**
* Initialisation d'un joueur (pseudo et numéro, calcul de la 1ère position, affichage, création de la boule)
*/
public void initPerso() {
}
/**
* Calcul de la première position aléatoire du joueur (sans chevaucher un autre joueur ou un mur)
*/
private void premierePosition() {
}
/**
* Affiche le personnage et son message
*/
public void affiche() {
}
/**
* Gère une action reçue et qu'il faut afficher (déplacement, tire de boule...)
*/
public void action() {
}
/**
* Gère le déplacement du personnage
*/
private void deplace() {
}
/**
* Contrôle si le joueur touche un des autres joueurs
* @return true si deux joueurs se touchent
*/
private Boolean toucheJoueur() {
return null;
}
/**
* Gain de points de vie après avoir touché un joueur
*/
public void gainVie() {
}
/**
* Perte de points de vie après avoir été touché
*/
public void perteVie() {
}
private Boolean toucheMur() {
return null;
}
/**
* vrai si la vie est à 0
* @return true si vie = 0
*/
public Boolean estMort() {
return null;
}
/**
* Le joueur se déconnecte et disparait
*/
public void departJoueur() {
}
}

View file

@ -1,13 +0,0 @@
/**
* Gestion des murs
*
*/
public class Mur extends Objet {
/**
* Constructeur
*/
public Mur() {
}
}

View file

@ -1,26 +0,0 @@
/**
* Informations communes à tous les objets (joueurs, murs, boules)
* permet de mémoriser la position de l'objet et de gérer les collisions
*
*/
public abstract class Objet {
/**
* position X de l'objet
*/
protected Integer posX ;
/**
* position Y de l'objet
*/
protected Integer posY ;
/**
* contrôle si l'objet actuel touche l'objet passé en paramètre
* @param objet contient l'objet à contrôler
* @return true si les 2 objets se touchent
*/
public Boolean toucheObjet (Objet objet) {
return null;
}
}

View file

@ -36,10 +36,13 @@ public class Controle implements AsyncResponse {
System.out.println("srv"); System.out.println("srv");
// //
new ServeurSocket(this, GLOBAL.PORT); new ServeurSocket(this, GLOBAL.PORT);
this.leJeu = new JeuServeur(this);
Arene areneJeu = new Arene(); this.frmArene = new Arene();
areneJeu.setVisible(true); this.frmArene.setVisible(true);
this.leJeu = new JeuServeur(this);
((JeuServeur)this.leJeu).constructionMurs();
frmEntreeJeu.dispose(); frmEntreeJeu.dispose();
}else { }else {
System.out.println("ip"); System.out.println("ip");
@ -81,4 +84,12 @@ public class Controle implements AsyncResponse {
connection.envoi(obj); connection.envoi(obj);
} }
public void evenementJeuServeur(String ordre, Object info) {
switch(ordre) {
case "ajout mur":
this.frmArene.ajoutMurs(info);
break;
}
}
} }

View file

@ -9,4 +9,9 @@ public interface GLOBAL {
String cheminFonds = "fonds/"; String cheminFonds = "fonds/";
String cheminPersos = "personnages/"; String cheminPersos = "personnages/";
int tailleXArene = 800;
int tailleYArene = 590;
int largeurMur = 34;
int hauteurMur = 35;
} }

View file

@ -62,6 +62,11 @@ public class JeuServeur extends Jeu {
* Génération des murs * Génération des murs
*/ */
public void constructionMurs() { public void constructionMurs() {
for(int i = 0; i<20; i++){
Mur leMur = new Mur();
lesMurs.add(leMur);
this.controle.evenementJeuServeur("ajout mur", leMur.getJLabel());;
}
} }
} }

View file

@ -1,4 +1,12 @@
package modele; package modele;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import controleur.GLOBAL;
/** /**
* Gestion des murs * Gestion des murs
* *
@ -9,6 +17,14 @@ public class Mur extends Objet {
* Constructeur * Constructeur
*/ */
public Mur() { public Mur() {
posX = (int) Math.round(Math.random() * (GLOBAL.tailleXArene - GLOBAL.largeurMur)) ;
posY = (int) Math.round(Math.random() * (GLOBAL.tailleYArene - GLOBAL.hauteurMur)) ;
label = new JLabel();
label.setBounds(posX, posY, GLOBAL.largeurMur, GLOBAL.hauteurMur);
URL resource = getClass().getClassLoader().getResource("murs/mur.gif");
label.setIcon(new ImageIcon(resource));
} }
} }

View file

@ -1,4 +1,7 @@
package modele; package modele;
import javax.swing.JLabel;
/** /**
* Informations communes <EFBFBD> tous les objets (joueurs, murs, boules) * Informations communes <EFBFBD> tous les objets (joueurs, murs, boules)
* permet de m<EFBFBD>moriser la position de l'objet et de g<EFBFBD>rer les collisions * permet de m<EFBFBD>moriser la position de l'objet et de g<EFBFBD>rer les collisions
@ -15,6 +18,8 @@ public abstract class Objet {
*/ */
protected Integer posY ; protected Integer posY ;
protected JLabel label;
/** /**
* contr<EFBFBD>le si l'objet actuel touche l'objet pass<EFBFBD> en param<EFBFBD>tre * contr<EFBFBD>le si l'objet actuel touche l'objet pass<EFBFBD> en param<EFBFBD>tre
* @param objet contient l'objet <EFBFBD> contr<EFBFBD>ler * @param objet contient l'objet <EFBFBD> contr<EFBFBD>ler
@ -24,4 +29,8 @@ public abstract class Objet {
return null; return null;
} }
public JLabel getJLabel() {
return label;
}
} }

View file

@ -12,6 +12,7 @@ import javax.swing.JPanel;
import javax.swing.border.EmptyBorder; import javax.swing.border.EmptyBorder;
import controleur.GLOBAL; import controleur.GLOBAL;
import modele.Mur;
import javax.swing.JLabel; import javax.swing.JLabel;
import javax.swing.JTextField; import javax.swing.JTextField;
@ -24,6 +25,7 @@ public class Arene extends JFrame {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private JPanel contentPane; private JPanel contentPane;
private JTextField textField; private JTextField textField;
private JPanel jpnMur;
/** /**
* Launch the application. * Launch the application.
@ -56,6 +58,12 @@ public class Arene extends JFrame {
System.out.println("❌ Image non trouvée !"); System.out.println("❌ Image non trouvée !");
} }
jpnMur = new JPanel();
jpnMur.setOpaque(false);
jpnMur.setBounds(0, 0, 800, 590);
contentPane.add(jpnMur);
jpnMur.setLayout(null);
@ -63,16 +71,20 @@ public class Arene extends JFrame {
contentPane.add(lblNewLabel); contentPane.add(lblNewLabel);
textField = new JTextField(); textField = new JTextField();
textField.setBounds(0, 590, 792, 31); textField.setBounds(0, 591, 800, 30);
contentPane.add(textField); contentPane.add(textField);
textField.setColumns(10); textField.setColumns(10);
JScrollPane scrollPane = new JScrollPane(); JScrollPane scrollPane = new JScrollPane();
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setBounds(0, 620, 792, 98); scrollPane.setBounds(0, 620, 800, 98);
contentPane.add(scrollPane); contentPane.add(scrollPane);
JTextArea textArea = new JTextArea(); JTextArea textArea = new JTextArea();
scrollPane.setViewportView(textArea); scrollPane.setViewportView(textArea);
} }
public void ajoutMurs(Object portougal) {
jpnMur.add((JLabel)portougal);
jpnMur.repaint();
}
} }