Compare commits

..

11 Commits

36 changed files with 902 additions and 1007 deletions

View File

@ -1,23 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="lib" path="/home/nicolas/eclipse-workspace/Projet_Java/JAVA/PROJET-PMT_STRI1A/src/jdbc.jar">
<classpathentry exported="true" kind="lib" path="/home/nicolas/Bureau/jdbc-support-1.0.23-sources.jar">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="/home/nicolas/eclipse-workspace/Projet_Java/JAVA/PROJET-PMT_STRI1A/src/gson-2.6.2.jar">
<classpathentry exported="true" kind="lib" path="/home/nicolas/Téléchargements/gson-2.8.5.jar">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="/home/nicolas/eclipse-workspace/Projet_Java/JAVA/PROJET-PMT_STRI1A/src/javatuples-1.2.jar"/>
<classpathentry kind="lib" path="/home/nicolas/Téléchargements/swt-linux-gtk-x64.jar/swt-linux-gtk-x64.jar"/>
<classpathentry kind="lib" path="swing2swt.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View File

@ -1,12 +1,12 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=1.8
org.eclipse.jdt.core.compiler.source=11

Binary file not shown.

Before

Width:  |  Height:  |  Size: 939 KiB

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="src" path=""/>
<classpathentry kind="output" path=""/>
</classpath>

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>src</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@ -1,4 +1,4 @@
package modeles;
package fonctionnement;
import java.util.InputMismatchException;
import java.util.Scanner;

View File

@ -0,0 +1,275 @@
package fonctionnement;
import labyrinthe.*;
import modeles.*;
import javafx.util.*;
import java.io.IOException;
import java.lang.reflect.GenericArrayType;
import java.util.Random;
import com.google.gson.Gson;
public class Menu {
public Labyrinthe menuStartGame() {
System.out.println("L'Aventure vous appelle ! Le choix s'offre a vous, une histoire peut s'ecrire une autre peut continuer :\n1) Nouvelle Partie\n2) Continuer votre progression");
switch(Clavier.entrerClavierInt()) {
case 1:
return new Labyrinthe(20);//le nombre peut changer
case 2:
Sauvegarde ge = new Sauvegarde();
return ge.labyrinthe();
default :
return null;
}
}
public Personnage menuSelection(Labyrinthe lab) {
System.out.println("Bonjour Etranger, je suis le narrateur de votre histoire. Comment dois-je vous appeler ? ");
int i = 0;
for (Personnage per : lab.getListePersonnage()) {
System.out.println(i++ + ") "+per.getNom());
}
Personnage pers;
try{
pers =lab.getListePersonnage().get(Clavier.entrerClavierInt());
}
catch(Exception e) {
System.out.println("Le personnage dont vous me parlez n'existe pas.");
return null;
}
System.out.println("Enchante de vous rencontrer "+pers.getNom()+".");
return pers;
}
public boolean Menudeplacement(Personnage perso, Salle salle,Labyrinthe lab) throws IOException {
Sauvegarde gene =new Sauvegarde();
System.out.println("Choisissez une direction:\n Z) Haut\n S) Bas\n D) Droite\n Q) Gauche\n X) sauvegarder et quitter");
Salle s;
Monstre mons;
Pair<Integer,Integer>next;
String csb="";
switch(Clavier.entrerClavierString()) {
case "Z":
next=new Pair(salle.getCoordonnes().getKey(),salle.getCoordonnes().getValue()+1);
if((s=salle.findNextSalle(next, lab))==null){
System.out.println("Je ne connais pas cette salle");
return true;
}
while (!s.estVide() && perso.isVivant() && !csb.contentEquals("Vous avez fuit.")) {
mons=lab.getListeMonstre().get(s.getListeEnnemie().get(0));
csb=menuCombat(mons, perso, lab);
if (csb.contentEquals("Votre ennemie trepasse.")) {
s.getListeEnnemie().remove(0);
}
System.out.println(csb);
}
if (perso.isVivant() && !csb.contentEquals("Vous avez fuit.")) {
perso.seDeplacer(s);
if (!csb.isEmpty()) {
System.out.println("Un objet traine sur le sol... c'est la cle de la salle ! Desormais vous pouvez vous deplacer dans les salles alentours.");
perso.getSalle().cle(lab);
}
}
break;
case "S":
next=new Pair(salle.getCoordonnes().getKey(),salle.getCoordonnes().getValue()-1);
if((s=salle.findNextSalle(next, lab))==null){
System.out.println("Je ne connais pas cette salle");
return true;
}
while (!s.estVide() && perso.isVivant() && !csb.contentEquals("Vous avez fuit.")) {
mons =lab.getListeMonstre().get(s.getListeEnnemie().get(0));
csb=menuCombat(mons, perso, lab);
if (csb.contentEquals("Votre ennemie trepasse.")) {
s.getListeEnnemie().remove(0);
}
System.out.println(csb);
}
if (perso.isVivant() && !csb.contentEquals("Vous avez fuit.")) {
perso.seDeplacer(s);
if (!csb.isEmpty()) {
System.out.println("Un objet traine sur le sol... c'est la cle de la salle ! Desormais vous pouvez vous deplacer dans les salles alentours.");
perso.getSalle().cle(lab);
}
}
break;
case "D":
next=new Pair(salle.getCoordonnes().getKey()+1,salle.getCoordonnes().getValue());
if((s=salle.findNextSalle(next, lab))==null){
System.out.println("Je ne connais pas cette salle");
return true;
}
while (!s.estVide() && perso.isVivant() && !csb.contentEquals("Vous avez fuit.")) {
mons =lab.getListeMonstre().get(s.getListeEnnemie().get(0));
csb=menuCombat(mons, perso, lab);
if (csb.contentEquals("Votre ennemie trepasse.")) {
s.getListeEnnemie().remove(0);
}
System.out.println(csb);
}
if (perso.isVivant() && !csb.contentEquals("Vous avez fuit.")) {
perso.seDeplacer(s);
if (!csb.isEmpty()) {
System.out.println("Un objet traine sur le sol... c'est la cle de la salle ! Desormais vous pouvez vous deplacer dans les salles alentours.");
perso.getSalle().cle(lab);
} }
break;
case "Q":
next=new Pair(salle.getCoordonnes().getKey()-1,salle.getCoordonnes().getValue());
if((s=salle.findNextSalle(next, lab))==null){
System.out.println("Je ne connais pas cette salle");
return true;
}
while (!s.estVide() && perso.isVivant() && !csb.contentEquals("Vous avez fuit.")) {
mons =lab.getListeMonstre().get(s.getListeEnnemie().get(0));
csb=menuCombat(mons, perso, lab);
if (csb.contentEquals("Votre ennemie trepasse.")) {
s.getListeEnnemie().remove(0);
}
System.out.println(csb);
}
if (perso.isVivant() && !csb.contentEquals("Vous avez fuit.")) {
perso.seDeplacer(s);
if (!csb.isEmpty()) {
System.out.println("Un objet traine sur le sol... c'est la cle de la salle ! Desormais vous pouvez vous deplacer dans les salles alentours.");
perso.getSalle().cle(lab);
}
}
break;
case "X" :
try {
gene.save(lab);
}catch(Exception e) {
System.out.println(e);
}
return false;
default :
System.out.println("erreur de lecture");
}
if(perso.isVivant())System.out.println("Vous etes a la salle de coordonnes "+perso.getSalle().getCoordonnes().getKey()+" "+perso.getSalle().getCoordonnes().getValue()+".");
return true;
}
public void MenuMarche(Personnage perso, Labyrinthe lab) {
System.out.println("Voulez-vous acheter un objet:(votre bourse :"+perso.getValeurBourse() +")\n1) Oui\n2) Non");
switch(Clavier.entrerClavierString()) {
case "1":
System.out.println(perso.getSalle().creerObjetsAVendre(lab)+"\nVoulez-vous acheter une arme ? (oui/non)");
String selection=Clavier.entrerClavierString();
if(selection.contentEquals("oui")) {
System.out.println("Quel numero pour l'arme ?");
int valeur = Clavier.entrerClavierInt();
if (perso.getBourse().Achat(lab.getListeArme().get(valeur))>=0) perso.equiper(lab.getListeArme().get(valeur),lab);
} else {
System.out.println("Pourquoi Pas une armure alors ? (oui/non)");
selection=Clavier.entrerClavierString();
if(selection.contentEquals("oui")) {
System.out.println("Quel numero pour l'armure ?");
int valeur = Clavier.entrerClavierInt();
if (perso.getBourse().Achat(lab.getListeArmure().get(valeur))>=0) perso.equiper(lab.getListeArmure().get(valeur),lab);
}
}
break;
case "2":
System.out.println("Vous sortez du marche.");
}
}
public void menuJeu() {
Labyrinthe lab=menuStartGame();
Personnage perso = menuSelection(lab);
boolean jeu=true;
try {
do {
jeu=Menudeplacement(perso, perso.getSalle(),lab);
if (perso.getSalle().isEstMarche() && perso.isVivant()) {
lab.restore();
MenuMarche(perso, lab);
}
}while(perso.isVivant() && !perso.getSalle().estSortie() && jeu);
}catch (Exception e) {
System.out.println(e);
}
}
public String menuCombat(Monstre mons, Personnage perso, Labyrinthe lab) throws IOException {
int degat;
Random rd =new Random();
int reponse = 0;
System.out.println("Un monstre du nom de "+mons.getNom()+" se presente devant vous et il est tres en colere \nIl lui reste : "+mons.getpVie()+"\nIl vous reste : "+perso.getpVie()+"\nVous avez "+perso.getPotion().size()+" potion.");
while (true){
System.out.println("\t - 1 attaquer\n\t - 2 Potion \n\t- 3 Fuir");
try{
reponse=Clavier.entrerClavierInt();
}catch (Exception e) {
System.in.read();
}
switch (reponse) {
case 1:
degat = perso.attaquer(mons, lab);
System.out.println("Vous infligez "+degat+" a votre adversaire.");
if (!mons.isVivant()) {
perso.setpVieMax(perso.getpVieMax()+1);
perso.soin();
mons.soin();
mons.setVivant(true);
if (rd.nextInt(100)<=30) {
perso.gagnerUnePotion();
}
System.out.println(perso.remplirBourse());
return "Votre ennemie trepasse.";
} else {
System.out.println("Au tour de votre adversaire. Il attaque preparez vous ! ");
System.out.println("il vous inflige "+ mons.attaquer(perso,lab)+".");
if (!perso.isVivant()) {
return "C'est ainsi que vous trepassez sous les coups des tenebres. Reposez vous heros... Vous avez l'eternite.";
}
else System.out.println("votre ennemie n'est pas encore a bout, achevez le ! \nIl lui reste :"+mons.getpVie()+"\nIl vous reste :"+perso.getpVie()+"\nVous avez "+perso.getPotion().size()+" potion.");
}
break;
case 2 :
if (!perso.getPotion().isEmpty()) {
perso.utiliser(perso.getPotion().remove(0));
System.out.println("Vous utilisez une potion. Votre vie est maintenant au maximum.");
System.out.println("Au tour de votre adversaire. Il attaque preparez vous ! ");
System.out.println("il vous inflige "+ mons.attaquer(perso,lab)+".");
if (!perso.isVivant()) {
return "C'est ainsi que vous trepassez sous les coups des tenebres. Reposez vous heros... Vous avez l'eternite.";
}
else System.out.println("votre ennemie n'est pas encore a bout, achevez le ! \nIl lui reste :"+mons.getpVie()+"\nIl vous reste :"+perso.getpVie()+"\nVous avez "+perso.getPotion().size()+" potion.");
} else {
System.out.println("Il ne vous reste plus de potion.");
}
break;
case 3 :
System.out.println("Vous tentez de fuir.");
if (rd.nextInt(100)<50) {
perso.soin();
return "Vous avez fuit.";
} else {
System.out.println("Ce fut un echec !");
System.out.println("Au tour de votre adversaire. Il attaque preparez vous ! ");
System.out.println("il vous inflige "+ mons.attaquer(perso,lab)+".");
if (!perso.isVivant()) {
return "C'est ainsi que vous trepassez sous les coups des tenebres. Reposez vous heros... Vous avez l'eternite.";
}
else System.out.println("votre ennemie n'est pas encore a bout, achevez le ! \nIl lui reste :"+mons.getpVie()+"\nIl vous reste :"+perso.getpVie()+"\nVous avez "+perso.getPotion().size()+" potion.");
}
}
}
}
}

View File

@ -0,0 +1,96 @@
package fonctionnement;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import com.google.gson.Gson;
import labyrinthe.Labyrinthe;
import modeles.Personnage;
public class Sauvegarde {
public Labyrinthe labyrinthe() {
BufferedReader bfr= null;
BufferedReader bfrP=null;
BufferedReader bfrPe=null;
try {
bfr = new BufferedReader(new FileReader("C:\\Users\\theo\\Documents\\lab.json"));
bfrP= new BufferedReader(new FileReader("C:\\Users\\theo\\Documents\\perBor.json"));
bfrPe=new BufferedReader(new FileReader("C:\\Users\\theo\\Documents\\perAra.json"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Gson gson = new Gson();
Labyrinthe labyrithe = gson.fromJson(bfr, Labyrinthe.class);
Personnage per1=gson.fromJson(bfrP, Personnage.class);
Personnage per=gson.fromJson(bfrPe, Personnage.class);
labyrithe.getListePersonnage().add(per);
labyrithe.getListePersonnage().add(per1);
try {
labyrithe.adaptSalle();
} catch (Exception e) {
System.out.println(e);
e.printStackTrace();
}
return labyrithe;
}
public void save(Labyrinthe lab) throws IOException{
saveAra(lab.getListePersonnage().remove(0));
saveBor(lab.getListePersonnage().remove(0));
Gson gson =new Gson();
String str = gson.toJson(lab);
System.out.println(lab.getListePorte().toString());
try {
File file = new File("C:\\Users\\theo\\Documents\\lab.json");
file.createNewFile();
FileWriter writer = new FileWriter(file);
writer.write(str);
writer.close();
}catch (Exception e) {
e.printStackTrace();
}
}
public void saveBor(Personnage pers) throws IOException{
Gson gson=new Gson();
String str=gson.toJson(pers);
System.out.println(str);
try {
File file = new File("C:\\Users\\theo\\Documents\\perBor.json");
file.createNewFile();
FileWriter writer = new FileWriter(file);
writer.write(str);
writer.close();
}catch (Exception e) {
e.printStackTrace();
}
}
public void saveAra(Personnage pers) throws IOException{
Gson gson=new Gson();
String str=gson.toJson(pers);
System.out.println(str);
try {
File file = new File("C:\\Users\\theo\\Documents\\perAra.json");
file.createNewFile();
FileWriter writer = new FileWriter(file);
writer.write(str);
writer.close();
}catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,14 @@
package fonctionnement;
import java.io.IOException;
public class main {
public static void main(String[] args) throws IOException {
Menu menu = new Menu();
menu.menuJeu();
}
}

View File

@ -1,33 +0,0 @@
/**
*
*/
package gui;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.GridBagLayout;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
/**
* @author nicolas
*
*/
public class Background extends JPanel{
private ImageIcon image;
public Background(String path) {
super();
//this.setLayout(new FlowLayout());
this.image=new ImageIcon(path);
}
public void setBackground(ImageIcon back) {
this.image=back;
}
public void paintComponent(Graphics gr) {
super.paintComponent(gr);
gr.drawImage(image.getImage(),0,0,this);
}
}

View File

@ -1,30 +0,0 @@
/**
*
*/
package gui;
import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.SwingConstants;
/**
* @author nicolas
*
*/
public class Boutton extends JButton {
public Boutton(String txt) {
super(txt);
//this.setLayout(new FlowLayout());
setForeground(Color.WHITE);
setOpaque(true);
setContentAreaFilled(false);
setBorderPainted(true);
setFocusPainted(false);
setHorizontalAlignment(SwingConstants.CENTER);
setVerticalAlignment(SwingConstants.CENTER);
}
}

View File

@ -1,114 +0,0 @@
/**
*
*/
package gui;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import modeles.Labyrinthe;
import modeles.Menu;
import modeles.Salle;
/**
* @author nicolas
*
*/
public class JeuSalle extends JFrame implements KeyListener,ActionListener{
public int nb;
public Menu menu;
public Labyrinthe lab = null;
public JeuSalle() {
setTitle("Labyrinthe");
setSize(1200,600);
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
/*Méthode permettant d'écrire du texte dans la fenetre de jeu*/
public JPanel ecrire(String str) {
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
JLabel label = new JLabel(str);
panel.add(label);
this.setFocusable(true);
this.setContentPane(panel);
this.addKeyListener(this);
this.requestFocus();
this.setVisible(true);
return panel;
}
/* (non-Javadoc)
* @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent)
*/
@Override
public void keyPressed(KeyEvent e) {
}
/* (non-Javadoc)
* @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)
*/
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see java.awt.event.KeyListener#keyTyped(java.awt.event.KeyEvent)
Entrer du clavier
*/
@Override
public void keyTyped(KeyEvent e) {
nb = e.getKeyChar();
System.out.println(nb);
}
/* (non-Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
/*Méthode qui récupère les entrés de type int du clavier*/
public int toucheint() {
System.out.println("sortie"+nb);
return nb;
}
/*Méthode que permet de cacher un texte affiché dans la fenetre*/
public void cacher(JPanel panel) {
panel.setVisible(false);
}
/**
* @return the lab
*/
public Labyrinthe getLab() {
return lab;
}
/**
* @param lab the lab to set
*/
public void setLab(Labyrinthe lab) {
this.lab = lab;
}
}

View File

@ -4,30 +4,12 @@
package gui;
import java.awt.BorderLayout;
import java.awt.Color;
import gui.Boutton;
import modeles.Labyrinthe;
import modeles.Marche;
import modeles.Menu;
import modeles.Objet;
import modeles.Personnage;
import gui.Background;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GraphicsConfiguration;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.file.attribute.AclEntry.Builder;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
@ -39,97 +21,40 @@ import org.eclipse.swt.SWT;
* @author nicolas
*
*/
public class jeu extends JFrame implements ActionListener {
JButton continuer =new JButton("Continuer");
JButton nouvelle = new JButton("Nouvelle Partie");
public class jeu extends JFrame {
public JPanel panel;
public Menu menu;
public jeu() throws IOException {
public jeu() {
super();
build();
this.menu=new Menu();
}
public void build() throws IOException{
public void build() {
setTitle("Jeu");
setSize(593,283);
setSize(800,600);
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel center = new JPanel();
Dimension taille = new Dimension(200,200);
center.setPreferredSize(taille);
center.add(new JButton("Jouer"));
this.setLayout(new BorderLayout());
this.getContentPane().add(buildContentPane(), BorderLayout.NORTH);
this.getContentPane().add(center, BorderLayout.CENTER);
//Création du JLabel pour l'image
JLabel container = new JLabel(new ImageIcon(this.image()));
}
public JPanel buildContentPane() {
JPanel panel =new JPanel();
Dimension preferredSize = new Dimension(200,200);
panel.setLayout(new FlowLayout());
JLabel label = new JLabel("Jeu Dragon Donjon");
panel.add(label);
return panel;
//Création du layout des boutons
container.setLayout(new GridBagLayout());
}
nouvelle.addActionListener(this);
continuer.addActionListener(this);
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
container.add(nouvelle);
c.gridx = 1;
c.gridy=0;
container.add(continuer);
this.setContentPane(container);
this.setVisible(true);
}
public BufferedImage image() throws IOException {
BufferedImage image = ImageIO.read(new File("/home/nicolas/eclipse-workspace/Projet_Java/JAVA/PROJET-PMT_STRI1A/test.jpg"));
return image;
}
/* (non-Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
Récupération des évènements des boutons Nouvelle Partie et Contnuer
*/
@Override
public void actionPerformed(ActionEvent arg0) {
Object source=arg0.getSource();
choix(source);
}
/*Méthode de traitement des actions sur les boutons*/
public void choix(Object source) {
if(source==nouvelle) {
System.out.println("1");
//menu =new Menu();
//Création du Labyrinthe
Labyrinthe lab =new Labyrinthe();
//
this.menu.getJs().setLab(lab);
//Appel de la méthode menuSelection()
this.menu.menuSelection(this.menu.getJs().getLab());
}
if(source==continuer) {
System.out.println("2");
//menu = new Menu();
//recupMenu(menu);
//lab = menu.continuer();
//return lab;
}
}
public Menu getMenu() {
return menu;
}
}

View File

@ -4,13 +4,9 @@
package gui;
import java.awt.Dialog;
import java.io.IOException;
import javax.swing.SwingUtilities;
import modeles.Labyrinthe;
import modeles.Menu;
/**
* @author nicolas
*
@ -20,29 +16,12 @@ public class main {
/**
* @param args
*/
public jeu fenetre;
public static void main(String[] args) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(new Runnable(){
public void run(){
//On crée une nouvelle instance de notre JDialog
jeu fenetre = null;
try {
fenetre = new jeu();
//Menu menu =fenetre.glob;
/*if(fenetre.menu.getJs().getLab()!=null) {
System.out.println("passer");
fenetre.menu.menuSelection(fenetre.menu.getJs().getLab());
//Menu menu =fenetre.creersalle();
}*/
//fenetre.salle.ecrire(fenetre.menu.textePerso(fenetre.lab));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
jeu fenetre = new jeu();
fenetre.setVisible(true);//On la rend visible
}
});

View File

@ -6,7 +6,7 @@ import java.io.FileNotFoundException;
import java.io.FileReader;
import com.google.gson.Gson;
import labyrinthe.*;
import modeles.*;
public class Generateur {

View File

@ -1,5 +1,5 @@
package json;
import modeles.Salle;
import labyrinthe.Salle;
import com.google.gson.Gson;
public class gsonGenerator {

View File

@ -1 +0,0 @@
{"listePersonnage":[{"listepotion":[],"nom":"Aramis","pVieMax":10,"pVie":10,"pAttaque":1,"vivant":true},{"listepotion":[],"nom":"Boromis","pVieMax":8,"pVie":8,"pAttaque":2,"vivant":true}],"listeArme":[{"pArme":2,"nom":"Epee en bois","prix":5,"usure":10},{"pArme":4,"nom":"Epee en acier","prix":15,"usure":10},{"pArme":4,"nom":"Epee en acier solide","prix":25,"usure":20},{"pArme":7,"nom":"Epee de cristal","prix":30,"usure":5},{"pArme":10,"nom":"Lame Blanche","prix":200,"usure":30}],"listeArmure":[{"pArmure":5,"nom":"armure de cuir","prix":10,"usure":10},{"pArmure":2,"nom":"armure en papier","prix":5,"usure":5},{"pArmure":5,"nom":"armure de fer","prix":30,"usure":10},{"pArmure":8,"nom":"Le kevlar","prix":150,"usure":15}],"listePorte":[{"id":1,"ouvert":true,"salle1":{"coordonnees":{"key":0,"value":0},"sortie":false,"listePorte":[]},"salle2":{"coordonnees":{"key":1,"value":0},"sortie":false,"listePorte":[],"listeEnnemie":[5]}},{"id":1,"ouvert":true,"salle1":{"coordonnees":{"key":0,"value":0},"sortie":false,"listePorte":[]},"salle2":{"coordonnees":{"key":0,"value":1},"sortie":false,"listePorte":[],"listeEnnemie":[3,1]}},{"id":1,"ouvert":true,"salle1":{"coordonnees":{"key":1,"value":1},"sortie":false,"listePorte":[],"listeEnnemie":[]},"salle2":{"coordonnees":{"key":0,"value":1},"sortie":false,"listePorte":[],"listeEnnemie":[3,1]}},{"id":1,"ouvert":true,"salle1":{"coordonnees":{"key":2,"value":0},"sortie":false,"listePorte":[],"listeEnnemie":[4,0]},"salle2":{"coordonnees":{"key":1,"value":0},"sortie":false,"listePorte":[],"listeEnnemie":[5]}},{"id":1,"ouvert":true,"salle1":{"coordonnees":{"key":2,"value":0},"sortie":false,"listePorte":[],"listeEnnemie":[4,0]},"salle2":{"coordonnees":{"key":2,"value":1},"sortie":true,"listePorte":[],"listeEnnemie":[3,3]}},{"id":1,"ouvert":true,"salle1":{"coordonnees":{"key":2,"value":1},"sortie":true,"listePorte":[],"listeEnnemie":[3,3]},"salle2":{"coordonnees":{"key":1,"value":1},"sortie":false,"listePorte":[],"listeEnnemie":[]}}],"listeMonstre":[{"nom":"pantin en bois","pVieMax":5,"pVie":5,"pAttaque":1,"vivant":true},{"nom":"araignee geante agressive","pVieMax":7,"pVie":7,"pAttaque":5,"vivant":true},{"nom":"pantin de fer","pVieMax":40,"pVie":40,"pAttaque":1,"vivant":true},{"nom":"Golem de Jade","pVieMax":40,"pVie":40,"pAttaque":3,"vivant":true},{"nom":"Neltharion le Gardeterre","pVieMax":100,"pVie":100,"pAttaque":10,"vivant":true},{"nom":"Neltharion, le Destructeur","pVieMax":80,"pVie":80,"pAttaque":20,"vivant":true}]}

View File

@ -2,7 +2,7 @@ package json;
import modeles.Arme;
import modeles.Labyrinthe;
import labyrinthe.*;
import modeles.Monstre;
public class main {

View File

@ -0,0 +1,220 @@
/**
*
*/
package labyrinthe;
import modeles.*;
import java.util.*;
public class Labyrinthe {
protected List<Personnage> listePersonnage=new ArrayList<Personnage>();
protected List<Arme> listeArme= new ArrayList<Arme>();
protected List<Armure> listeArmure=new ArrayList<Armure>();
protected List<Porte> listePorte=new ArrayList<Porte>();
protected List<Monstre> listeMonstre=new ArrayList<Monstre>();
public Labyrinthe(int nb){
int nbSalle =nb;
Arme arme=new Arme("Epee en bois",25,10,2);
listeArme.add(arme);
Arme arme1=new Arme("Epee en acier",50,10,4);
listeArme.add(arme1);
Arme arme2=new Arme("Epee en acier solide",75,20,4);
listeArme.add(arme2);
Arme arme3=new Arme("Epee de cristal",80,5,7);
listeArme.add(arme3);
Arme arme4=new Arme("Lame Blanche",300,30,14);
listeArme.add(arme4);
Armure armure1=new Armure("armure de cuir",40,10,5);
listeArmure.add(armure1);
Armure armure=new Armure("armure en papier",20,5,2);
listeArmure.add(armure);
Armure armure2=new Armure("armure de fer",70,15,7);
listeArmure.add(armure2);
Armure armure3=new Armure("Le kevlar",230,20,10);
listeArmure.add(armure3);
Personnage perso=new Personnage("Aramis",10,1);
listePersonnage.add(perso);
Personnage perso2=new Personnage("Boromis",8,2);
listePersonnage.add(perso2);
Monstre mons = new Monstre("pantin en bois",5, 1);
this.listeMonstre.add(mons);
mons=new Monstre("araignee geante",7, 2);
this.listeMonstre.add(mons);
mons=new Monstre("Golem de Sable",20, 3);
this.listeMonstre.add(mons);
mons=new Monstre("Petit dragon",20,5);
this.listeMonstre.add(mons);
mons=new Monstre("Grand Dragon",40,5);
this.listeMonstre.add(mons);
mons=new Monstre("Chat sauvage",9, 1);
this.listeMonstre.add(mons);
mons= new Monstre("araignee geante agressive", 7, 5);
this.listeMonstre.add(mons);
mons=new Monstre("pantin de fer",20,1);
this.listeMonstre.add(mons);
mons = new Monstre("Golem de Jade",40, 3);
this.listeMonstre.add(mons);
mons= new Monstre("Neltharion le Gardeterre",100,10);
this.listeMonstre.add(mons);
mons = new Monstre("Neltharion, le Destructeur", 80,20);
this.listeMonstre.add(mons);
List<Salle> ListSalle=new ArrayList<Salle>();
Salle marche= new Salle(0,0, false,true);
for (Personnage p : this.listePersonnage)p.setSalle(marche);
ListSalle.add(marche);
List<Integer>table;
Salle salle;
Salle deRelais;
Porte porte;
boolean ok=true;
Random rd= new Random();
table= new ArrayList<Integer>();
table.add(0);
table.add(1);
Salle salle1=new Salle(0,1,false,table);
ListSalle.add(salle1);
table= new ArrayList<Integer>();
table.add(0);
table.add(1);
Porte porte1=new Porte(true,marche,salle1);
listePorte.add(porte1);
salle=new Salle(0,-1,false,table);
ListSalle.add(salle);
porte= new Porte(true, marche, salle);
listePorte.add(porte);
table= new ArrayList<Integer>();
table.add(0);
table.add(1);
Salle salle2=new Salle(1,0,false,table);
ListSalle.add(salle2);
Porte port2=new Porte(true,marche,salle2);
listePorte.add(port2);
for (int i = 0; i < nbSalle-4;i++) {
table= new ArrayList<Integer>();
for (int j = 0; j<rd.nextInt(4);j++) {
table.add(rd.nextInt(this.listeMonstre.size()-3));
}
deRelais=ListSalle.get(rd.nextInt(ListSalle.size()));
if(rd.nextInt(1)==0) {
salle=new Salle( deRelais.getCoordonnes().getKey()+puissance(-1, rd.nextInt(1)),deRelais.getCoordonnes().getValue() ,false,table);
} else {
salle=new Salle( deRelais.getCoordonnes().getKey(),deRelais.getCoordonnes().getValue()+puissance(-1, rd.nextInt(1)) ,false,table);
}
if (contents(salle,ListSalle)) {
nbSalle++;
break;
}
else {
ListSalle.add(salle);
porte=new Porte(false, deRelais, salle);
listePorte.add(porte);
}
}
while (ok) {
table= new ArrayList<Integer>();
for (int j = 0; j<2;j++) {
table.add(this.listeMonstre.size()-2+j);
}
deRelais=ListSalle.get(rd.nextInt(ListSalle.size()));
if(rd.nextInt(1)==0) {
salle=new Salle( deRelais.getCoordonnes().getKey()+puissance(-1, rd.nextInt(1)),deRelais.getCoordonnes().getValue() ,false,table);
} else {
salle=new Salle( deRelais.getCoordonnes().getKey(),deRelais.getCoordonnes().getValue()+puissance(-1, rd.nextInt(1)) ,false,table);
}
if (contents(salle,ListSalle)) ok = true;
else {
porte=new Porte(false, deRelais, salle);
listePorte.add(porte);
ok= false;
}
}
}
public List<Monstre> getListeMonstre() {
return listeMonstre;
}
public List<Personnage> getListePersonnage() {
return listePersonnage;
}
public List<Arme> getListeArme() {
return listeArme;
}
public List<Armure> getListeArmure() {
return listeArmure;
}
public List<Porte> getListePorte() {
return listePorte;
}
public static int puissance(int a, int p)
{
int result = 1;
for(int i = 0; i < p; i++)
{
result = result * a;
}
return result;
}
public void restore() {
Random rd =new Random();
for (Porte p : listePorte) {
if (p.getSalle1().estVide() && !p.getSalle1().isEstMarche()) {
for (int i =0; i<rd.nextInt(4);i++) {
p.getSalle1().getListeEnnemie().add(rd.nextInt(listeMonstre.size()-3));
}
}
if (p.getSalle1().estVide() && !p.getSalle1().isEstMarche()) {
for (int i =0; i<rd.nextInt(4);i++) {
p.getSalle1().getListeEnnemie().add(rd.nextInt(listeMonstre.size()-3));
}
}
}
}
public void adaptSalle() throws Exception {
List<Salle> listeSalle =new ArrayList<Salle>();
for (Porte po : listePorte) {
if (!contents(po.getSalle1(),listeSalle)) listeSalle.add(po.getSalle1());
if (!contents(po.getSalle2(),listeSalle)) listeSalle.add(po.getSalle2());
}
for (Personnage p : listePersonnage) {
int i =0;
while (!p.getSalle().equals(listeSalle.get(i++)) && i<listeSalle.size());
if (i-1>=listeSalle.size())throw new Exception("La salle du personnage n'existe pas ");
else {
System.out.println(this.getListePorte().toString());
p.seDeplacer(listeSalle.get(i-1));
}
}
}
public boolean contents(Salle s, List<Salle> ls) {
for (Salle p : ls) {
if(s.equals(p)) return true;
}
return false;
}
}

View File

@ -0,0 +1,60 @@
package labyrinthe;
/*
* @author flavien
*/
public class Porte {
private static int id =0;
private boolean ouvert;
private Salle salle1;
private Salle salle2;
public Porte(boolean ouvert, Salle salle,Salle salle2) {
super();
this.ouvert = ouvert;
this.salle1 = salle;
this.salle1.getListePorte().add(id);
this.salle2 = salle2;
this.salle2.getListePorte().add(id);
id++;
}
public Salle getSalle1() {
return salle1;
}
public Salle getSalle2() {
return salle2;
}
public boolean estOuverte() {
return ouvert;
}
public int getId() {
return this.id;
}
public void ouverture() {
this.ouvert= true;
}
public Salle prochainSaut(Salle s) {
if (s.equals(this.salle1)) {
return salle2;
} else return salle1;
}
@Override
public String toString() {
return "Porte [ouvert=" + ouvert + ", salle1=" + salle1 + ", salle2=" + salle2 + "]";
}
}

View File

@ -0,0 +1,95 @@
package labyrinthe;
import java.util.ArrayList;
import java.util.List;
import javafx.util.Pair;
import modeles.Arme;
import modeles.Armure;
public class Salle {
private Pair<Integer,Integer> coordonnees;
private boolean sortie;
private List<Integer> listePorte= new ArrayList<Integer>();
private List<Integer> listeEnnemie= new ArrayList<Integer>(); //indice de monstre
private boolean estMarche;
public Salle(int x, int y, boolean out,boolean marche) {
this.listeEnnemie=new ArrayList<Integer>();
this.coordonnees=new Pair<Integer,Integer>(x,y);
this.sortie=out;
this.estMarche=marche;
}
public Salle(int positionX, int positionY, boolean sortie, List<Integer> listeEnnemie) {
this.coordonnees=new Pair<Integer,Integer>(positionX,positionY);
this.sortie = sortie;
this.listeEnnemie = listeEnnemie;
this.estMarche=false;
}
public boolean isEstMarche() {
return estMarche;
}
public Pair<Integer,Integer> getCoordonnes() {
return this.coordonnees;
}
public boolean estSortie() {
return sortie;
}
public List<Integer> getListePorte() {
return this.listePorte;
}
public List<Integer> getListeEnnemie() {
return listeEnnemie;
}
public boolean equals(Object o) {
return (this.coordonnees.getKey()==((Salle)o).getCoordonnes().getKey() && this.coordonnees.getValue() ==((Salle)o).getCoordonnes().getValue());
}
public void cle(Labyrinthe lab) {
for (int i : listePorte ) lab.listePorte.get(i).ouverture();
}
public boolean estVide() {
return (listeEnnemie.size()==0);
}
public Salle findNextSalle(Pair<Integer,Integer> coordonnes,Labyrinthe lab) {
for (int porte : listePorte) {
if (lab.listePorte.get(porte).prochainSaut(this).coordonnees.equals(coordonnes)) return lab.listePorte.get(porte).prochainSaut(this);
}
return null;
}
public String creerObjetsAVendre(Labyrinthe lab) {
if (!estMarche)return "";
String listeSarme="";
String listeSarmure="";
String listeobjet="";
int i = 0;
int j =0;
for (Arme arme : lab.listeArme) listeSarme +=i++ +") "+ arme.getNom() + " au prix de : " + arme.getPrix()+" (dégat bonus : "+arme.getpArme()+" /durabilité : "+arme.getUsure()+" )\n";
for (Armure armure : lab.listeArmure) listeSarmure +=j++ +") "+ armure.getNom()+ " au prix de : " + armure.getPrix()+" (protection : "+armure.getpArmure()+" /durabilité : "+armure.getUsure()+") \n";
listeobjet = "Armes :\n" + listeSarme + "\nArmures :\n" + listeSarmure;
return listeobjet;
}
@Override
public String toString() {
return "Salle [coordonnees=" + coordonnees + ", sortie=" + sortie + ", listePorte=" + listePorte
+ ", listeEnnemie=" + listeEnnemie + ", estMarche=" + estMarche + "]";
}
}

View File

@ -24,7 +24,7 @@ public class Bourse extends Objet {
return "Bourse";
}
public int Achat(Objet o) { //commande pour v<EFBFBD>rifier si la personne peut acheter un objet et pour faire le d<EFBFBD>compte de la thunasse
public int Achat(Objet o) { //verifie que l'on peut acheter l'objet
if (o.getPrix() <= this.valeur) return (this.valeur=this.valeur-o.getPrix());
else {
int manque =o.getPrix()-this.valeur;
@ -32,10 +32,4 @@ public class Bourse extends Objet {
return -1;
}
}
public int fusionBourse(Bourse sacPiece) {
this.valeur += sacPiece.valeur;
return this.valeur;
}
}

View File

@ -1,5 +1,5 @@
package modeles;
import labyrinthe.*;
/**
* @author Nicolas
*
@ -20,6 +20,11 @@ public class EtreVivant {
* @param salle
* @param vivant
*/
public void soin() {
this.pVie=this.pVieMax;
}
public EtreVivant(String nom, int pVieMax, int pAttaque) {
super();
this.nom = nom;
@ -28,90 +33,94 @@ public class EtreVivant {
this.pAttaque = pAttaque;
this.vivant = true;
}
/**
* @return the nom
*/
public String getNom() {
return nom;
}
/**
* @param nom the nom to set
*/
public void setNom(String nom) {
this.nom = nom;
}
/**
* @return the pVieMax
*/
public int getpVieMax() {
return pVieMax;
}
/**
* @param pVieMax the pVieMax to set
*/
public void setpVieMax(int pVieMax) {
this.pVieMax = pVieMax;
}
/**
* @return the pVie
*/
public int getpVie() {
return pVie;
}
/**
* @param pVie the pVie to set
*/
public void setpVie(int pVie) {
this.pVie = pVie;
}
/**
* @return the pAttaque
*/
public int getpAttaque() {
return pAttaque;
}
/**
* @param pAttaque the pAttaque to set
*/
public void setpAttaque(int pAttaque) {
this.pAttaque = pAttaque;
}
/**
* @return the salle
*/
public Salle getSalle() {
return salle;
}
/**
* @param salle the salle to set
*/
public void setSalle(Salle salle) {
this.salle = salle;
public int getPvMax() {
return this.pVieMax;
}
/**
* @return the pVieMax
*/
public int getpVieMax() {
return pVieMax;
}
/**
* @return the vivant
*/
public boolean isVivant() {
return vivant;
}
/**
* @param nom the nom to set
*/
public void setNom(String nom) {
this.nom = nom;
}
/**
* @param pVieMax the pVieMax to set
*/
public void setpVieMax(int pVieMax) {
this.pVieMax = pVieMax;
}
/**
* @param pVie the pVie to set
*/
public void setpVie(int pVie) {
this.pVie = pVie;
}
/**
* @param pAttaque the pAttaque to set
*/
public void setpAttaque(int pAttaque) {
this.pAttaque = pAttaque;
}
/**
* @param salle the salle to set
*/
public void setSalle(Salle salle) {
this.salle = salle;
}
/**
* @param vivant the vivant to set
*/
public void setVivant(boolean vivant) {
this.vivant = vivant;
}
public int getPvMax() {
return this.pVieMax;
}
}
}

View File

@ -1,51 +0,0 @@
package modeles;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import com.google.gson.Gson;
public class Generateur {
public Labyrinthe labyrinthe() {
BufferedReader bfr= null;
try {
bfr = new BufferedReader(new FileReader("C:\\Users\\Nicolas\\eclipse-workspace\\Projet_Java\\JAVA\\PROJET-PMT_STRI1A\\src\\json\\lab.json"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//FileReader file = new FileReader(json);
Gson gson = new Gson();
//String str="{\"positionX\":0,\"positionY\":0,\"sortie\":false,\"monstre\":[{\"nom\":\"premier monstre\",\"pAttaque\":5}],\"porte\":[{\"ouvert\":true, \"position\":\"H\"}]}";
Labyrinthe labyrithe = gson.fromJson(bfr, Labyrinthe.class);
return labyrithe;
}
public void save(Labyrinthe lab) throws IOException{
Gson gson =new Gson();
String str = gson.toJson(lab);
System.out.println(str);
try {
File file = new File("C:\\Users\\Nicolas\\eclipse-workspace\\Projet_Java\\JAVA\\PROJET-PMT_STRI1A\\src\\json\\lab.json");
file.createNewFile();
FileWriter writer = new FileWriter(file);
writer.write(str);
writer.close();
//file.print(s);
}catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -1,114 +0,0 @@
/**
*
*/
package modeles;
import java.util.*;
public class Labyrinthe {
protected List<Personnage> listePersonnage=new ArrayList<Personnage>();
protected List<Arme> listeArme= new ArrayList<Arme>();
protected List<Armure> listeArmure=new ArrayList<Armure>();
public List<Porte> listePorte=new ArrayList<Porte>();
protected List<Monstre> listeMonstre=new ArrayList<Monstre>();
public Labyrinthe() {
/*switch (nInstance)
case 1 :
return Labyrinthe1();
break;
}*/
labyrinthe1();
}
public void labyrinthe1() {
Arme arme=new Arme("Epee en bois",5,10,2);
listeArme.add(arme);
Arme arme1=new Arme("Epee en acier",15,10,4);
listeArme.add(arme1);
Arme arme2=new Arme("Epee en acier solide",25,20,4);
listeArme.add(arme2);
Arme arme3=new Arme("Epee de cristal",30,5,7);
listeArme.add(arme3);
Arme arme4=new Arme("Lame Blanche",200,30,10);
listeArme.add(arme4);
Armure armure1=new Armure("armure de cuir",10,10,5);
listeArmure.add(armure1);
Armure armure=new Armure("armure en papier",5,5,2);
listeArmure.add(armure);
Armure armure2=new Armure("armure de fer",30,10,5);
listeArmure.add(armure2);
Armure armure3=new Armure("Le kevlar",150,15,8);
listeArmure.add(armure3);
Personnage perso=new Personnage("Aramis",10,1);
listePersonnage.add(perso);
Personnage perso2=new Personnage("Boromis",100,50);
listePersonnage.add(perso2);
Monstre mons = new Monstre("pantin en bois",5, 1);
Monstre mons2= new Monstre("araignee geante agressive", 7, 5);
Monstre mons3=new Monstre("pantin de fer",40,1);
Monstre mons4 = new Monstre("Golem de Jade",40, 3);
Monstre mons5 = new Monstre("Neltharion le Gardeterre",100,10);
Monstre mons6 = new Monstre("Neltharion, le Destructeur", 80,20);
this.listeMonstre.add(mons);
this.listeMonstre.add(mons2);
this.listeMonstre.add(mons3);
this.listeMonstre.add(mons4);
this.listeMonstre.add(mons5);
this.listeMonstre.add(mons6);
Marche marche = new Marche(null);
List<Integer>table=new ArrayList<Integer>();
Random rd= new Random();
for (int i = 0; i<rd.nextInt(this.listeMonstre.size());i++) {
table.add(rd.nextInt(this.listeMonstre.size()-2));
}
Salle salle1 = new Salle(1,0,false,table);
Porte po = new Porte(true,marche,salle1);
listePorte.add(po);
List<Integer>table2=new ArrayList<Integer>();
for (int i = 0; i<rd.nextInt(this.listeMonstre.size());i++) {
table2.add(rd.nextInt(this.listeMonstre.size()-2));
}
Salle salle2 = new Salle(0,1,false, table2);
Porte po2= new Porte(true,marche,salle2);
listePorte.add(po2);
List<Integer>table3=new ArrayList<Integer>();
for (int i = 0; i<rd.nextInt(this.listeMonstre.size());i++) {
table3.add(rd.nextInt(this.listeMonstre.size()-2));
}
Salle salle3 = new Salle(1,1,false, table3);
Porte po3= new Porte(true,salle3,salle2);
listePorte.add(po3);
List<Integer>table4=new ArrayList<Integer>();
for (int i = 0; i<rd.nextInt(this.listeMonstre.size());i++) {
table4.add(rd.nextInt(this.listeMonstre.size()-2));
}
Salle salle4 = new Salle(2,0,false, table4);
Porte po4= new Porte(true,salle4,salle1);
listePorte.add(po4);
List<Integer>table5=new ArrayList<Integer>();
for (int i = 0; i<2;i++) {
table5.add(listeMonstre.size()-1+i);
}
Salle salle5 = new Salle(2,1,true, table5);
Porte po5= new Porte(true,salle4,salle5);
listePorte.add(po5);
Porte po6= new Porte(true,salle5,salle3);
listePorte.add(po6);
}
}

View File

@ -1,37 +0,0 @@
/**
*
*/
package modeles;
import java.util.ArrayList;
import java.util.List;
/**
* @author flavien
*
*/
public class Marche extends Salle {
public Marche(List<Integer> listeEnnemie) {
super(0,0, false, listeEnnemie);
// TODO Auto-generated constructor stub
}
public String creerObjetsAVendre(Labyrinthe lab) {
String listeSarme="";
String listeSarmure="";
String listeobjet="<html>";
int i = 0;
int j =0;
for (Arme arme : lab.listeArme) listeSarme += "<br>" + i++ +") "+ arme.getNom() + " au prix de : " + arme.getPrix()+"</br>";
for (Armure armure : lab.listeArmure) listeSarmure += "<br>"+ j++ +") "+ armure.getNom()+ " au prix de : " + armure.getPrix()+"</br>";
listeobjet ="<html>" + "Armes :\n" + listeSarme +"<br></br>"+ "\nArmures :\n" + listeSarmure;
listeobjet=listeobjet+"</html>";
return listeobjet;
}
}

View File

@ -1,180 +0,0 @@
package modeles;
import gui.*;
import java.io.IOException;
import java.util.Random;
import java.awt.*;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Menu {
private JeuSalle js= new JeuSalle();
/**
* @return the js
*/
public String menuCombat(Monstre mons, Personnage perso, Labyrinthe lab) throws IOException {
int degat;
int reponse = 0;
js.ecrire("Un monstre du nom de "+mons.getNom()+" se présente devant vous et il est trés en colère :");
while (true){
System.out.println("\t - 1 attaquer\n\t - 2 Potion \n\t- 3 Fuir");
try{
reponse=Clavier.entrerClavierInt();
}catch (Exception e) {
System.in.read();
}
switch (reponse) {
case 1:
degat = perso.attaquer(mons);
System.out.println("Vous avez infligé "+degat+" à votre adversaire.");
if (!mons.isVivant()) {
perso.salle.cle(lab);
System.out.println(perso.remplirBourse());
return "Votre ennemie trépasse et vous obtenez la clé des portes de la salle.";
} else {
System.out.println("Au tour de votre adversaire. Il attaque préparez vous ! ");
System.out.println("il vous inflige "+ mons.attaquer(perso)+".");
if (!perso.isVivant()) {
return "C'est ainsi que vous trépassez sous les coups des ténèbres. Reposez vous héros... Vous avez l'<27>ternit<69>.";
}
else System.out.println("votre ennemie n'est pas encore à bout achever le !");
}
break;
case 2 :
if (!perso.getPotion().isEmpty()) {
perso.utiliser(perso.getPotion().remove(0));
System.out.println("Vous avez utilisé une potion. Votre vie est maintenant au maximum.");
} else {
System.out.println("Il ne vous reste plus de potion. Désolé.");
}
break;
case 3 :
System.out.println("Vous tentez de fuir.");
Random rd = new Random();
if (rd.nextInt(100)<50) {
return "Vous avez fuit.";
} else {
System.out.println("Ce fut un échec !");
}
}
}
}
public Labyrinthe menuStartGame() {
js.ecrire("L'Aventure vous appelle ! Le choix s'offre à vous, une histoire peut s'écrire une autre peut continuer :\n1) Nouvelle Partie\n2) Continuer votre progression");
switch(Clavier.entrerClavierInt()) {
case 1:
return new Labyrinthe();
case 2:
Generateur ge = new Generateur();
return ge.labyrinthe();
default :
return null;
}
}
public Personnage menuSelection(Labyrinthe lab) {
JPanel panel =js.ecrire("Bonjour Etranger, je suis le narrateur de votre histoire. Comment dois-je vous appeler ? ");
js.cacher(panel);
int i = 0;
for (Personnage per : lab.listePersonnage) {
js.ecrire(i++ + ") "+per.getNom());
}
Personnage pers;
try{
pers =lab.listePersonnage.get(js.toucheint());
}
catch(Exception e) {
js.ecrire("Le personnage dont vous me parlez n'existe pas.");
return null;
}
js.ecrire("Enchante de vous rencontrer "+pers.getNom()+".");
return pers;
}
public void deplacement(Personnage perso, Salle salle) {
System.out.println("Choisissez une direction:\n Z) Haut\n S) Bas\n D) Droite\n Q) Gauche");
switch(Clavier.entrerClavierString()) {
case "Z":
System.out.println("Vous allez vers le haut");
perso.seDeplacer(salle);
break;
case "S":
System.out.println("Vous allez vers le bas");
perso.seDeplacer(salle);
break;
case "D":
System.out.println("Vous allez vers le droite");
perso.seDeplacer(salle);
break;
case "Q":
System.out.println("Vous allez vers le gauche");
perso.seDeplacer(salle);
break;
}
}
public void Menu_Marche(Marche marche,Personnage perso, Labyrinthe lab) {
System.out.println("Voulez-vous acheter un objet:(votre bourse :"+perso.getValeurBourse() +")\n1) Oui\n2) Non");
switch(Clavier.entrerClavierString()) {
case "a":
System.out.println("Choisissez un objet:");
switch(Clavier.entrerClavierString()) {
case "1":
System.out.println(marche.creerObjetsAVendre(lab)+"\nVoulez-vous acheter une arme ? (oui/non)");
String selection=Clavier.entrerClavierString();
if(selection.compareTo("oui")>0) {
System.out.println("Quel num<75>ro pour l'arme ?");
int valeur = Clavier.entrerClavierInt();
if (perso.getBourse().Achat(lab.listeArme.get(valeur))>=0) perso.equiper(lab.listeArme.get(valeur));
} else {
System.out.println("Pourquoi Pas une armure alors ? (oui/non)");
selection=Clavier.entrerClavierString();
if(selection.compareTo("oui")>0) {
System.out.println("Quel num<75>ro pour l'armure ?");
int valeur = Clavier.entrerClavierInt();
if (perso.getBourse().Achat(lab.listeArmure.get(valeur))>=0) perso.equiper(lab.listeArmure.get(valeur));
}
}
break;
case "2":
System.out.println("Vous sortez du marche.");
return ;
}
}
}
public Labyrinthe nouvellePartie() {
System.out.println("Nouvelle partie!");
return new Labyrinthe();
}
public Labyrinthe continuer() {
System.out.println("Continuer");
Generateur ge = new Generateur();
return ge.labyrinthe();
}
public String textePerso(Labyrinthe lab) {
String str ="<html>";
str = str + "<br>Bonjour Etranger, je suis le narrateur de votre histoire. Comment dois-je vous appeler ? </br>";
int i = 0;
for (Personnage per : lab.listePersonnage) {
str =str + "<br>" + (i++ + ") "+per.getNom())+"</br>";
}
str=str+"</html>";
return str;
}
public JeuSalle getJs() {
return js;
}
}

View File

@ -2,7 +2,7 @@
*
*/
package modeles;
import labyrinthe.*;
/**
* @author Nicolas
*
@ -18,9 +18,13 @@ public class Monstre extends EtreVivant {
}
public int attaquer(Personnage def) {
public int attaquer(Personnage def,Labyrinthe lab) {
int pAttaqueLoc;
if (def.getArmure()!=null) pAttaqueLoc=this.getpAttaque()-(def.getArmure().getpArmure());
if (def.getArmure()>=0) {
lab.getListeArmure().get(def.getArmure()).utilisation();
pAttaqueLoc=this.getpAttaque()-(lab.getListeArmure().get(def.getArmure()).getpArmure());
}
else pAttaqueLoc=this.getpAttaque();
def.pVie-=pAttaqueLoc;
if (def.pVie<=0)def.setVivant(false);

View File

@ -28,7 +28,7 @@ public abstract class Objet {
public void utilisation() { // diminue la résistance de l'objet
this.usure--;
if (this.usure == 0) System.out.println(this.nom+"s'est cassée !");
if (this.usure == 0) System.out.println("\n\noh non ! "+this.nom+" s'est cassée !\n\n");
}
public abstract String getType();

View File

@ -1,14 +1,14 @@
package modeles;
import labyrinthe.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Personnage extends EtreVivant {
private Arme arme;
private Armure armure;
private int arme =-1;
private int armure=-1;
private Bourse bourse;
private List<Potion> listepotion= new ArrayList<Potion>();
@ -17,13 +17,38 @@ public class Personnage extends EtreVivant {
this.bourse=new Bourse(0);
}
public void equiper(Arme arme) {
arme.setProprietaire(this);
this.arme=arme;
/**
* @return the armure
*/
public int getArmure() {
return armure;
}
public void equiper(Armure armure) {
armure.setProprietaire(this);
this.armure=armure;
public Bourse getBourse() {
return this.bourse;
}
public List<Potion> getPotion() {
return this.listepotion;
}
public int getValeurBourse() {
return this.getBourse().getValeur();
}
/**
* @return the arme
*/
public int getArme() {
return arme;
}
public void equiper(Arme arme,Labyrinthe lab) {
this.arme=lab.getListeArme().indexOf(arme);
}
public void equiper(Armure armure,Labyrinthe lab) {
this.armure=lab.getListeArmure().indexOf(armure);
}
public void utiliser(Potion potion) {
@ -34,28 +59,17 @@ public void equiper(Armure armure) {
this.salle=salle;
}
public void allerMarche(Salle marche){
this.salle=marche;
}
public List<Potion> getPotion() {
return this.listepotion;
}
public void gagnerUnePotion() {
Potion potion=new Potion(100);
listepotion.add(potion);
}
public void soin() {
this.pVie=this.pVieMax;
}
public int attaquer(Monstre monstre) {
if(arme!=null) {
monstre.pVie=monstre.pVie-(arme.getpArme()+getpAttaque());
public int attaquer(Monstre monstre,Labyrinthe lab) {
if(arme>=0) {
lab.getListeArme().get(arme).utilisation();
monstre.pVie=monstre.pVie-(lab.getListeArme().get(arme).getpArme()+getpAttaque());
if (monstre.pVie<=0)monstre.setVivant(false);
return arme.getpArme()+getpAttaque();
return lab.getListeArme().get(arme).getpArme()+getpAttaque();
}
else {
monstre.pVie=monstre.pVie-getpAttaque();
@ -64,38 +78,15 @@ public void equiper(Armure armure) {
}
}
public Bourse getBourse() {
return this.bourse;
}
public int getValeurBourse() {
return this.getBourse().getValeur();
}
/**
* @return the arme
*/
public Arme getArme() {
return arme;
}
public String remplirBourse() {
Random rd = new Random();
int piece = rd.nextInt(20);
//this.bourse.fusionBourse(new Bourse(rd.nextInt(20)));
this.bourse.setValeur(this.bourse.getValeur()+piece);
String str="Vous avez gagnez une bourse. Vous comptez vos piéces... Genial !! Vous avez désormais ".concat(String.valueOf(this.getValeurBourse()).concat(" pi<70>ces d'argent !"));
System.out.println("bourse:"+this.bourse.getValeur());
this.bourse.setValeur(this.bourse.getValeur()+rd.nextInt(20));
String str="Vous avez gagnez une bourse. Vous comptez vos pieces... Genial !! Vous avez desormais "+this.getValeurBourse()+" pieces d'argent !";
return str;
}
/**
* @return the armure
*/
public Armure getArmure() {
return armure;
}
public void soin(int heal) {
if (pVie+heal > pVieMax)pVie=pVieMax;
else pVie+=heal;

View File

@ -1,53 +0,0 @@
package modeles;
/*
* @author flavien
*/
public class Porte {
private static int id =0;
private boolean ouvert;
private Salle salle1;
private Salle salle2;
public Porte(boolean ouvert, Salle salle,Salle salle2) {
super();
this.ouvert = ouvert;
this.salle1 = salle;
this.salle1.getListePorte().add(this.id);
this.salle2 = salle2;
this.salle2.getListePorte().add(this.id);
this.id++;
}
public Salle getSalle1() {
return salle1;
}
public Salle getSalle2() {
return salle2;
}
public boolean estOuverte() {
return ouvert;
}
public void ouverture() {
this.ouvert= true;
}
public Salle prochainSaut(Salle s) {
if (s==this.salle1) {
return salle2;
} else return salle1;
}
public int getId() {
return this.id;
}
}

View File

@ -1,55 +0,0 @@
package modeles;
import java.util.ArrayList;
import java.util.List;
//import javafx.util.Pair;
import org.javatuples.*;
public class Salle {
private Pair<Integer,Integer> coordonnees;
private boolean sortie;
private List<Integer> listePorte= new ArrayList<Integer>();
private List<Integer> listeEnnemie= new ArrayList<Integer>(); //indice de monstre
public Salle(int x, int y, boolean out) {
this.coordonnees=new Pair<Integer,Integer>(x,y);
this.sortie=out;
}
public List<Integer> getListeEnnemie() {
return listeEnnemie;
}
public Salle(int positionX, int positionY, boolean sortie, List<Integer> listeEnnemie) {
this.coordonnees=new Pair<Integer,Integer>(positionX,positionY);
this.sortie = sortie;
this.listeEnnemie = listeEnnemie;
}
public String getType(){
return "salle";
}
public Pair<Integer,Integer> getCoordonnes() {
return this.coordonnees;
}
public boolean estSortie() {
return sortie;
}
public void cle(Labyrinthe lab) {
//if (listeEnnemie.isEmpty()=null) {
for (int i : listePorte ) lab.listePorte.get(i).ouverture();
//}
}
public boolean estVide() {
return listeEnnemie.isEmpty();
}
public List<Integer> getListePorte() {
return this.listePorte;
}
}

View File

@ -1,31 +0,0 @@
package modeles;
import java.io.IOException;
public class main {
public static void main(String[] args) throws IOException {
Menu menu = new Menu();
Labyrinthe lab=menu.menuStartGame();
Marche marche= (Marche) lab.listePorte.get(0).getSalle1();
System.out.println(marche.creerObjetsAVendre(lab));
Personnage perso = menu.menuSelection(lab);
perso.setSalle(lab.listePorte.get(0).getSalle1());
Salle next =lab.listePorte.get(perso.getSalle().getListePorte().get(0)).prochainSaut(perso.getSalle());
System.out.println(menu.menuCombat(lab.listeMonstre.get(next.getListeEnnemie().get(0)), perso, lab));
perso.setSalle(next);
menu.deplacement(perso,next);
System.out.println("le personnage à bouger");
//Clavier.entrerClavierInt();
//menu.menuCombat(lab.listeMonstre.get(0), lab.listePersonnage.get(0), lab);
//menu.menuSelection(lab);
}
}

View File

@ -1,42 +0,0 @@
package modeles;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class sauvegarde {
public void enregistrerPersonnage(Labyrinthe lab) {
try {
File f= new File("./personnage.json");
f.createNewFile();
FileWriter fw= new FileWriter(f,true);
for (int i =0; i<lab.listePersonnage.size();i++) {
fw.write("{\n\t \"nom\" : \""+lab.listePersonnage.get(i).getNom()+"\" ,"
+ "\n\t \"pVieMax\" : \""+lab.listePersonnage.get(i).getPvMax()
+"\" ,\n\t \"pVie\" : \""+lab.listePersonnage.get(i).getpVie()
+"\" ,\n\t \"pAttaque\" : \""+lab.listePersonnage.get(i).getpAttaque()
//+"\" ,\n\t \"salle\" : \""+lab.listePersonnage.get(i).getSalle().getPositionX()+" "+lab.listePersonnage.get(i).getSalle().getPositionY() /*attention pour la r<>cup<75>ration de sauvegarde*/
+"\" ,\n\t \"vivant\" : \""+lab.listePersonnage.get(i).isVivant() +"\n\t \"arme\" : \""+lab.listePersonnage.get(i).getArme().getNom()
+"\" ,\n\t \"armure\" : \""+lab.listePersonnage.get(i).getArmure().getNom() +"\n\t \"bourse\" : \""+lab.listePersonnage.get(i).getBourse().getValeur()+"\n}"); /* attention pour la r<>cup<75>ration de donn<6E>e */
}
fw.flush();
fw.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
/*
public void enregistrerLabyrinthe(Labyrinthe lab) { // <EFBFBD> faire
try {
File f = new File ("./labyrinthe.json");
f.createNewFile();
FileWriter fw= new FileWriter(f,true);
for(int i = 0; i<lab.listeSalle.size();i++) {
fw.write("{\n\t [ \n\t{\n\t ");
}
}
}
*/
}

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB