diff --git a/src/main/java/lol/client/ai/RandomAI.java b/src/main/java/lol/client/ai/RandomAI.java index f60584d..85e21ad 100644 --- a/src/main/java/lol/client/ai/RandomAI.java +++ b/src/main/java/lol/client/ai/RandomAI.java @@ -17,7 +17,7 @@ public Turn championSelect() { String championName; switch(teamID) { case Nexus.BLUE: championName = "Warrior"; break; - case Nexus.RED: championName = "Archer"; break; + case Nexus.RED: championName = "Scientist"; break; default: throw new RuntimeException("Unknown team color."); } turn.registerAction(new ChampionSelect(teamID, championName)); @@ -30,22 +30,22 @@ public Turn turn() { Turn turn = new Turn(); // Try to attack the Nexus first. arena.teamOf(teamID).forEachChampion((champion, id) -> - battlefield.visitAdjacent(champion.x(), champion.y(), champion.attackRange(), new TileVisitor(){ - public void visitNexus(Nexus nexus) { - if(nexus.teamOfNexus() != teamID) { - turn.registerAction(new Attack(teamID, id, nexus.x(), nexus.y())); - } - } - })); + battlefield.visitAdjacent(champion.x(), champion.y(), champion.attackRange(), new TileVisitor(){ + public void visitNexus(Nexus nexus) { + if(nexus.teamOfNexus() != teamID) { + turn.registerAction(new Attack(teamID, id, nexus.x(), nexus.y())); + } + } + })); // Add a move action in case we could not attack the Nexus. arena.teamOf(teamID).forEachChampion((champion, id) -> - battlefield.visitAdjacent(champion.x(), champion.y(), champion.walkSpeed(), new TileVisitor(){ - public void visitGrass(int x, int y) { - if(random.nextInt() % 3 == 0) { - turn.registerAction(new Move(teamID, id, x, y)); - } - } - })); + battlefield.visitAdjacent(champion.x(), champion.y(), champion.walkSpeed(), new TileVisitor(){ + public void visitGrass(int x, int y) { + if(random.nextInt() % 3 == 0) { + turn.registerAction(new Move(teamID, id, x, y)); + } + } + })); return turn; } } diff --git a/src/main/java/lol/game/Arena.java b/src/main/java/lol/game/Arena.java index a0b1e0d..36be3fa 100644 --- a/src/main/java/lol/game/Arena.java +++ b/src/main/java/lol/game/Arena.java @@ -87,7 +87,7 @@ public void visitChampionSelect(int teamID, String championName) { } else { System.out.println("Champion selection action outside of the champion selection phase (teamID = " - + teamID + ", championName = " + championName + "."); + + teamID + ", championName = " + championName + "."); } } } diff --git a/src/main/java/lol/game/Champion.java b/src/main/java/lol/game/Champion.java index 26f7198..8b17972 100644 --- a/src/main/java/lol/game/Champion.java +++ b/src/main/java/lol/game/Champion.java @@ -22,10 +22,13 @@ public static Champion makeWarrior() { return new Champion("Warrior", 15, 1, 3, 2); } + public static Champion makeScientist() { return new Champion("Scientist", 3, 2, 15, 2);} + public static Champion make(String name) { switch(name) { case "Archer": return makeArcher(); case "Warrior": return makeWarrior(); + case "Scientist" : return makeScientist(); default: throw new RuntimeException("The champion " + name + " does not exist."); } } diff --git a/src/main/java/lol/ui/BattlefieldView.java b/src/main/java/lol/ui/BattlefieldView.java index 4029a71..6e7ca7d 100644 --- a/src/main/java/lol/ui/BattlefieldView.java +++ b/src/main/java/lol/ui/BattlefieldView.java @@ -49,7 +49,7 @@ ImageView groundView(Battlefield.GroundTile tile) { switch(tile) { case GRASS: return sprites.grass(); default: throw new UnsupportedOperationException( - "Displaying ground tile `" + tile.name() + "` is not yet supported."); + "Displaying ground tile `" + tile.name() + "` is not yet supported."); } } @@ -57,9 +57,10 @@ ImageView championView(Champion champion) { String name = champion.name(); if(name.equals("Archer")) { return sprites.archer(); } else if (name.equals("Warrior")) { return sprites.warrior(); } + else if (name.equals("Scientist")) { return sprites.scientist();} else { throw new UnsupportedOperationException( - "Displaying Champion tile `" + name + "` is not yet supported."); + "Displaying Champion tile `" + name + "` is not yet supported."); } } diff --git a/src/main/java/lol/ui/Sprites.java b/src/main/java/lol/ui/Sprites.java index a3eae85..7b1ee04 100644 --- a/src/main/java/lol/ui/Sprites.java +++ b/src/main/java/lol/ui/Sprites.java @@ -7,6 +7,7 @@ public class Sprites { private Image grassImage; private Image archerImage; private Image warriorImage; + private Image scientistImage; private Image blueNexusImage; private Image redNexusImage; @@ -14,6 +15,7 @@ public Sprites() { grassImage = new Image("sprites/grass-tile.png"); archerImage = new Image("sprites/archer.png"); warriorImage = new Image("sprites/warrior.png"); + scientistImage = new Image("sprites/scientist.png"); blueNexusImage = new Image("sprites/blue-nexus.png"); redNexusImage = new Image("sprites/red-nexus.png"); } @@ -36,6 +38,8 @@ public ImageView warrior() { return makeView(warriorImage); } + public ImageView scientist() {return makeView(scientistImage);} + public ImageView blueNexus() { return makeView(blueNexusImage); } diff --git a/src/main/resources/sprites/scientist.png b/src/main/resources/sprites/scientist.png new file mode 100644 index 0000000..ed3c613 Binary files /dev/null and b/src/main/resources/sprites/scientist.png differ