From 45fe3410595cbcacf956a76e64a0c03b239025c3 Mon Sep 17 00:00:00 2001 From: jslightham <31053827+jslightham@users.noreply.github.com> Date: Fri, 31 May 2019 19:02:52 -0400 Subject: [PATCH 1/4] finished crafting --- data/synonyms.dat | 4 +- data/words.dat | 4 +- src/com/bayviewglen/zork/Game.java | 45 +++++++++++++++++++ .../bayviewglen/zork/Items/Batteringram.java | 10 +++++ .../bayviewglen/zork/Items/CraftableItem.java | 20 +++++++++ src/com/bayviewglen/zork/Items/Item.java | 4 +- 6 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 src/com/bayviewglen/zork/Items/Batteringram.java create mode 100644 src/com/bayviewglen/zork/Items/CraftableItem.java diff --git a/data/synonyms.dat b/data/synonyms.dat index c6e80bd..3267bc8 100644 --- a/data/synonyms.dat +++ b/data/synonyms.dat @@ -51,4 +51,6 @@ cream, shavingcream water, waterbottle bottle, waterbottle warm, warmbread -bread, warmbread \ No newline at end of file +bread, warmbread +battering, batteringram +ram, batteringram \ No newline at end of file diff --git a/data/words.dat b/data/words.dat index be128e2..704478d 100644 --- a/data/words.dat +++ b/data/words.dat @@ -62,4 +62,6 @@ henrypellatt, enemy riddler, friend clock, item keyboard, item -lightbulb, item \ No newline at end of file +lightbulb, item +craft, verb +batteringram, item \ No newline at end of file diff --git a/src/com/bayviewglen/zork/Game.java b/src/com/bayviewglen/zork/Game.java index 98b3334..7dc9af3 100644 --- a/src/com/bayviewglen/zork/Game.java +++ b/src/com/bayviewglen/zork/Game.java @@ -540,6 +540,51 @@ class Game { } } break; + case "craft": + if(command.hasItem()) { + Class clazz; + CraftableItem object; + try { + clazz = Class.forName("com.bayviewglen.zork.Items." + command.getItem().substring(0, 1).toUpperCase().trim() + command.getItem().substring(1).trim()); + Constructor ctor = clazz.getConstructor(); + object = (CraftableItem) ctor.newInstance(); + if(object.isCraftable()) { + boolean playerHasItems = true; + boolean hasItem = false; + for(Item i : object.getMaterials()) { + hasItem = false; + for(Item pi : player.getInventory()) { + if(i.equals(pi)) { + hasItem = true; + } + } + if(playerHasItems) { + playerHasItems = hasItem; + } + } + if(playerHasItems) { + if(player.addToInventory(object)) { + for(Item i : object.getMaterials()) { + player.removeFromInventory(i); + } + System.out.println("You have crafted a " + object.getName()); + }else { + System.out.println("You cannot carry any more!"); + } + }else { + System.out.println("You do not have the nessecary parts to make a " + object.getName() + "!"); + } + + }else { + System.out.println("You cannot make that item!"); + } + }catch(Exception e) { + System.out.println("You cannot make that item!"); + } + }else { + System.out.println("Craft what?"); + } + break; default: return false; } diff --git a/src/com/bayviewglen/zork/Items/Batteringram.java b/src/com/bayviewglen/zork/Items/Batteringram.java new file mode 100644 index 0000000..be8392f --- /dev/null +++ b/src/com/bayviewglen/zork/Items/Batteringram.java @@ -0,0 +1,10 @@ +package com.bayviewglen.zork.Items; + +public class Batteringram extends CraftableItem{ + public Batteringram() { + super(99, "Battering Ram", "Description", false, 1, 1); + super.addMaterial(new Base()); + super.addMaterial(new Cylinder()); + super.addMaterial(new Point()); + } +} \ No newline at end of file diff --git a/src/com/bayviewglen/zork/Items/CraftableItem.java b/src/com/bayviewglen/zork/Items/CraftableItem.java new file mode 100644 index 0000000..5fffe2e --- /dev/null +++ b/src/com/bayviewglen/zork/Items/CraftableItem.java @@ -0,0 +1,20 @@ +package com.bayviewglen.zork.Items; + +import java.util.ArrayList; + +public class CraftableItem extends Item{ + private ArrayList materials; + public CraftableItem(int id, String name, String description, boolean isConsumable, int health, int weight) { + super(id, name, description, isConsumable, health, weight); + materials = new ArrayList(); + } + public boolean isCraftable() { + return true; + } + public void addMaterial(Item item) { + materials.add(item); + } + public ArrayList getMaterials(){ + return materials; + } +} diff --git a/src/com/bayviewglen/zork/Items/Item.java b/src/com/bayviewglen/zork/Items/Item.java index 5dfbd20..7e922bb 100644 --- a/src/com/bayviewglen/zork/Items/Item.java +++ b/src/com/bayviewglen/zork/Items/Item.java @@ -67,5 +67,7 @@ public class Item { public int getDamage() { return this.damage; } - + public boolean isCraftable() { + return false; + } } From cfc9741f19dcbfe01f796b8f542f12c62b63ba57 Mon Sep 17 00:00:00 2001 From: jslightham <31053827+jslightham@users.noreply.github.com> Date: Fri, 31 May 2019 19:14:21 -0400 Subject: [PATCH 2/4] enemy drop loot on death --- data/enemies.dat | 3 ++- data/rooms.dat | 2 +- .../bayviewglen/zork/Entities/Enemies/Enemy.java | 7 +++++++ src/com/bayviewglen/zork/Game.java | 16 +++++++++++++++- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/data/enemies.dat b/data/enemies.dat index 20db5aa..b147638 100644 --- a/data/enemies.dat +++ b/data/enemies.dat @@ -1,4 +1,5 @@ Enemy Name: Henry Pellatt Description: The owner of the Castle Starting Room: Circle Room -Damage Given: 25 \ No newline at end of file +Damage Given: 25 +Loot: Crowbar \ No newline at end of file diff --git a/data/rooms.dat b/data/rooms.dat index ee27cde..17cc1d6 100644 --- a/data/rooms.dat +++ b/data/rooms.dat @@ -2,7 +2,7 @@ Room name: Circle Room Room Description: You are in a circular room. The windows to the east are covered with boards that
let in just enough light to see. You spot a man in a tailored suit moving some crates around. Locked: false Boarded: false -Items: Lightbulb,Candlestick +Items: Lightbulb,Candlestick,Sword Riddler: "Hello there. My name is Kevin and I am Sir Pellatt's butler. I understand that my master
Sir Pellatt has wrongfully imprisoned you. If you answer my riddle I can give you something to
help you with your escape - nothing comes for free you know!", "What goes moo?", "Cows", Lockpick Exit Rooms: W-Apple Hallway diff --git a/src/com/bayviewglen/zork/Entities/Enemies/Enemy.java b/src/com/bayviewglen/zork/Entities/Enemies/Enemy.java index 1128342..bf5e804 100644 --- a/src/com/bayviewglen/zork/Entities/Enemies/Enemy.java +++ b/src/com/bayviewglen/zork/Entities/Enemies/Enemy.java @@ -7,6 +7,7 @@ public class Enemy extends Entity{ private String name; private String description; private String room; + private String loot; private boolean blinded; public Enemy(){ @@ -54,4 +55,10 @@ public class Enemy extends Entity{ public void setBlinded(boolean blinded) { this.blinded = blinded; } + public void setLoot(String loot) { + this.loot = loot; + } + public String getLoot() { + return loot; + } } diff --git a/src/com/bayviewglen/zork/Game.java b/src/com/bayviewglen/zork/Game.java index 7dc9af3..9d17876 100644 --- a/src/com/bayviewglen/zork/Game.java +++ b/src/com/bayviewglen/zork/Game.java @@ -159,6 +159,9 @@ class Game { // Read the Damage Given int damageGiven = Integer.parseInt(enemyScanner.nextLine().split(":")[1].trim()); e.setDamageGiven(damageGiven); + // Read the Loot + String loot = enemyScanner.nextLine().split(":")[1].trim(); + e.setLoot(loot); } }catch(Exception ex) { } @@ -224,7 +227,18 @@ class Game { while (!finished) { if(currentCombat != null) { if(currentCombat.getEnemy().getHealth() <= 0.0) { - System.out.println("You destroyed " + currentCombat.getEnemy().getName()); + System.out.print("You destroyed " + currentCombat.getEnemy().getName() + "! "); + System.out.println(currentCombat.getEnemy().getName() + " seems to have dropped a " + currentCombat.getEnemy().getLoot()); + Class clazz; + Item object = null; + try { + clazz = Class.forName("com.bayviewglen.zork.Items." + currentCombat.getEnemy().getLoot().substring(0, 1).toUpperCase().trim() + currentCombat.getEnemy().getLoot().substring(1).trim()); + Constructor ctor = clazz.getConstructor(); + object = (Item) ctor.newInstance(); + }catch (Exception e) { + + } + currentRoom.addItem(object); masterEnemyMap.values().remove(currentRoom.getRoomName()); currentCombat = null; } From 67839c569e6b00080a9309aeb358ddaa30a8d47a Mon Sep 17 00:00:00 2001 From: jslightham <31053827+jslightham@users.noreply.github.com> Date: Fri, 31 May 2019 19:46:51 -0400 Subject: [PATCH 3/4] added lady pellatt --- data/enemies.dat | 5 +++++ data/rooms.dat | 4 ++-- data/synonyms.dat | 2 +- data/words.dat | 3 ++- src/com/bayviewglen/zork/Game.java | 4 ++-- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/data/enemies.dat b/data/enemies.dat index b147638..9a6e5f3 100644 --- a/data/enemies.dat +++ b/data/enemies.dat @@ -2,4 +2,9 @@ Enemy Name: Henry Pellatt Description: The owner of the Castle Starting Room: Circle Room Damage Given: 25 +Loot: Crowbar +Enemy Name: Lady Pellatt +Description: The wife to the owner of the Castle +Starting Room: Lady Pellatt's Bedroom +Damage Given: 25 Loot: Crowbar \ No newline at end of file diff --git a/data/rooms.dat b/data/rooms.dat index 17cc1d6..2e1714c 100644 --- a/data/rooms.dat +++ b/data/rooms.dat @@ -2,7 +2,7 @@ Room name: Circle Room Room Description: You are in a circular room. The windows to the east are covered with boards that
let in just enough light to see. You spot a man in a tailored suit moving some crates around. Locked: false Boarded: false -Items: Lightbulb,Candlestick,Sword +Items: Lightbulb,Candlestick Riddler: "Hello there. My name is Kevin and I am Sir Pellatt's butler. I understand that my master
Sir Pellatt has wrongfully imprisoned you. If you answer my riddle I can give you something to
help you with your escape - nothing comes for free you know!", "What goes moo?", "Cows", Lockpick Exit Rooms: W-Apple Hallway @@ -146,7 +146,7 @@ Room name: Evergreen Bedroom Room Description: Oh look! Another bedroom! How exciting! This one's walls are even green this time.
Cool! Locked: false Boarded: false -Items: +Items:Sword Riddler: Exit Rooms: N-Silver Stairs (2nd Floor), W-Aspen Bedroom diff --git a/data/synonyms.dat b/data/synonyms.dat index 3267bc8..88fd225 100644 --- a/data/synonyms.dat +++ b/data/synonyms.dat @@ -45,7 +45,7 @@ absorb, eat drink, eat i, inventory henry, henrypellatt -pellatt, henrypellatt +lady, ladypellatt shaving, shavingcream cream, shavingcream water, waterbottle diff --git a/data/words.dat b/data/words.dat index 704478d..08032e7 100644 --- a/data/words.dat +++ b/data/words.dat @@ -64,4 +64,5 @@ clock, item keyboard, item lightbulb, item craft, verb -batteringram, item \ No newline at end of file +batteringram, item +ladypellatt, enemy \ No newline at end of file diff --git a/src/com/bayviewglen/zork/Game.java b/src/com/bayviewglen/zork/Game.java index 9d17876..1a975b9 100644 --- a/src/com/bayviewglen/zork/Game.java +++ b/src/com/bayviewglen/zork/Game.java @@ -304,7 +304,7 @@ class Game { }else if(!command.hasDirection()){ System.out.println("In what direction do you want to go in?"); }else { - System.out.println("What do you want to open the door with?"); + System.out.println("What do you want to unlock the door with?"); } boolean hasCrowbar = false; for(int i =0; i Date: Fri, 31 May 2019 19:57:43 -0400 Subject: [PATCH 4/4] fixed enemy bug --- data/enemies.dat | 2 +- src/com/bayviewglen/zork/Game.java | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/data/enemies.dat b/data/enemies.dat index 9a6e5f3..668d236 100644 --- a/data/enemies.dat +++ b/data/enemies.dat @@ -1,6 +1,6 @@ Enemy Name: Henry Pellatt Description: The owner of the Castle -Starting Room: Circle Room +Starting Room: Apple Hallway Damage Given: 25 Loot: Crowbar Enemy Name: Lady Pellatt diff --git a/src/com/bayviewglen/zork/Game.java b/src/com/bayviewglen/zork/Game.java index 1a975b9..f8345b4 100644 --- a/src/com/bayviewglen/zork/Game.java +++ b/src/com/bayviewglen/zork/Game.java @@ -162,10 +162,12 @@ class Game { // Read the Loot String loot = enemyScanner.nextLine().split(":")[1].trim(); e.setLoot(loot); + masterEnemyMap.put(e, e.getRoom()); } }catch(Exception ex) { } - masterEnemyMap.put(e, e.getRoom()); + + enemyScanner.close(); } @@ -295,11 +297,17 @@ class Game { nextRoom.setLocked(false); player.removeFromInventory(new Lockpick()); System.out.println("After a little bit of picking, a click is heard and the door opens slightly!"); + if(!nextRoom.getBoarded()) + break; }else{ System.out.println("That door is already unlocked!"); + if(!nextRoom.getBoarded()) + break; } }catch(Exception e) { System.out.println("There is no door there!"); + if(!nextRoom.getBoarded()) + break; } }else if(!command.hasDirection()){ System.out.println("In what direction do you want to go in?");