public static void main(String[] args) { // create a world World world = new World(numFarmsInWorld); // initialize both farms Farm farm1 = world.getAFarm(0); // create the FarmObjects Cow cow = new Cow("cow "); FlyingCow fCow = new FlyingCow("fcow"); NocturnalCow nCow = new NocturnalCow("ncow"); Grass grass = new Grass(); PoisonedGrass pGrass = new PoisonedGrass(); // initialize fObjects that contains all farm animals on a farm FarmObject[] fObjects = {cow, fCow, nCow, grass, pGrass}; // populate both farms farm1.populateFarm(FARM_ROWS, FARM_COLS, fObjects); // print initial farm states System.out.println("Initial State of Farm1: "); System.out.println("------------------------"); printFarmState(farm1.getFarmGrid()); System.out.println("------------------------"); world.simulateWorld(HOURS); // print final farm states after HOURS hours System.out.println("Final State of Farm1: "); System.out.println("------------------------"); printFarmState(farm1.getFarmGrid()); System.out.println("------------------------"); }
private void addFarm(Farm farm) { for (Farm f : farms) { if (farm.equals(f)) { return; } } if (farms.size() < maxFarms) { farms.add(farm); System.out.println("found farm"); } if (farms.size() == maxFarms) { hasAllFarms = true; } }
private static Farm cloneFarm(Farm farm) { return new Farm( farm.getName(), farm.getDescription(), farm.getLevel(), farm.getUpgradeCost(), farm.getCost(), farm.getProduction().clone()); }
@Override public void doLogic(int i) { super.doLogic(i); if (!hasAllFarms && i % 10 == 0) { lookForFarms(); } if (super.getCurrentWorkersAmount() < super.getMaxWorkers()) { super.callWorker(); } for (LittleMan worker : getCurrentWorkers()) { if (!worker.hasMission()) { // fabricate asked first, highest priority if (!outStock.isFull() && inStock.getExpectedStock() > 0) { worker.addMission( new Mission_Fabricate( getWorkPos(), 30, this, Grain.class.getSimpleName(), new Flour())); } else { // check farms for grain and collect it for (Farm f : farms) { // System.out.println("farm outstock: "+ f.getOutStock().getExpectedStock() +" mill // instock: "+ inStock.getExpectedStock() +" limit: "+ inStock.getLimit()); if (f.getOutStock().getExpectedStock() > 0 && inStock.getExpectedStock() < inStock.getLimit()) { worker.addMission( new Mission_PickUp( f.getOutStock(), inStock, Grain.class.getSimpleName(), getWorkers().get(0))); break; } } } } } }