Projet_JAVA_PMT_STRI1A/JAVA/PROJET-PMT_STRI1A/src/labyrinthe/Labyrinthe.java

201 lines
5.4 KiB
Java

/**
*
*/
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,15,8);
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);
Marche marche = new Marche();
List<Salle> ListSalle=new ArrayList<Salle>();
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().getType().contentEquals("Marche")) {
for (int i =0; i<rd.nextInt(4);i++) {
p.getSalle1().getListeEnnemie().add(rd.nextInt(listeMonstre.size()-3));
}
}
if (p.getSalle1().estVide() && !p.getSalle1().getType().contentEquals("Marche")) {
for (int i =0; i<rd.nextInt(4);i++) {
p.getSalle1().getListeEnnemie().add(rd.nextInt(listeMonstre.size()-3));
}
}
}
}
public boolean contents(Salle s, List<Salle> ls) {
for (Salle p : ls) {
if(s.equals(p)) return true;
}
return false;
}
}