From e533477a8f6c13c86b8a653b6728e26a1674c630 Mon Sep 17 00:00:00 2001 From: Kaylee Date: Tue, 16 Sep 2025 22:33:36 -0400 Subject: [PATCH 1/2] first attempt --- assignments/strategy_pattern/Archer.java | 7 ++ assignments/strategy_pattern/Arrows.java | 7 ++ assignments/strategy_pattern/Barbarian.java | 7 ++ assignments/strategy_pattern/Character.java | 32 +++++++ assignments/strategy_pattern/Fireball.java | 7 ++ .../strategy_pattern/ICharacterSpecies.java | 5 ++ assignments/strategy_pattern/IWeapon.java | 5 ++ assignments/strategy_pattern/Knight.java | 7 ++ assignments/strategy_pattern/Mage.java | 7 ++ assignments/strategy_pattern/Rogue.java | 7 ++ .../strategy_pattern/StrategyGame.java | 84 +++++++++++++++++++ assignments/strategy_pattern/Sword.java | 7 ++ 12 files changed, 182 insertions(+) create mode 100644 assignments/strategy_pattern/Archer.java create mode 100644 assignments/strategy_pattern/Arrows.java create mode 100644 assignments/strategy_pattern/Barbarian.java create mode 100644 assignments/strategy_pattern/Character.java create mode 100644 assignments/strategy_pattern/Fireball.java create mode 100644 assignments/strategy_pattern/ICharacterSpecies.java create mode 100644 assignments/strategy_pattern/IWeapon.java create mode 100644 assignments/strategy_pattern/Knight.java create mode 100644 assignments/strategy_pattern/Mage.java create mode 100644 assignments/strategy_pattern/Rogue.java create mode 100644 assignments/strategy_pattern/StrategyGame.java create mode 100644 assignments/strategy_pattern/Sword.java diff --git a/assignments/strategy_pattern/Archer.java b/assignments/strategy_pattern/Archer.java new file mode 100644 index 0000000..2bf1ff7 --- /dev/null +++ b/assignments/strategy_pattern/Archer.java @@ -0,0 +1,7 @@ +package assignments.strategy_pattern; + +public class Archer implements ICharacterSpecies { + public String getSpecies() { + return "archer"; + } +} diff --git a/assignments/strategy_pattern/Arrows.java b/assignments/strategy_pattern/Arrows.java new file mode 100644 index 0000000..59f65d6 --- /dev/null +++ b/assignments/strategy_pattern/Arrows.java @@ -0,0 +1,7 @@ +package assignments.strategy_pattern; + +public class Arrows implements IWeapon { + public String getWeapon() { + return "weapon"; + } +} diff --git a/assignments/strategy_pattern/Barbarian.java b/assignments/strategy_pattern/Barbarian.java new file mode 100644 index 0000000..c76b2e1 --- /dev/null +++ b/assignments/strategy_pattern/Barbarian.java @@ -0,0 +1,7 @@ +package assignments.strategy_pattern; + +public class Barbarian implements ICharacterSpecies { + public String getSpecies() { + return "barbarian"; + } +} diff --git a/assignments/strategy_pattern/Character.java b/assignments/strategy_pattern/Character.java new file mode 100644 index 0000000..906a2e0 --- /dev/null +++ b/assignments/strategy_pattern/Character.java @@ -0,0 +1,32 @@ +package assignments.strategy_pattern; + +public class Character { + private ICharacterSpecies characterSpecies; + private IWeapon characterWeapon; + + // Character Constructor + public Character(ICharacterSpecies characterSpecies, IWeapon characterWeapon) { + this.characterSpecies = characterSpecies; + this.characterWeapon = characterWeapon; + } + + // Set character species + public void setCharacterSpecies(ICharacterSpecies characterSpecies) { + this.characterSpecies = characterSpecies; + } + + // Set character weapon + public void setCharacterWeapon(IWeapon characterWeapon) { + this.characterWeapon = characterWeapon; + } + + // get character species + public String turnSpecies() { + return characterSpecies.getSpecies(); + } + + // get character weapon + public String fireWeapon() { + return characterWeapon.getWeapon(); + } +} diff --git a/assignments/strategy_pattern/Fireball.java b/assignments/strategy_pattern/Fireball.java new file mode 100644 index 0000000..ce889bb --- /dev/null +++ b/assignments/strategy_pattern/Fireball.java @@ -0,0 +1,7 @@ +package assignments.strategy_pattern; + +public class Fireball implements IWeapon { + public String getWeapon() { + return "fireball"; + } +} diff --git a/assignments/strategy_pattern/ICharacterSpecies.java b/assignments/strategy_pattern/ICharacterSpecies.java new file mode 100644 index 0000000..16534a6 --- /dev/null +++ b/assignments/strategy_pattern/ICharacterSpecies.java @@ -0,0 +1,5 @@ +package assignments.strategy_pattern; + +public interface ICharacterSpecies { + public String getSpecies(); +} \ No newline at end of file diff --git a/assignments/strategy_pattern/IWeapon.java b/assignments/strategy_pattern/IWeapon.java new file mode 100644 index 0000000..a81eea6 --- /dev/null +++ b/assignments/strategy_pattern/IWeapon.java @@ -0,0 +1,5 @@ +package assignments.strategy_pattern; + +public interface IWeapon { + public String getWeapon(); +} diff --git a/assignments/strategy_pattern/Knight.java b/assignments/strategy_pattern/Knight.java new file mode 100644 index 0000000..9e0395e --- /dev/null +++ b/assignments/strategy_pattern/Knight.java @@ -0,0 +1,7 @@ +package assignments.strategy_pattern; + +public class Knight implements ICharacterSpecies { + public String getSpecies() { + return "knight"; + } +} diff --git a/assignments/strategy_pattern/Mage.java b/assignments/strategy_pattern/Mage.java new file mode 100644 index 0000000..490449f --- /dev/null +++ b/assignments/strategy_pattern/Mage.java @@ -0,0 +1,7 @@ +package assignments.strategy_pattern; + +public class Mage implements ICharacterSpecies { + public String getSpecies() { + return "mage"; + } +} diff --git a/assignments/strategy_pattern/Rogue.java b/assignments/strategy_pattern/Rogue.java new file mode 100644 index 0000000..99d2840 --- /dev/null +++ b/assignments/strategy_pattern/Rogue.java @@ -0,0 +1,7 @@ +package assignments.strategy_pattern; + +public class Rogue implements ICharacterSpecies { + public String getSpecies() { + return "rogue"; + } +} diff --git a/assignments/strategy_pattern/StrategyGame.java b/assignments/strategy_pattern/StrategyGame.java new file mode 100644 index 0000000..2de8777 --- /dev/null +++ b/assignments/strategy_pattern/StrategyGame.java @@ -0,0 +1,84 @@ +package assignments.strategy_pattern; + +import java.util.ArrayList; +import java.util.Scanner; + +public class StrategyGame { + public static void main(String[] args) { + Scanner userInput = new Scanner(System.in); + String chosenCharacter; + String chosenWeapon; + Character player = null; + + ArrayList characterSpecies = new ArrayList<>(); + + characterSpecies.add("knight"); + characterSpecies.add("archer"); + characterSpecies.add("mage"); + characterSpecies.add("rogue"); + characterSpecies.add("barbarian"); + + System.out.println("Hello!"); + System.out.println("What class are you?"); + System.out.println("Choose:"); + System.out.print("\t"); + for (String characterChar : characterSpecies) { + System.out.print(characterChar + " "); + } + System.out.println(""); + + chosenCharacter = userInput.nextLine(); + + if (chosenCharacter.equalsIgnoreCase("knight")) { + player = new Character(new Knight(), new Sword()); + } else if (chosenCharacter.equalsIgnoreCase("archer")) { + player = new Character(new Archer(), new Arrows()); + } else if (chosenCharacter.equalsIgnoreCase("mage")) { + player = new Character(new Mage(), new Fireball()); + } else if (chosenCharacter.equalsIgnoreCase("rogue")) { + player = new Character(new Rogue(), new Sword()); + } else if (chosenCharacter.equalsIgnoreCase("barbarian")) { + player = new Character(new Barbarian(), new Arrows()); + } + + System.out.println("Oh no! A Dragon!!!"); + System.out.println(" , ,"); + System.out.println(" \\\\ \\\\"); + System.out.println(" ) \\\\ \\\\ _p_"); + System.out.println(" )^\\))\\)) / *\\"); + System.out.println(" \\_|| || / /^`-'"); + System.out.println(" __ -\\ \\\\--/ /"); + System.out.println(" <' \\___/ ___. )'"); + System.out.println(" `====\\ )___/\\\\"); + System.out.println(" // `\""); + System.out.println(" \\ / \\"); + + ArrayList characterWeapons = new ArrayList<>(); + + characterWeapons.add("sword"); + characterWeapons.add("arrows"); + characterWeapons.add("fireball"); + + System.out.println("Attack it!!"); + System.out.println("Please choose the weapon you want for this battle!"); + System.out.print("\t"); + for (String characterChar : characterWeapons) { + System.out.print(characterChar + " "); + } + System.out.println(""); + + chosenWeapon = userInput.nextLine(); + + if (chosenWeapon.equalsIgnoreCase("sword")) { + player.setCharacterWeapon(new Sword()); + } else if (chosenWeapon.equalsIgnoreCase("arrows")) { + player.setCharacterWeapon(new Arrows()); + } else if (chosenWeapon.equalsIgnoreCase("fireball")) { + player.setCharacterWeapon(new Fireball()); + } + + System.out.println("The " + player.turnSpecies() + " swings a " + player.fireWeapon() + "!"); + + userInput.close(); + } +} diff --git a/assignments/strategy_pattern/Sword.java b/assignments/strategy_pattern/Sword.java new file mode 100644 index 0000000..a31ce55 --- /dev/null +++ b/assignments/strategy_pattern/Sword.java @@ -0,0 +1,7 @@ +package assignments.strategy_pattern; + +public class Sword implements IWeapon { + public String getWeapon() { + return "sword"; + } +} From bac11f371144d365c8c4e572258f7c748d7fe63f Mon Sep 17 00:00:00 2001 From: Kaylee Date: Thu, 18 Sep 2025 14:22:53 -0400 Subject: [PATCH 2/2] fixes --- assignments/strategy_pattern/Archer.java | 7 ------- assignments/strategy_pattern/Arrows.java | 2 +- assignments/strategy_pattern/Barbarian.java | 7 ------- assignments/strategy_pattern/Character.java | 10 +++++----- assignments/strategy_pattern/ICharacterSpecies.java | 5 ----- assignments/strategy_pattern/Knight.java | 7 ------- assignments/strategy_pattern/Mage.java | 7 ------- assignments/strategy_pattern/Rogue.java | 7 ------- assignments/strategy_pattern/StrategyGame.java | 12 ++++++------ 9 files changed, 12 insertions(+), 52 deletions(-) delete mode 100644 assignments/strategy_pattern/Archer.java delete mode 100644 assignments/strategy_pattern/Barbarian.java delete mode 100644 assignments/strategy_pattern/ICharacterSpecies.java delete mode 100644 assignments/strategy_pattern/Knight.java delete mode 100644 assignments/strategy_pattern/Mage.java delete mode 100644 assignments/strategy_pattern/Rogue.java diff --git a/assignments/strategy_pattern/Archer.java b/assignments/strategy_pattern/Archer.java deleted file mode 100644 index 2bf1ff7..0000000 --- a/assignments/strategy_pattern/Archer.java +++ /dev/null @@ -1,7 +0,0 @@ -package assignments.strategy_pattern; - -public class Archer implements ICharacterSpecies { - public String getSpecies() { - return "archer"; - } -} diff --git a/assignments/strategy_pattern/Arrows.java b/assignments/strategy_pattern/Arrows.java index 59f65d6..a622efc 100644 --- a/assignments/strategy_pattern/Arrows.java +++ b/assignments/strategy_pattern/Arrows.java @@ -2,6 +2,6 @@ public class Arrows implements IWeapon { public String getWeapon() { - return "weapon"; + return "arrows"; } } diff --git a/assignments/strategy_pattern/Barbarian.java b/assignments/strategy_pattern/Barbarian.java deleted file mode 100644 index c76b2e1..0000000 --- a/assignments/strategy_pattern/Barbarian.java +++ /dev/null @@ -1,7 +0,0 @@ -package assignments.strategy_pattern; - -public class Barbarian implements ICharacterSpecies { - public String getSpecies() { - return "barbarian"; - } -} diff --git a/assignments/strategy_pattern/Character.java b/assignments/strategy_pattern/Character.java index 906a2e0..91cd972 100644 --- a/assignments/strategy_pattern/Character.java +++ b/assignments/strategy_pattern/Character.java @@ -1,17 +1,17 @@ package assignments.strategy_pattern; public class Character { - private ICharacterSpecies characterSpecies; private IWeapon characterWeapon; + private String characterSpecies; // Character Constructor - public Character(ICharacterSpecies characterSpecies, IWeapon characterWeapon) { + public Character(String characterSpecies, IWeapon characterWeapon) { this.characterSpecies = characterSpecies; this.characterWeapon = characterWeapon; } // Set character species - public void setCharacterSpecies(ICharacterSpecies characterSpecies) { + public void setCharacterSpecies(String characterSpecies) { this.characterSpecies = characterSpecies; } @@ -21,8 +21,8 @@ public void setCharacterWeapon(IWeapon characterWeapon) { } // get character species - public String turnSpecies() { - return characterSpecies.getSpecies(); + public String getSpecies() { + return characterSpecies; } // get character weapon diff --git a/assignments/strategy_pattern/ICharacterSpecies.java b/assignments/strategy_pattern/ICharacterSpecies.java deleted file mode 100644 index 16534a6..0000000 --- a/assignments/strategy_pattern/ICharacterSpecies.java +++ /dev/null @@ -1,5 +0,0 @@ -package assignments.strategy_pattern; - -public interface ICharacterSpecies { - public String getSpecies(); -} \ No newline at end of file diff --git a/assignments/strategy_pattern/Knight.java b/assignments/strategy_pattern/Knight.java deleted file mode 100644 index 9e0395e..0000000 --- a/assignments/strategy_pattern/Knight.java +++ /dev/null @@ -1,7 +0,0 @@ -package assignments.strategy_pattern; - -public class Knight implements ICharacterSpecies { - public String getSpecies() { - return "knight"; - } -} diff --git a/assignments/strategy_pattern/Mage.java b/assignments/strategy_pattern/Mage.java deleted file mode 100644 index 490449f..0000000 --- a/assignments/strategy_pattern/Mage.java +++ /dev/null @@ -1,7 +0,0 @@ -package assignments.strategy_pattern; - -public class Mage implements ICharacterSpecies { - public String getSpecies() { - return "mage"; - } -} diff --git a/assignments/strategy_pattern/Rogue.java b/assignments/strategy_pattern/Rogue.java deleted file mode 100644 index 99d2840..0000000 --- a/assignments/strategy_pattern/Rogue.java +++ /dev/null @@ -1,7 +0,0 @@ -package assignments.strategy_pattern; - -public class Rogue implements ICharacterSpecies { - public String getSpecies() { - return "rogue"; - } -} diff --git a/assignments/strategy_pattern/StrategyGame.java b/assignments/strategy_pattern/StrategyGame.java index 2de8777..dee095c 100644 --- a/assignments/strategy_pattern/StrategyGame.java +++ b/assignments/strategy_pattern/StrategyGame.java @@ -30,15 +30,15 @@ public static void main(String[] args) { chosenCharacter = userInput.nextLine(); if (chosenCharacter.equalsIgnoreCase("knight")) { - player = new Character(new Knight(), new Sword()); + player = new Character("knight", new Sword()); } else if (chosenCharacter.equalsIgnoreCase("archer")) { - player = new Character(new Archer(), new Arrows()); + player = new Character("archer", new Arrows()); } else if (chosenCharacter.equalsIgnoreCase("mage")) { - player = new Character(new Mage(), new Fireball()); + player = new Character("mage", new Fireball()); } else if (chosenCharacter.equalsIgnoreCase("rogue")) { - player = new Character(new Rogue(), new Sword()); + player = new Character("rogue", new Sword()); } else if (chosenCharacter.equalsIgnoreCase("barbarian")) { - player = new Character(new Barbarian(), new Arrows()); + player = new Character("barbarian", new Arrows()); } System.out.println("Oh no! A Dragon!!!"); @@ -77,7 +77,7 @@ public static void main(String[] args) { player.setCharacterWeapon(new Fireball()); } - System.out.println("The " + player.turnSpecies() + " swings a " + player.fireWeapon() + "!"); + System.out.println("The " + player.getSpecies() + " attacks with " + player.fireWeapon() + "!"); userInput.close(); }