201 lines
5.4 KiB
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;
|
|
}
|
|
}
|