diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index 797acea..0000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/Assignment 2/src/ca/cosc3p91/a2/Main.java b/Assignment 2/src/ca/cosc3p91/a2/Main.java index 18130b1..6b832ae 100644 --- a/Assignment 2/src/ca/cosc3p91/a2/Main.java +++ b/Assignment 2/src/ca/cosc3p91/a2/Main.java @@ -5,9 +5,7 @@ import ca.cosc3p91.a2.game.GameEngine; public class Main { public static void main(String[] args) { - GameEngine engine = new GameEngine(); - - engine.run(); + new GameEngine().run(); } } diff --git a/Assignment 2/src/ca/cosc3p91/a2/game/GameEngine.java b/Assignment 2/src/ca/cosc3p91/a2/game/GameEngine.java index 14a37a2..40c7ee8 100644 --- a/Assignment 2/src/ca/cosc3p91/a2/game/GameEngine.java +++ b/Assignment 2/src/ca/cosc3p91/a2/game/GameEngine.java @@ -3,7 +3,11 @@ package ca.cosc3p91.a2.game; import ca.cosc3p91.a2.gameobjects.*; import ca.cosc3p91.a2.player.*; import ca.cosc3p91.a2.util.Print; +import ca.cosc3p91.a2.util.Time; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; import java.util.Scanner; public class GameEngine implements Runnable { @@ -19,9 +23,7 @@ public class GameEngine implements Runnable { public GameEngine() { player = new Player(); - VillageStage vInitialStage = new VillageStage(100, 0, 2, 30, 0, - 0, 1000, 2500, 5000); - map = new Map(new VillageHall(1, vInitialStage), 30); + map = generateMap(); } private void printState() { @@ -71,21 +73,52 @@ public class GameEngine implements Runnable { } public void attackVillage(Map map) { + + } + + private Map generateInitialMap(){ + VillageStage villageHallInitialStage = new VillageStage(100, 0, 2, new Time(), 0, + 0, 1000, 2500, 5000); + return new Map(new CasaDeNarino(1, villageHallInitialStage), 30); } public Map generateMap() { - return null; + Map initialMap = generateInitialMap(); + initialMap.build(new Tile(), new SaulGoodMine(1, new ResourceStage(50, 0, 0, new Time(), 0, 0, 25))); + return initialMap; } public void getScore(Map map) { + } @Override public void run() { - Scanner sc = new Scanner(System.in); + BufferedReader rd = new BufferedReader(new InputStreamReader(System.in)); + Scanner sc = new Scanner(rd); + printState(); + System.out.println(); while (running) { - printState(); - int in = sc.nextInt(); + for (Building b : map.contains){ + if ((b instanceof ResourceBuilding)) { + ((ResourceBuilding) b).update(map.getTownHall()); + } + } + //System.out.println("Updating"); + try { + if (rd.ready()) { + char in = sc.next().charAt(0); + switch (in) { + case 'p': + printState(); + break; + default: + break; + } + } + } catch (IOException e) { + throw new RuntimeException(e); + } } } } diff --git a/Assignment 2/src/ca/cosc3p91/a2/game/Map.java b/Assignment 2/src/ca/cosc3p91/a2/game/Map.java index 9d64419..028469d 100644 --- a/Assignment 2/src/ca/cosc3p91/a2/game/Map.java +++ b/Assignment 2/src/ca/cosc3p91/a2/game/Map.java @@ -9,7 +9,7 @@ public class Map { static int MAXSIZE = 400; - private VillageHall townHall; + private CasaDeNarino townHall; private int guardTime; @@ -17,11 +17,11 @@ public class Map { public List inhabitants; - public Map(VillageHall villageHall, int gTime) { + public Map(CasaDeNarino casaDeNarino, int gTime) { contains = new ArrayList<>(); inhabitants = new ArrayList<>(); - this.townHall = villageHall; - this.contains.add(villageHall); + this.townHall = casaDeNarino; + this.contains.add(casaDeNarino); this.guardTime = gTime; } @@ -45,7 +45,7 @@ public class Map { this.guardTime = gTime; } - public VillageHall getTownHall(){ + public CasaDeNarino getTownHall(){ return townHall; } diff --git a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/VillageHall.java b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/CasaDeNarino.java similarity index 92% rename from Assignment 2/src/ca/cosc3p91/a2/gameobjects/VillageHall.java rename to Assignment 2/src/ca/cosc3p91/a2/gameobjects/CasaDeNarino.java index edd8d81..5ee3f13 100644 --- a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/VillageHall.java +++ b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/CasaDeNarino.java @@ -2,7 +2,7 @@ package ca.cosc3p91.a2.gameobjects; import java.util.ArrayList; -public class VillageHall extends Building { +public class CasaDeNarino extends Building { private int goldCapacity = 0; private int ironCapacity = 0; @@ -12,7 +12,7 @@ public class VillageHall extends Building { private int currentIron; private int currentWood; - public VillageHall(int lvl, VillageStage baseStage) { + public CasaDeNarino(int lvl, VillageStage baseStage) { setLevel(lvl); upgrade(baseStage); } diff --git a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/Farm.java b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/Farm.java index eb1437d..3f1892b 100644 --- a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/Farm.java +++ b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/Farm.java @@ -12,5 +12,7 @@ public class Farm extends ResourceBuilding { } @Override - public void harvest(VillageHall hall) {} + protected ResourceHarvestHandler getHarvestHandler() { + return hall -> {}; + } } diff --git a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/IronMine.java b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/IronMine.java index 390791d..e1d675d 100644 --- a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/IronMine.java +++ b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/IronMine.java @@ -10,7 +10,7 @@ public class IronMine extends ResourceBuilding { } @Override - public void harvest(VillageHall hall) { - hall.addCurrentIron(getHarvestRate()); + protected ResourceHarvestHandler getHarvestHandler() { + return hall -> hall.addCurrentIron(getHarvestRate()); } } diff --git a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/LumberMine.java b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/LumberMine.java index 7c2c4cc..420d219 100644 --- a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/LumberMine.java +++ b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/LumberMine.java @@ -9,8 +9,9 @@ public class LumberMine extends ResourceBuilding { upgrade(baseStage); } - public void harvest(VillageHall hall) { - hall.addCurrentWood(getHarvestRate()); + @Override + protected ResourceHarvestHandler getHarvestHandler() { + return hall -> hall.addCurrentWood(getHarvestRate()); } } diff --git a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/ResourceBuilding.java b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/ResourceBuilding.java index 5763b16..400446e 100644 --- a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/ResourceBuilding.java +++ b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/ResourceBuilding.java @@ -4,6 +4,10 @@ import ca.cosc3p91.a2.util.Time; public abstract class ResourceBuilding extends Building { + protected interface ResourceHarvestHandler { + void harvest(CasaDeNarino hall); + } + public static String resource; private final Time harvestMinTime = new Time().offsetSeconds(10); @@ -20,14 +24,14 @@ public abstract class ResourceBuilding extends Building { this.harvest_rate += stage.getHarvestRateIncrease(); } - public void update(VillageHall hall){ + public void update(CasaDeNarino hall){ if (nextHarvestTime.occurred()){ - harvest(hall); + getHarvestHandler().harvest(hall); nextHarvestTime = Time.getTime().offsetTime(harvestMinTime); } } - protected abstract void harvest(VillageHall hall); + protected abstract ResourceHarvestHandler getHarvestHandler(); public int getHarvestRate(){ return harvest_rate; diff --git a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/ResourceStage.java b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/ResourceStage.java index e953c1d..7585e2d 100644 --- a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/ResourceStage.java +++ b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/ResourceStage.java @@ -1,10 +1,12 @@ package ca.cosc3p91.a2.gameobjects; +import ca.cosc3p91.a2.util.Time; + public class ResourceStage extends Stage { protected int harvestRateIncrease; - public ResourceStage(int dHealth, int goldCost, int requiredVillageLevel, int upgradeTime, int ironCost, int woodCost, + public ResourceStage(int dHealth, int goldCost, int requiredVillageLevel, Time upgradeTime, int ironCost, int woodCost, int harvestRateIncr) { super(dHealth, goldCost, requiredVillageLevel, upgradeTime, ironCost, woodCost); this.harvestRateIncrease = harvestRateIncr; diff --git a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/ResourceStages.java b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/ResourceStages.java new file mode 100644 index 0000000..1d29221 --- /dev/null +++ b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/ResourceStages.java @@ -0,0 +1,61 @@ +package ca.cosc3p91.a2.gameobjects; + +import ca.cosc3p91.a2.util.Time; + +public class ResourceStages { + + public static class GoldStage1 extends ResourceStage { + public GoldStage1() { + super(100, 0, 0, new Time().offsetMinutes(1), 25, 250, 25); + } + } + + public static class GoldStage2 extends ResourceStage { + public GoldStage2() { + super(100, 100, 1, new Time().offsetMinutes(15), 25, 275, 35); + } + } + + public static class GoldStage3 extends ResourceStage { + public GoldStage3() { + super(100, 150, 2, new Time().offsetHours(1), 50, 325, 50); + } + } + + public static class IronStage1 extends ResourceStage { + public IronStage1() { + super(100, 0, 0, new Time().offsetMinutes(1), 0, 125, 25); + } + } + + public static class IronStage2 extends ResourceStage { + public IronStage2() { + super(100, 15, 1, new Time().offsetMinutes(15), 25, 155, 35); + } + } + + public static class IronStage3 extends ResourceStage { + public IronStage3() { + super(100, 50, 2, new Time().offsetHours(1), 50, 250, 50); + } + } + + public static class WoodStage1 extends ResourceStage { + public WoodStage1() { + super(100, 0, 0, new Time().offsetMinutes(1), 0, 50, 25); + } + } + + public static class WoodStage2 extends ResourceStage { + public WoodStage2() { + super(100, 5, 1, new Time().offsetMinutes(15), 5, 75, 35); + } + } + + public static class WoodStage3 extends ResourceStage { + public WoodStage3() { + super(100, 10, 2, new Time().offsetHours(1), 25, 100, 50); + } + } + +} diff --git a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/SaulGoodMine.java b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/SaulGoodMine.java index 600b143..ff56bfa 100644 --- a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/SaulGoodMine.java +++ b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/SaulGoodMine.java @@ -10,7 +10,7 @@ public class SaulGoodMine extends ResourceBuilding { } @Override - public void harvest(VillageHall hall) { - hall.addCurrentGold(getHarvestRate()); + protected ResourceHarvestHandler getHarvestHandler() { + return hall -> hall.addCurrentGold(getHarvestRate()); } } diff --git a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/Stage.java b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/Stage.java index 2e148cb..3e5973b 100644 --- a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/Stage.java +++ b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/Stage.java @@ -1,5 +1,7 @@ package ca.cosc3p91.a2.gameobjects; +import ca.cosc3p91.a2.util.Time; + abstract class Stage { protected int dHealth; @@ -8,13 +10,13 @@ abstract class Stage { protected int requiredVillageLevel; - protected int upgradeTime; + protected Time upgradeTime; protected int ironCost; protected int woodCost; - public Stage(int dHealth, int goldCost, int requiredVillageLevel, int upgradeTime, int ironCost, int woodCost) { + public Stage(int dHealth, int goldCost, int requiredVillageLevel, Time upgradeTime, int ironCost, int woodCost) { this.dHealth = dHealth; this.goldCost = goldCost; this.requiredVillageLevel = requiredVillageLevel; @@ -36,7 +38,7 @@ abstract class Stage { return requiredVillageLevel; } - public int getUpgradeTime() { + public Time getUpgradeTime() { return upgradeTime; } diff --git a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/VillageStage.java b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/VillageStage.java index afd0a5f..8600fc2 100644 --- a/Assignment 2/src/ca/cosc3p91/a2/gameobjects/VillageStage.java +++ b/Assignment 2/src/ca/cosc3p91/a2/gameobjects/VillageStage.java @@ -1,5 +1,7 @@ package ca.cosc3p91.a2.gameobjects; +import ca.cosc3p91.a2.util.Time; + public class VillageStage extends Stage { protected int goldCapacityIncrease; @@ -8,7 +10,7 @@ public class VillageStage extends Stage { protected int woodCapacityIncrease; - public VillageStage(int dHealth, int goldCost, int requiredVillageLevel, int upgradeTime, int ironCost, int woodCost, + public VillageStage(int dHealth, int goldCost, int requiredVillageLevel, Time upgradeTime, int ironCost, int woodCost, int goldCapIncrease, int ironCapIncrease, int woodCapIncrease) { super(dHealth, goldCost, requiredVillageLevel, upgradeTime, ironCost, woodCost); this.goldCapacityIncrease = goldCapIncrease;