Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package prison.ga;
- import prison.domain.*;
- import java.util.ArrayList;
- import java.util.Random;
- public class Data {
- public Prison prison;
- public Data() {
- initialize();
- }
- private Data initialize() {
- Prison prison = generatePrisonWithCellsAndMonitoringRoom();
- return this;
- }
- private static PrisonCell generatePrisonCell(PrisonCell prisonCell){
- int width = prisonCell.bottomRightCornerNodeX - prisonCell.bottomLeftCornerNodeX;
- int height = prisonCell.bottomRightCornerNodeY - prisonCell.bottomRightCornerNodeY;
- int size = width*height;
- int capacity = size/4;
- return prisonCell;
- }
- public static Prison generatePrisonWithCellsAndMonitoringRoom() {
- int rightBottomCornerX = getRandomNumberInRange(20, 200);
- int topBaseY = getRandomNumberInRange(20, 200);
- int rightTopCornerX = getRandomNumberInRange(5, rightBottomCornerX - 5);
- int subBottomY = getRandomNumberInRange(5, rightBottomCornerX - 5);
- Prison prison = new Prison(0, 0, rightBottomCornerX, 0,
- 0, topBaseY, rightTopCornerX, topBaseY, rightTopCornerX, subBottomY, rightBottomCornerX, subBottomY, null, null, null, null, null, null
- );
- prison.prisonCells = new ArrayList<PrisonCell>();
- prison.frontDoor = new Door(prison.subBottomLeftCornerNodeX,prison.subBottomLeftCornerNodeY,prison.subBottomLeftCornerNodeX+2,prison.subBottomLeftCornerNodeY);
- int freeSpaceY = 2;
- int cellWidth = getRandomNumberInRange(2, 4);
- while (freeSpaceY < prison.topLeftCornerNodeY - 2) {
- int cellHeight = getRandomNumberInRange(2, 4);
- PrisonCell cell = new PrisonCell(0, freeSpaceY, 0 + cellWidth, freeSpaceY, 0, freeSpaceY + cellHeight, 0 + cellWidth,
- freeSpaceY + cellHeight, null, null, null, null);
- prison.prisonCells.add(cell);
- freeSpaceY = freeSpaceY + cellHeight;
- }
- PrisonCell lastCellYToTopBase = new PrisonCell(0, freeSpaceY, 0 + cellWidth, freeSpaceY, 0, prison.topLeftCornerNodeY, 0 + cellWidth, prison.topLeftCornerNodeY,
- null, null, null, null);
- Corridor bottomCorridor = new Corridor(0, 0, prison.bottomRightCornerNodeX, 0, 0, 2, prison.bottomRightCornerNodeX, 2);
- prison.corridors.add(bottomCorridor);
- int freeSpaceX = 0;
- int freeSpaceY;
- int isCorridorEvenNumber = 0;
- while (freeSpaceX < prison.topRightCornerNodeX - 2) {
- freeSpaceY = 2;
- int cellWidth = getRandomNumberInRange(2, 4);
- while (freeSpaceY < prison.topLeftCornerNodeY - 2) {
- int cellHeight = getRandomNumberInRange(2, 4);
- PrisonCell cell = new PrisonCell(freeSpaceX, freeSpaceY, freeSpaceX + cellWidth, freeSpaceY, freeSpaceX, freeSpaceY + cellHeight, freeSpaceX + cellWidth,
- freeSpaceY + cellHeight, null, null, null, null);
- prison.prisonCells.add(cell);
- freeSpaceY = freeSpaceY + cellHeight;
- }
- freeSpaceX = freeSpaceX + cellWidth;
- PrisonCell lastCellYToTopBase = new PrisonCell(freeSpaceX, freeSpaceY, freeSpaceX + cellWidth, freeSpaceY, freeSpaceX, prison.topLeftCornerNodeY, freeSpaceX + cellWidth, prison.topLeftCornerNodeY,
- null, null, null, null);
- prison.prisonCells.add(lastCellYToTopBase);
- if (isCorridorEvenNumber % 2 == 0) {
- Corridor corridor = new Corridor(freeSpaceX, 0, freeSpaceX + 2, 0, freeSpaceX, prison.topLeftCornerNodeY, freeSpaceX + 2, prison.topLeftCornerNodeY);
- prison.corridors.add(corridor);
- freeSpaceX = freeSpaceX + 2;
- }
- }
- freeSpaceY = 2;
- while (freeSpaceY < prison.topLeftCornerNodeY - 2) {
- int cellHeight = getRandomNumberInRange(2, 4);
- PrisonCell lastCellXToTopBase = new PrisonCell(freeSpaceX, freeSpaceY, prison.topRightCornerNodeX, freeSpaceY, freeSpaceX, freeSpaceY + cellHeight, prison.topRightCornerNodeX, freeSpaceY + cellHeight,
- null, null, null, null);
- prison.prisonCells.add(lastCellXToTopBase);
- freeSpaceY = freeSpaceY + cellHeight;
- }
- PrisonCell lastCellXYToTopBase = new PrisonCell(freeSpaceX, freeSpaceY, prison.topRightCornerNodeX, freeSpaceY, freeSpaceX, prison.topLeftCornerNodeY, prison.topRightCornerNodeX, prison.topLeftCornerNodeY, null, null, null, null);
- prison.prisonCells.add(lastCellXYToTopBase);
- freeSpaceX = prison.topRightCornerNodeX;
- Corridor firstCorridorOnSubBase = new Corridor(freeSpaceX, 0, freeSpaceX + 2, 0, freeSpaceX, prison.subBottomLeftCornerNodeY, freeSpaceX + 2, prison.subBottomLeftCornerNodeY);
- prison.corridors.add(firstCorridorOnSubBase);
- freeSpaceX = freeSpaceX + 2;
- isCorridorEvenNumber = 0;
- while (freeSpaceX < prison.subBottomRightCornerNodeX - 2) {
- freeSpaceY = 2;
- int cellWidth = getRandomNumberInRange(2, 4);
- while (freeSpaceY < prison.subBottomLeftCornerNodeY - 2) {
- int cellHeight = getRandomNumberInRange(2, 4);
- PrisonCell cell = new PrisonCell(freeSpaceX, freeSpaceY, freeSpaceX + cellWidth, freeSpaceY, freeSpaceX, freeSpaceY + cellHeight, freeSpaceX + cellWidth,
- freeSpaceY + cellHeight, null, null, null, null);
- prison.prisonCells.add(cell);
- freeSpaceY = freeSpaceY + cellHeight;
- }
- freeSpaceX = freeSpaceX + cellWidth;
- PrisonCell lastCellYToSubBase = new PrisonCell(freeSpaceX, freeSpaceY, freeSpaceX + cellWidth, freeSpaceY, freeSpaceX, prison.subBottomLeftCornerNodeY, freeSpaceX + cellWidth,
- prison.subBottomLeftCornerNodeY, null, null, null, null);
- prison.prisonCells.add(lastCellYToSubBase);
- if (isCorridorEvenNumber % 2 == 0) {
- Corridor corridor = new Corridor(freeSpaceX, 0, freeSpaceX + 2, 0, freeSpaceX, prison.subBottomLeftCornerNodeY, freeSpaceX + 2, prison.subBottomLeftCornerNodeY);
- prison.corridors.add(corridor);
- freeSpaceX = freeSpaceX + 2;
- }
- }
- freeSpaceY = 2;
- while (freeSpaceY < prison.subBottomLeftCornerNodeY - 2) {
- int cellHeight = getRandomNumberInRange(2, 4);
- PrisonCell lastCellXToSubBase = new PrisonCell(freeSpaceX, freeSpaceY, prison.subBottomRightCornerNodeX, freeSpaceY, freeSpaceX, freeSpaceY + cellHeight, prison.subBottomRightCornerNodeX,
- freeSpaceY + cellHeight, null, null, null, null);
- prison.prisonCells.add(lastCellXToSubBase);
- freeSpaceY = freeSpaceY + cellHeight;
- }
- PrisonCell lastCellXYToSubBase = new PrisonCell(freeSpaceX, freeSpaceY, prison.subBottomRightCornerNodeX, freeSpaceY, freeSpaceX, prison.subBottomLeftCornerNodeY, prison.subBottomRightCornerNodeX,
- prison.subBottomLeftCornerNodeY, null, null, null, null);
- prison.prisonCells.add(lastCellXYToSubBase);
- int prisonCellIdToBecomeMonitoringRoom = getRandomNumberInRange(0, prison.prisonCells.size());
- PrisonCell prisonCellToBecomeMonitoringRoom = prison.prisonCells.get(prisonCellIdToBecomeMonitoringRoom);
- prison.prisonCells.remove(prisonCellIdToBecomeMonitoringRoom);
- MonitoringRoom monitoringRoom = new MonitoringRoom(prisonCellToBecomeMonitoringRoom.bottomLeftCornerNodeX, prisonCellToBecomeMonitoringRoom.bottomLeftCornerNodeY, prisonCellToBecomeMonitoringRoom.bottomRightCornerNodeX, prisonCellToBecomeMonitoringRoom.bottomRightCornerNodeY,
- prisonCellToBecomeMonitoringRoom.topLeftCornerNodeX, prisonCellToBecomeMonitoringRoom.topLeftCornerNodeY, prisonCellToBecomeMonitoringRoom.topRightCornerNodeX, prisonCellToBecomeMonitoringRoom.topRightCornerNodeY, null);
- prison.monitoringRoom = monitoringRoom;
- return prison;
- }
- private static int getRandomNumberInRange(int min, int max) {
- if (min >= max) {
- throw new IllegalArgumentException("max must be greater than min");
- }
- Random r = new Random();
- return r.nextInt((max - min) + 1) + min;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement