Fix Git add files
This commit is contained in:
parent
f4477ac1e0
commit
87d4b6ca39
@ -0,0 +1,42 @@
|
|||||||
|
package fr.lnl.game.server.games.grid.build;
|
||||||
|
|
||||||
|
import fr.lnl.game.server.games.grid.Grid;
|
||||||
|
|
||||||
|
public abstract class AbstractBuildStrategy implements BuildStrategy{
|
||||||
|
|
||||||
|
private final float WALL_PROBABILITY, ENERGY_PROBABILITY;
|
||||||
|
private final Grid GRID;
|
||||||
|
|
||||||
|
public AbstractBuildStrategy(Grid grid, float wallProbability, float energyProbability){
|
||||||
|
this.GRID = grid;
|
||||||
|
this.WALL_PROBABILITY = wallProbability;
|
||||||
|
this.ENERGY_PROBABILITY = energyProbability;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void build() {
|
||||||
|
initGrid();
|
||||||
|
initPlaceInternWall(WALL_PROBABILITY);
|
||||||
|
initPlaceEnergyBall(ENERGY_PROBABILITY);
|
||||||
|
}
|
||||||
|
|
||||||
|
private float getEnergyProbability() {
|
||||||
|
return ENERGY_PROBABILITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
private float getWallProbability() {
|
||||||
|
return WALL_PROBABILITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Grid getGrid() {
|
||||||
|
return GRID;
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract void initGrid();
|
||||||
|
abstract void initPlaceEnergyBall(float probability);
|
||||||
|
abstract void initPlaceInternWall(float probability);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package fr.lnl.game.server.games.grid.build;
|
||||||
|
|
||||||
|
import fr.lnl.game.server.games.grid.Grid;
|
||||||
|
|
||||||
|
public interface BuildStrategy {
|
||||||
|
|
||||||
|
void build();
|
||||||
|
void initPlacePlayers();
|
||||||
|
Grid getGrid();
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,117 @@
|
|||||||
|
package fr.lnl.game.server.games.grid.build;
|
||||||
|
|
||||||
|
import fr.lnl.game.server.games.grid.Grid;
|
||||||
|
import fr.lnl.game.server.games.grid.elements.AbstractBox;
|
||||||
|
import fr.lnl.game.server.games.grid.elements.Box;
|
||||||
|
import fr.lnl.game.server.games.grid.elements.EnergyBall;
|
||||||
|
import fr.lnl.game.server.games.grid.elements.Wall;
|
||||||
|
import fr.lnl.game.server.games.player.Player;
|
||||||
|
import fr.lnl.game.server.utils.Pair;
|
||||||
|
import fr.lnl.game.server.utils.Point;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class LockStrategy extends AbstractBuildStrategy{
|
||||||
|
public LockStrategy(Grid grid, float wallProbability, float energyProbability) {
|
||||||
|
super(grid, wallProbability, energyProbability);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void initGrid() {
|
||||||
|
for (int i = 0; i < getGrid().getRow(); i++) {
|
||||||
|
for (int j = 0; j < getGrid().getColumn(); j++) {
|
||||||
|
Box box;
|
||||||
|
if (i == 0 && j == 0) {
|
||||||
|
box = new Wall(i, j);
|
||||||
|
} else if (i == 0 && j == getGrid().getColumn()-1) {
|
||||||
|
box = new Wall(i, j);
|
||||||
|
} else if (i == getGrid().getRow()-1 && j == 0) {
|
||||||
|
box = new Wall(i, j);
|
||||||
|
} else if (i == getGrid().getRow()-1 && j == getGrid().getColumn()-1) {
|
||||||
|
box = new Wall(i, j);
|
||||||
|
} else if (i == 0) {
|
||||||
|
box = new Wall(i, j);
|
||||||
|
} else if (i == getGrid().getRow()-1) {
|
||||||
|
box = new Wall(i, j);
|
||||||
|
} else if (j == 0) {
|
||||||
|
box = new Wall(i, j);
|
||||||
|
} else if (j == getGrid().getColumn()-1) {
|
||||||
|
box = new Wall(i, j);
|
||||||
|
} else {
|
||||||
|
box = null;
|
||||||
|
}
|
||||||
|
getGrid().getBoard().put(new Point(i,j), new Pair<>(null,box));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void initPlaceEnergyBall(float probability) {
|
||||||
|
for (int i = 1; i < getGrid().getRow() - 1; i++) {
|
||||||
|
for (int j = 1; j < getGrid().getColumn() - 1; j++) {
|
||||||
|
if(Math.random() >= probability){
|
||||||
|
Point point = new Point(i,j);
|
||||||
|
if(!(getGrid().getBoard().get(point).getB() instanceof Wall)){
|
||||||
|
getGrid().getBoard().get(point).setB(new EnergyBall());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void initPlaceInternWall(float probability) {
|
||||||
|
for (int i = 1; i < getGrid().getRow() - 1; i++) {
|
||||||
|
for (int j = 1; j < getGrid().getColumn() - 1; j++) {
|
||||||
|
if(Math.random() >= probability){
|
||||||
|
Point point = new Point(i,j);
|
||||||
|
if(getIllusionNumberWallNeighbour(point) <= 3){
|
||||||
|
getGrid().getBoard().get(point).setB(new Wall(i,j));
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
getGrid().getBoard().get(point).setB(new AbstractBox());
|
||||||
|
getGrid().getBoard().get(point).getB().setLock(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initPlacePlayers() {
|
||||||
|
Random random = new Random();
|
||||||
|
Box boxTargeted;
|
||||||
|
Player playerTargeted;
|
||||||
|
Point point;
|
||||||
|
for (Player player: getGrid().getPlayers()) {
|
||||||
|
do{
|
||||||
|
int i = random.nextInt(1,getGrid().getRow() - 1);
|
||||||
|
int j = random.nextInt(1,getGrid().getColumn() - 1);
|
||||||
|
point = new Point(i,j);
|
||||||
|
Pair<Player,Box> pairTargeted = getGrid().getBoard().get(point);
|
||||||
|
boxTargeted = pairTargeted.getB();
|
||||||
|
playerTargeted = pairTargeted.getA();
|
||||||
|
}while(playerTargeted != null || !getGrid().isNeutralBox(boxTargeted));
|
||||||
|
getGrid().getBoard().get(point).setA(player);
|
||||||
|
player.setPosition(point);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getIllusionNumberWallNeighbour(Point point){
|
||||||
|
int countWall = 0;
|
||||||
|
for (int deltaRow = -1; deltaRow <= 1; deltaRow++){
|
||||||
|
for (int deltaColomn = -1; deltaColomn <= 1; deltaColomn++) {
|
||||||
|
Point neighbour = new Point(point.getA() + deltaRow, point.getB() + deltaColomn);
|
||||||
|
if (getGrid().boardPositionIsValid(neighbour)) {
|
||||||
|
Box box = getGrid().getBoard().get(neighbour).getB();
|
||||||
|
if (box != null) {
|
||||||
|
if (box instanceof Wall || box.isLock()) {
|
||||||
|
countWall++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return countWall;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user