Skip to content

Commit

Permalink
Etage Strategy
Browse files Browse the repository at this point in the history
  • Loading branch information
QuentinBeauchet committed Mar 21, 2021
1 parent 91cebe7 commit 0daf866
Show file tree
Hide file tree
Showing 14 changed files with 157 additions and 97 deletions.
1 change: 1 addition & 0 deletions src/main/java/Model/Map/Cell.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import Model.Utils.Affichage;
import Model.Entitys.Entity;
import Model.Utils.Procedure;

public class Cell{
public enum CellType {
Expand Down
63 changes: 14 additions & 49 deletions src/main/java/Model/Map/Etage.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

import Exceptions.CollisionRoom;
import Model.Entitys.Entity;
import Model.Map.Etage_Strategy.EtageStrategy;
import Model.Utils.Affichage;
import Model.Utils.Position;
import Model.Utils.Procedure;
Expand All @@ -17,13 +18,20 @@ public class Etage {
public ArrayList<ArrayList<Cell>> Cells;
protected ArrayList<Room> Rooms = new ArrayList<>();
protected ArrayList<Entity> Entitys = new ArrayList<>();
private EtageStrategy strategy;

public Etage(int Width, int Heigth) {
protected Etage(int Width, int Heigth) {
this.Width = Width;
this.Heigth = Heigth;
fillMap(new Cell(false,Cell.CellType.VOID));
}

public Etage(int Width, int Heigth, EtageStrategy strategy) {
this(Width,Heigth);
this.strategy=strategy;
strategy.composeEtage(this);
}

public void setCells(ArrayList<ArrayList<Cell>> cells) {
Cells = cells;
}
Expand Down Expand Up @@ -75,7 +83,7 @@ public void set(int x, int y, Cell c) {
}

public Etage copyOf(){
Etage etage = new Etage(getWidth(), getHeigth());
Etage etage = new Etage(getWidth(), getHeigth(),getStrategy());
for (int y = 0; y < etage.getHeigth(); y++) {
for (int x = 0; x < etage.getWidth(); x++) {
etage.Cells.get(y).set(x,get(x,y).copyOf());
Expand All @@ -94,55 +102,12 @@ public int getHeigth() {
return Heigth;
}

public ArrayList<Room> getRooms() {
return Rooms;
public EtageStrategy getStrategy(){
return strategy;
}

public void RoomFusion(){
//Trace du chemin
for (int i = 0; i < getRooms().size()-1; i++) {
Position pos1= Procedure.getRandomPosition(getRooms().get(i));
Position pos2=Procedure.getRandomPosition(getRooms().get(i+1));
Position milieu = new Position((pos1.getX() + pos2.getX()) / 2, (pos1.getY() + pos2.getY()) / 2);
//ligne(pos1, milieu, Cell.CellType.NORMAL);
//ligne(milieu, pos2, Cell.CellType.NORMAL);
Tools.ligne(this, pos1, pos2, Cell.CellType.NORMAL,Procedure.getRandomInt(6,0));
System.out.println(this);
}

//Ajout des murs aux chemins
for (int y = 0; y < getHeigth(); y++) {
for (int x = 0; x < getWidth(); x++) {
Position pos=new Position(x, y);
if (get(pos).getType().equals(Cell.CellType.VOID)) {
ArrayList<Position> voisins = pos.voisins(this);
for (Position p : voisins) {
if (get(p).getType().equals(Cell.CellType.NORMAL)) {
get(x,y).updateCell(false, Cell.CellType.BORDER);
}
}
}
}
}
//Suppression des murs inutiles
for (int y = 0; y < getHeigth(); y++) {
for (int x = 0; x < getWidth(); x++) {
Position pos=new Position(x, y);
ArrayList<Position> voisins = pos.voisins(this);
if(voisins.size()>6){
boolean isUseless=true;
for(Position p : voisins){
if(get(p).getType().equals(Cell.CellType.VOID)){
isUseless=false;
break;
}
}
if(isUseless){
get(pos).updateCell(true, Cell.CellType.NORMAL);
}
}
}
}
public ArrayList<Room> getRooms() {
return Rooms;
}

}
60 changes: 60 additions & 0 deletions src/main/java/Model/Map/Etage_Strategy/EtageStrategy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package Model.Map.Etage_Strategy;

import Model.Map.Cell;
import Model.Map.Etage;
import Model.Utils.Position;
import Model.Utils.Procedure;
import Model.Utils.Tools;

import java.util.ArrayList;

public abstract class EtageStrategy {

public abstract void composeEtage(Etage etage);

protected void RoomFusion(Etage etage){
//Trace du chemin
for (int i = 0; i < etage.getRooms().size()-1; i++) {
Position pos1= Procedure.getRandomPosition(etage.getRooms().get(i));
Position pos2= Procedure.getRandomPosition(etage.getRooms().get(i+1));
Tools.ligne(etage, pos1, pos2, Cell.CellType.NORMAL,Procedure.getRandomInt(6,0));
}

//Ajout des murs aux chemins
for (int y = 0; y < etage.getHeigth(); y++) {
for (int x = 0; x < etage.getWidth(); x++) {
Position pos=new Position(x, y);
if (etage.get(pos).getType().equals(Cell.CellType.VOID)) {
ArrayList<Position> voisins = pos.voisins(etage);
for (Position p : voisins) {
if (etage.get(p).getType().equals(Cell.CellType.NORMAL)) {
etage.get(x,y).updateCell(false, Cell.CellType.BORDER);
}
}
}
}
}
//Suppression des murs inutiles
for (int y = 0; y < etage.getHeigth(); y++) {
for (int x = 0; x < etage.getWidth(); x++) {
Position pos=new Position(x, y);
ArrayList<Position> voisins = pos.voisins(etage);
if(voisins.size()>6){
boolean isUseless=true;
for(Position p : voisins){
if(etage.get(p).getType().equals(Cell.CellType.VOID)){
isUseless=false;
break;
}
}
if(isUseless){
etage.get(pos).updateCell(true, Cell.CellType.NORMAL);
}
}
}
}
}

public abstract int getNbrMaxRoom();

}
36 changes: 36 additions & 0 deletions src/main/java/Model/Map/Etage_Strategy/NormalEtageStrategy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package Model.Map.Etage_Strategy;

import Model.Map.Cell;
import Model.Map.Etage;
import Model.Map.RoomFactory;
import Model.Utils.Position;
import Model.Utils.Procedure;
import Model.Utils.Tools;

import java.util.ArrayList;

public class NormalEtageStrategy extends EtageStrategy{


@Override
public void composeEtage(Etage etage) {
Procedure.setRandomRooms(etage, this, RoomFactory.roomType.NORMAL);
RoomFusion(etage);
Procedure.setRandomChest(etage,3);
Procedure.setRandomUPnDOWN(etage);
Position accesibleRandomPosition = Procedure.getAccesibleRandomPosition(false, etage);
etage.get(accesibleRandomPosition).updateCell(true, Cell.CellType.TRAP_ROOM);
Procedure.setRandomMob(etage);
}

@Override
public void RoomFusion(Etage etage) {
super.RoomFusion(etage);
}

@Override
public int getNbrMaxRoom() {
return 8;
}

}
25 changes: 25 additions & 0 deletions src/main/java/Model/Map/Etage_Strategy/TrapEtageStrategy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package Model.Map.Etage_Strategy;

import Model.Map.Etage;
import Model.Map.RoomFactory;
import Model.Utils.Procedure;

public class TrapEtageStrategy extends EtageStrategy{
@Override
public void composeEtage(Etage etage) {
Procedure.setRandomRooms(etage,this, RoomFactory.roomType.TRAP);
RoomFusion(etage);
Procedure.setRandomUP(etage);
Procedure.setRandomMob(etage);
}

@Override
public void RoomFusion(Etage etage) {
super.RoomFusion(etage);
}

@Override
public int getNbrMaxRoom() {
return 3;
}
}
11 changes: 5 additions & 6 deletions src/main/java/Model/Map/Map.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package Model.Map;

import Model.Entitys.BasicPlayer;
import Model.Map.Etage_Strategy.NormalEtageStrategy;
import Model.Map.Etage_Strategy.TrapEtageStrategy;
import Model.Utils.Position;
import Model.Utils.Procedure;

Expand All @@ -14,8 +16,7 @@ public class Map {
private final BasicPlayer player;

public Map(){
Etage etage=new Etage(MapWidth,MapHeigth);
Procedure.BasicEtage(etage);
Etage etage=new Etage(MapWidth,MapHeigth, new NormalEtageStrategy());
etages.add(etage);
Position pos = Procedure.getAccesibleRandomPosition(true,etage);
player=new BasicPlayer(etage,pos);
Expand All @@ -38,8 +39,7 @@ public void DOWN(){
Etage etage;
int currentIndex = getIndexCurrent();
if(currentIndex == etages.size()-1){
etage=new Etage(MapWidth,MapHeigth);
Procedure.BasicEtage(etage);
etage=new Etage(MapWidth,MapHeigth, new NormalEtageStrategy());
//etage.addRoom(Procedure.RandomRoomType(new RoomFactory()),new Position(etage.getWidth()/2,etage.getHeigth()/2));
etages.add(etage);
}
Expand Down Expand Up @@ -68,8 +68,7 @@ public void UP(){
}

public void TRAP_ROOM(){
Etage etage = new Etage(MapWidth,MapHeigth);
Procedure.TrapEtage(etage);
Etage etage = new Etage(MapWidth,MapHeigth, new TrapEtageStrategy());
Position pos = Procedure.getAccesibleRandomPosition(true,etage);
getPlayer().update(etage,pos);
inTemporaryEtage=true;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/Model/Map/Room.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package Model.Map;

import Model.Utils.Position;
import Model.Map.Strategy.RoomStrategy;
import Model.Map.Room_Strategy.RoomStrategy;

public class Room extends Etage implements Comparable<Room> {
private Position AbsolutePos=null;
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/Model/Map/RoomFactory.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package Model.Map;

import Model.Map.Strategy.MarchandRoomStrategy;
import Model.Map.Strategy.NormalRoomStrategy;
import Model.Map.Strategy.TresorRoomStrategy;
import Model.Map.Room_Strategy.MarchandRoomStrategy;
import Model.Map.Room_Strategy.NormalRoomStrategy;
import Model.Map.Room_Strategy.TresorRoomStrategy;
import Model.Utils.Procedure;

public class RoomFactory {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package Model.Map.Strategy;
package Model.Map.Room_Strategy;

import Model.Map.Etage;
import Model.Map.Room;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package Model.Map.Strategy;
package Model.Map.Room_Strategy;

import Model.Map.Cell;
import Model.Map.Etage;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package Model.Map.Strategy;
package Model.Map.Room_Strategy;


import Model.Map.Etage;
Expand All @@ -18,12 +18,12 @@ public void composeRoom(Room r) {

@Override
public boolean noCollision(Etage etage, Room room, Position pos) {
return super.noCollision(etage, room, pos,0);
return super.noCollision(etage, room, pos,7);
}

@Override
public int getNbrMaxRoom() {
return 8;
return 4;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package Model.Map.Strategy;
package Model.Map.Room_Strategy;

import Model.Map.Cell;
import Model.Map.Etage;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package Model.Map.Strategy;
package Model.Map.Room_Strategy;

import Model.Map.Cell;
import Model.Map.Etage;
Expand Down
Loading

0 comments on commit 0daf866

Please sign in to comment.