From 8bb33ccf2bfb5b6ca84f095361ddb5ac9ddd3c1c Mon Sep 17 00:00:00 2001 From: Wim Wenigerkind Date: Tue, 18 Feb 2025 14:21:39 +0100 Subject: [PATCH] zuul6 --- src/de/szut/zuul/Game.java | 11 +++++++++++ src/de/szut/zuul/Item.java | 28 ++++++++++++++++++++++++++++ src/de/szut/zuul/Room.java | 32 ++++++++++++++++++++++++++++++-- 3 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 src/de/szut/zuul/Item.java diff --git a/src/de/szut/zuul/Game.java b/src/de/szut/zuul/Game.java index 71420b7..00f39e2 100644 --- a/src/de/szut/zuul/Game.java +++ b/src/de/szut/zuul/Game.java @@ -51,6 +51,17 @@ public class Game basement = new Room("in a basement"); wizardsRoom = new Room("in a wizards room"); + // add items to rooms + marketsquare.putItem(new Item("Bogen", "ein Bogen aus Holz", 0.5)); + cave.putItem(new Item("Schatz", "eine kleine Schatztruhe mit Münzen", 7.5)); + wizardsRoom.putItem(new Item("Pfeile", "ein Köcher mit diversen Pfeilen", 1)); + jungle.putItem(new Item("Pflanze", "eine Heilpflanze", 0.5)); + jungle.putItem(new Item("Kakao", "ein kleiner Kakaobaum", 5)); + sacrificialSite.putItem(new Item("Messer", "ein sehr scharfes, großes Messer", 1)); + hut.putItem(new Item("Speer", "ein Speer mit dazugehöriger Schleuder", 5.0)); + tavern.putItem(new Item("Nahrung", "ein Teller mit deftigem Fleisch und Maisbrei", 0.5)); + basement.putItem(new Item("Schmuck", "ein sehr hübscher Kopfschmuck", 1)); + // initialise room exits marketsquare.setExit("north", tavern); marketsquare.setExit("east", templePyramid); diff --git a/src/de/szut/zuul/Item.java b/src/de/szut/zuul/Item.java new file mode 100644 index 0000000..b33c3e5 --- /dev/null +++ b/src/de/szut/zuul/Item.java @@ -0,0 +1,28 @@ +package de.szut.zuul; + +import java.util.HashMap; + +public class Item { + private String name; + private String description; + private double weight; + public Item(String name, String description, double weight) { + this.name = name; + this.description = description; + this.weight = weight; + } + + @Override + public String toString() { + return "Item{name='" + name + "', description='" + description + "', weight=" + weight + "}"; + } + public String getName() { + return name; + } + public String getDescription() { + return description; + } + public double getWeight() { + return weight; + } +} diff --git a/src/de/szut/zuul/Room.java b/src/de/szut/zuul/Room.java index acfe99e..af475cb 100644 --- a/src/de/szut/zuul/Room.java +++ b/src/de/szut/zuul/Room.java @@ -20,7 +20,7 @@ public class Room { private String description; private HashMap roomExits; - + private HashMap items; /** * Create a room described "description". Initially, it has * no exits. "description" is something like "a kitchen" or @@ -31,6 +31,7 @@ public class Room { this.description = description; this.roomExits = new HashMap<>(); + this.items = new HashMap<>(); } /** @@ -49,7 +50,7 @@ public class Room return description; } public String getLongDescription() { - return "You are " + getDescription() + "\nExits: " + exitsToString(); + return "You are " + getDescription() + "\nExits: " + exitsToString() + "\nItems in this room:\n" + getItemDescription(); } public String exitsToString() { StringBuilder exitsInString = new StringBuilder(); @@ -63,4 +64,31 @@ public class Room public Room getExits(String direction) { return roomExits.get(direction); } + public void putItem(Item newItem) { + items.put(newItem.getName(), newItem); + } + + public Item removeItem(String itemName) { + return items.remove(itemName); + } + private String getItemDescription() { + if (items.isEmpty()) { + return "No items in this room."; + } + StringBuilder itemDescription = new StringBuilder(); + for (Item item : items.values()) { + itemDescription.append("- ") + .append(item.getName()).append(", ") + .append(item.getDescription()).append(", ") + .append(item.getWeight()).append("kg\n"); + } + return itemDescription.toString().trim(); + } + public String itemsToString() { + StringBuilder itemsInString = new StringBuilder(); + for (String itemName : items.keySet()) { + itemsInString.append(itemName).append(" "); + } + return itemsInString.toString().trim(); + } }