Juliakn66
2 years ago
16 changed files with 567 additions and 16 deletions
-
24playerconfig.json
-
2src/main/java/org/bitbiome/classes/Shop.java
-
3src/main/java/org/bitbiome/classes/TravelEngine.java
-
65src/main/java/org/bitbiome/commands/CollectCommand.java
-
4src/main/java/org/bitbiome/commands/CommandListener.java
-
16src/main/java/org/bitbiome/commands/HelpCommand.java
-
32src/main/java/org/bitbiome/commands/InventoryCommand.java
-
138src/main/java/org/bitbiome/commands/LookaroundCommand.java
-
14src/main/java/org/bitbiome/entities/Player.java
-
12src/main/resources/gameconfig.json
-
4src/main/resources/items.json
-
14src/main/resources/playerconfig.json
-
2src/main/resources/quiz.json
-
26src/test/java/org/bitbiome/commands/CollectCommandTest.java
-
33src/test/java/org/bitbiome/commands/InventoryCommandTest.java
-
194src/test/java/org/bitbiome/commands/LookaroundCommandTest.java
@ -0,0 +1,24 @@ |
|||||
|
{ |
||||
|
"gold": 0, |
||||
|
"name": "Julia", |
||||
|
"hp": 10, |
||||
|
"inventory": [ |
||||
|
{ |
||||
|
"gold": 5, |
||||
|
"damage": "10", |
||||
|
"amount": 6, |
||||
|
"durability": 1000, |
||||
|
"name": "Holz", |
||||
|
"doesDamage": true |
||||
|
}, |
||||
|
{ |
||||
|
"gold": 5, |
||||
|
"damage": "10", |
||||
|
"amount": 5, |
||||
|
"durability": 1000, |
||||
|
"name": "Stein", |
||||
|
"doesDamage": true |
||||
|
} |
||||
|
], |
||||
|
"currentLocation": "Wald" |
||||
|
} |
@ -0,0 +1,65 @@ |
|||||
|
package org.bitbiome.commands; |
||||
|
|
||||
|
import org.bitbiome.classes.Colors; |
||||
|
import org.bitbiome.classes.JsonParser; |
||||
|
import org.bitbiome.classes.TravelEngine; |
||||
|
import org.bitbiome.entities.Item; |
||||
|
import org.json.JSONArray; |
||||
|
import org.json.JSONObject; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.Scanner; |
||||
|
|
||||
|
public class CollectCommand implements CommandAPI { |
||||
|
@Override |
||||
|
public void performCommand(Scanner scanner, boolean isRunning, String message, TravelEngine travelEngine) { |
||||
|
StringBuilder s = new StringBuilder(); |
||||
|
JsonParser jp = new JsonParser(); |
||||
|
JSONObject o = jp.getJSONObject("playerconfig.json"); |
||||
|
JSONArray inventory = o.getJSONArray("inventory"); |
||||
|
|
||||
|
ArrayList<Item> location = travelEngine.getPlayer().getLocation().getItemList(); |
||||
|
ArrayList<Item> getInventory = travelEngine.getPlayer().getInventory(); |
||||
|
|
||||
|
System.out.println("Was willst du einsammeln?"); |
||||
|
String item = new String(); |
||||
|
item = scanner.nextLine(); |
||||
|
|
||||
|
collectItem(location, item, jp, o, inventory,getInventory); |
||||
|
} |
||||
|
public void collectItem(ArrayList<Item> location, String item, JsonParser jp, JSONObject o, JSONArray inventory, ArrayList<Item> getInventory) { |
||||
|
for (int i = 0; i < location.size(); i++) { |
||||
|
if (item.equals(location.get(i).getName())) { |
||||
|
JSONObject o1 = new JSONObject(); |
||||
|
for (int j = 0; j < getInventory.size(); j++) { |
||||
|
if (getInventory.get(j).getName().equals(item)) { |
||||
|
getInventory.get(j).setAmount(getInventory.get(j).getAmount() + 1); |
||||
|
for (int k = 0; k < inventory.length(); k++) { |
||||
|
if (inventory.getJSONObject(k).getString("name").equals(item)) { |
||||
|
increaseAmountInPlayerConfig(inventory,k,jp,o); |
||||
|
return; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
writeNewItem(location, getInventory, o1, inventory, i, jp, o); |
||||
|
} |
||||
|
} System.out.println("Es gibt kein Item, dass du einsammeln kannst."); |
||||
|
} |
||||
|
public void writeNewItem(ArrayList<Item> location, ArrayList<Item> getInventory, JSONObject o1, JSONArray inventory, int i, JsonParser jp, JSONObject o){ |
||||
|
o1.put("name", location.get(i).getName()).put("doesDamage", location.get(i).doesDamage()).put("damage", location.get(i).getDamage()).put("amount", 1).put("durability", 1000); |
||||
|
inventory.put(o1); |
||||
|
jp.writeObject("playerconfig.json", o); |
||||
|
getInventory.add(location.get(i)); |
||||
|
location.remove(i); |
||||
|
} |
||||
|
public void increaseAmountInPlayerConfig(JSONArray inventory, int k, JsonParser jp, JSONObject o){ |
||||
|
JSONObject o2 = new JSONObject(); |
||||
|
int amountItemsInPlayerconfig = 0; |
||||
|
amountItemsInPlayerconfig = inventory.getJSONObject(k).getInt("amount"); |
||||
|
inventory.getJSONObject(k).put("amount", amountItemsInPlayerconfig + 1); |
||||
|
jp.writeObject("playerconfig.json", o); |
||||
|
System.out.println(Colors.ANSI_YELLOW +"Du hast das Item eingesammelt."+ Colors.ANSI_RESET); |
||||
|
} |
||||
|
} |
||||
|
|
@ -0,0 +1,32 @@ |
|||||
|
package org.bitbiome.commands; |
||||
|
|
||||
|
import org.bitbiome.classes.Colors; |
||||
|
import org.bitbiome.classes.JsonParser; |
||||
|
import org.bitbiome.classes.TravelEngine; |
||||
|
import org.bitbiome.entities.Item; |
||||
|
import org.json.JSONObject; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.Scanner; |
||||
|
|
||||
|
public class InventoryCommand implements CommandAPI { |
||||
|
@Override |
||||
|
public void performCommand(Scanner scanner, boolean isRunning, String message, TravelEngine travelEngine) { |
||||
|
|
||||
|
System.out.println(readInv(travelEngine)); |
||||
|
} |
||||
|
|
||||
|
public String readInv(TravelEngine travelEngine) { |
||||
|
StringBuilder s = new StringBuilder(); |
||||
|
|
||||
|
ArrayList<Item> inventory = travelEngine.getPlayer().getInventory(); |
||||
|
s.append(Colors.ANSI_PURPLE +"Du möchtest wissen, was in deinem Inventar ist? \n" + |
||||
|
"Dann lass uns gemeinsam deinen Rucksack öffnen. \nDein Rucksack steckt ja voller Überraschungen! \n" + |
||||
|
"Das hast du alles schon gefunden: \n"+ Colors.ANSI_RESET); |
||||
|
for (int i=0; i < inventory.size(); i++){ |
||||
|
s.append(Colors.ANSI_BG_PURPLE+ Colors.ANSI_BRIGHT_WHITE+ "- ").append(inventory.get(i).getName()).append(" x").append(inventory.get(i).getAmount()).append(" "+ Colors.ANSI_RESET + "\n" ); |
||||
|
} |
||||
|
|
||||
|
return s.toString(); |
||||
|
} |
||||
|
} |
@ -0,0 +1,138 @@ |
|||||
|
package org.bitbiome.commands; |
||||
|
|
||||
|
import org.bitbiome.classes.Colors; |
||||
|
import org.bitbiome.classes.JsonParser; |
||||
|
import org.bitbiome.classes.Shop; |
||||
|
import org.bitbiome.classes.TravelEngine; |
||||
|
import org.bitbiome.entities.*; |
||||
|
import org.json.JSONArray; |
||||
|
import org.json.JSONObject; |
||||
|
import org.json.JSONTokener; |
||||
|
|
||||
|
import java.io.InputStream; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.Random; |
||||
|
import java.util.Scanner; |
||||
|
|
||||
|
public class LookaroundCommand implements CommandAPI{ |
||||
|
@Override |
||||
|
public void performCommand(Scanner scanner, boolean isRunning, String message, TravelEngine travelEngine) { |
||||
|
StringBuilder outputMessage = new StringBuilder(); |
||||
|
Location location = travelEngine.getPlayer().getLocation(); |
||||
|
JsonParser jp = new JsonParser(); |
||||
|
JSONObject gameConfig = jp.getJSONObject("src/main/resources/gameconfig.json"); |
||||
|
JSONArray locations = gameConfig.getJSONArray("locations"); |
||||
|
JSONObject locationObject = getLocationObject(location.getName(), locations); |
||||
|
JSONArray items = locationObject.getJSONArray("items"); |
||||
|
JSONArray mobs = locationObject.getJSONArray("mobs"); |
||||
|
|
||||
|
Random random = new Random(); |
||||
|
int randomNumberItems = random.nextInt(items.length()+1); |
||||
|
int randomNumberMobs = random.nextInt(mobs.length()+1); |
||||
|
ArrayList<Item> foundItems = location.getItemList(); |
||||
|
foundItems.removeAll(foundItems); |
||||
|
ArrayList<Mob> foundMobs = location.getMobList(); |
||||
|
foundMobs.removeAll(foundMobs); |
||||
|
foundItems = getRandomItem(randomNumberItems, random, items, foundItems); |
||||
|
foundMobs = getRandomMob(randomNumberMobs,random,mobs,foundMobs); |
||||
|
|
||||
|
getLocationDescription(location,outputMessage); |
||||
|
getItemsOutput(randomNumberItems,outputMessage,foundItems); |
||||
|
getMobsOutput(randomNumberItems,randomNumberMobs,outputMessage, foundMobs); |
||||
|
System.out.println(outputMessage); |
||||
|
|
||||
|
} |
||||
|
public JSONObject getLocationObject(String locationName, JSONArray locations) { |
||||
|
for (int i = 1; i < locations.length(); i++) { |
||||
|
if(locations.getJSONObject(i).getString("name").equals(locationName)){ |
||||
|
return locations.getJSONObject(i); |
||||
|
} |
||||
|
} |
||||
|
return locations.getJSONObject(0); |
||||
|
} |
||||
|
public ArrayList<Item> getRandomItem(int randomNumberItems, Random random, JSONArray items, ArrayList<Item> foundItems ) { |
||||
|
for (int i=0; i<randomNumberItems; i++){ |
||||
|
String s1 = items.getString(random.nextInt(items.length())); |
||||
|
|
||||
|
JSONArray jp3 = Shop.returnJSONArrayOfAllItems(); |
||||
|
JSONObject jp2= jp3.getJSONObject(0); |
||||
|
for (int j=1; j<jp3.length(); j++ ){ |
||||
|
if(jp3.getJSONObject(j).getString("name").equals(s1)){ |
||||
|
jp2 = jp3.getJSONObject(j); |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
Item randomItem = new Item (jp2.getString("name"),jp2.getBoolean("doesDamage"),jp2.getString("damage"),1, jp2.getInt("gold")); |
||||
|
foundItems.add(randomItem); |
||||
|
} |
||||
|
return foundItems; |
||||
|
} |
||||
|
|
||||
|
public ArrayList<Mob> getRandomMob(int randomNumberMobs, Random random, JSONArray mobs, ArrayList<Mob> foundMobs){ |
||||
|
for (int i=0; i<randomNumberMobs; i++){ |
||||
|
JSONObject jp2 = mobs.getJSONObject(random.nextInt(mobs.length())); |
||||
|
Mob randomMob = new Mob (jp2.getString("name"),jp2.getBoolean("isFriendly"),jp2.getFloat("hp"),jp2.getFloat("damage")); |
||||
|
foundMobs.add(randomMob); |
||||
|
} return foundMobs; |
||||
|
} |
||||
|
|
||||
|
public void getItemsOutput(int randomNumberItems, StringBuilder outputMessage, ArrayList<Item> foundItems){ |
||||
|
if (randomNumberItems != 0){ |
||||
|
outputMessage.append(Colors.ANSI_BLUE +"Huch, was liegt denn hier rum?\n"+ Colors.ANSI_RESET); |
||||
|
for (int i = 0; i < foundItems.size(); i++){ |
||||
|
outputMessage. append("- ").append(foundItems.get(i).getName()+"\n"); |
||||
|
} |
||||
|
outputMessage.append(Colors.ANSI_BLUE +"Schnell, sammel es ein!\n"+ Colors.ANSI_RESET); |
||||
|
} |
||||
|
else { |
||||
|
outputMessage.append(Colors.ANSI_BLUE+ "Hier gibt es leider nichts für dich zum Einsammeln.\n"+ Colors.ANSI_RESET); |
||||
|
} |
||||
|
} |
||||
|
public void getMobsOutput(int randomNumberItems, int randomNumberMobs, StringBuilder outputMessage, ArrayList<Mob> foundMobs){ |
||||
|
if (randomNumberMobs != 0){ |
||||
|
outputMessage.append(Colors.ANSI_RED+"Achtung, hier lauern Gefahren!"+Colors.ANSI_RESET +"Sei auf der Hut vor: \n"); |
||||
|
for (int i = 0; i < foundMobs.size(); i++){ |
||||
|
outputMessage. append( "- ").append(foundMobs.get(i).getName()+"\n"); |
||||
|
} |
||||
|
} |
||||
|
if((randomNumberMobs ==0) && (randomNumberItems == 0)){ |
||||
|
outputMessage.append("Hier gibt es sonst nichts weiter zu sehen. Reise weiter!\n"); |
||||
|
} |
||||
|
} |
||||
|
public void getLocationDescription(Location location, StringBuilder outputMessage) { |
||||
|
switch (location.getName()) { |
||||
|
case "Wald" -> |
||||
|
outputMessage.append("Du befindest dich mitten im Wald, um dich herum siehst du hohe Buchen, kleine Sträucher und Farne.\n" + |
||||
|
"Der Boden ist mit weichem Moos, Pilzen und Laub bedeckt, in der Nähe hörst du Vögel munter zwitschern und\n" + |
||||
|
"einen kleinen Bach, der sich durch das dichte Unterholz schlängelt." + |
||||
|
" Schau mal, dort hinten in der Ferne ist ein Eichhörnchen! \n"); |
||||
|
case "Strand" -> |
||||
|
outputMessage.append("Du befindest dich mitten am Strand und blickst auf das Meer, das sich bis zum Horizont erstreckt.\n" + |
||||
|
"Du spürst den Sand an deinen Füßen, du hörst das weiche Rauschen des Meeres und das Lachen der Möwen über dir.\n" + |
||||
|
"Rechts und links von dir erstreckt sich der weite, weiße Sandstrand, dort hinten bauen Kinder eine Sandburg.\n" + |
||||
|
"Es gibt ein paar Palmen, die den Strand säumen und weit in der Ferne ragen Felsen aus dem Meer.\n"); |
||||
|
case "Winterland" -> |
||||
|
outputMessage.append("Um dich herum ragen hohe Berge in den Himmel, bedeckt von einer dicken Schicht aus Schnee. Du hörst\n" + |
||||
|
"das Knirschen des Schnees unter deinen Füßen und das Rauschen des eisigen Windes. In der Ferne siehst du Tannenbäume,\n" + |
||||
|
"die sich unter der Last des Schnees biegen, und dichte Flocken fallen sanft aus dem grauen Himmel. Es ist kalt, du siehst,\n" + |
||||
|
"wie dein Atem kleine Wolken bildet. Es ist still, aber auch ein wenig unheimlich.\n"); |
||||
|
case "Berge"-> |
||||
|
outputMessage.append("Du befindest dich in einer majestätischen Berglandschaft mit hohen Gipfen und tiefen Tälern.\n" + |
||||
|
"Die Luft ist frisch und klar, der Klang von rauschenden Bächen und Wasserfällen erfüllt die Umgebung.\n" + |
||||
|
"Die Berge sind mit grünen Wäldern bedeckt und vereinzelt siehst du wilde Tiere herumstreifen.\n"); |
||||
|
case "Grünland"-> |
||||
|
outputMessage.append("Du befindest dich in einer weiten und grünen Landschaft. Überall um dich herum wachsen hohe Gräser und Wildblumen. \n" + |
||||
|
"In der Ferne erkennst du sanfte Hügel mit einer Herde von Schafen und Kühen.Die Luft ist erfüllt von dem Duft der Natur \n" + |
||||
|
"und dem Summen von Insekten. Es herrscht eine friedliche Stille, nur unterbrochen vom gelegentlichen Ruf eines Vogels."); |
||||
|
case "Wüste"-> |
||||
|
outputMessage.append("Du befindest dich mitten in der Wüste. Weit und breit ist nichts anderes zu sehen außer Dünen, vertrocknete Sträucher und Tonnen von Sand.\n" + |
||||
|
"Es ist staubig, der sandige Boden unter deinen Füßen knirscht bei jedem Schritt und die Sonnen brennt auf dich herab. Nimm dich in Acht vor der Wüstenhitze \n" + |
||||
|
"und den Gefahren, die hinter den Dünen lauern. Beeil dich, aus dieser unendlichen Ebene zu entkommen.\n"); |
||||
|
default -> { |
||||
|
} |
||||
|
//location description not found |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,26 @@ |
|||||
|
package org.bitbiome.commands; |
||||
|
|
||||
|
import org.bitbiome.classes.JsonParser; |
||||
|
import org.json.JSONArray; |
||||
|
import org.json.JSONObject; |
||||
|
import org.junit.jupiter.api.Test; |
||||
|
|
||||
|
|
||||
|
import static org.junit.jupiter.api.Assertions.assertEquals; |
||||
|
|
||||
|
public class CollectCommandTest { |
||||
|
|
||||
|
@Test |
||||
|
public void testIncreaseAmountInPlayerConfig() { |
||||
|
CollectCommand command = new CollectCommand(); |
||||
|
JsonParser jp = new JsonParser(); |
||||
|
JSONObject o = jp.getJSONObject("src/main/resources/playerconfig.json"); |
||||
|
JSONArray inventory = o.getJSONArray("inventory"); |
||||
|
int k = 0; |
||||
|
int initialAmount = inventory.getJSONObject(k).getInt("amount"); |
||||
|
command.increaseAmountInPlayerConfig(inventory, k, jp, o); |
||||
|
int finalAmount = inventory.getJSONObject(k).getInt("amount"); |
||||
|
assertEquals(initialAmount + 1, finalAmount); |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,33 @@ |
|||||
|
package org.bitbiome.commands; |
||||
|
|
||||
|
import org.bitbiome.classes.Colors; |
||||
|
import org.bitbiome.classes.TravelEngine; |
||||
|
import org.bitbiome.entities.Item; |
||||
|
import org.bitbiome.entities.Player; |
||||
|
import org.junit.jupiter.api.Test; |
||||
|
import java.util.ArrayList; |
||||
|
|
||||
|
import static org.junit.jupiter.api.Assertions.assertEquals; |
||||
|
|
||||
|
public class InventoryCommandTest { |
||||
|
@Test |
||||
|
public void testReadInv(){ |
||||
|
InventoryCommand command = new InventoryCommand(); |
||||
|
TravelEngine travelEngine = new TravelEngine(new Player("Unit")); |
||||
|
ArrayList<Item> inventory = new ArrayList<>(); |
||||
|
inventory.add(new Item("Holz", false, "0",5, 3)); |
||||
|
inventory.add(new Item("Stein", true, "10", 5, 4)); |
||||
|
travelEngine.getPlayer().setInventory(inventory); |
||||
|
|
||||
|
String expectedResult = Colors.ANSI_PURPLE + "Du möchtest wissen, was in deinem Inventar ist? \n" + |
||||
|
"Dann lass uns gemeinsam deinen Rucksack öffnen. \nDein Rucksack steckt ja voller Überraschungen! \n" + |
||||
|
"Das hast du alles schon gefunden: \n" + Colors.ANSI_RESET + |
||||
|
Colors.ANSI_BG_PURPLE + Colors.ANSI_BRIGHT_WHITE + "- " + "Holz" + " x" + 5 + " " + Colors.ANSI_RESET + "\n" + |
||||
|
Colors.ANSI_BG_PURPLE + Colors.ANSI_BRIGHT_WHITE + "- " + "Stein" + " x" + 5 + " " + Colors.ANSI_RESET + "\n"; |
||||
|
|
||||
|
String result = command.readInv(travelEngine); |
||||
|
assertEquals(expectedResult, result); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
@ -0,0 +1,194 @@ |
|||||
|
package org.bitbiome.commands; |
||||
|
|
||||
|
import org.bitbiome.classes.Colors; |
||||
|
import org.bitbiome.entities.Item; |
||||
|
import org.bitbiome.entities.Location; |
||||
|
import org.bitbiome.entities.Mob; |
||||
|
import org.json.JSONArray; |
||||
|
import org.json.JSONObject; |
||||
|
import org.junit.jupiter.api.Test; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.Random; |
||||
|
|
||||
|
import static org.junit.jupiter.api.Assertions.assertEquals; |
||||
|
import static org.junit.jupiter.api.Assertions.assertTrue; |
||||
|
|
||||
|
|
||||
|
public class LookaroundCommandTest { |
||||
|
private JSONArray locations; |
||||
|
|
||||
|
@Test |
||||
|
public void testGetLocationObject(){ |
||||
|
LookaroundCommand command = new LookaroundCommand(); |
||||
|
locations = new JSONArray(); |
||||
|
JSONObject location1 = new JSONObject(); |
||||
|
location1.put("name", "Wald"); |
||||
|
location1.put("description", "Es gibt Bäume und Sträucher"); |
||||
|
JSONObject location2 = new JSONObject(); |
||||
|
location2.put("name", "Strand"); |
||||
|
location2.put("description", "Weiter, weißer Sandstrand am Meer"); |
||||
|
locations.put(location1); |
||||
|
locations.put(location2); |
||||
|
|
||||
|
JSONObject result = command.getLocationObject("Wald", locations); |
||||
|
assertEquals("Wald", result.getString("name")); |
||||
|
assertEquals("Es gibt Bäume und Sträucher", result.getString("description")); |
||||
|
|
||||
|
result = command.getLocationObject("Strand", locations); |
||||
|
assertEquals("Strand", result.getString("name")); |
||||
|
assertEquals("Weiter, weißer Sandstrand am Meer", result.getString("description")); |
||||
|
|
||||
|
result = command.getLocationObject("not existing location", locations); |
||||
|
assertEquals("Wald", result.getString("name")); |
||||
|
assertEquals("Es gibt Bäume und Sträucher", result.getString("description")); |
||||
|
} |
||||
|
|
||||
|
@Test |
||||
|
public void testGetRandomMob() { |
||||
|
LookaroundCommand command = new LookaroundCommand(); |
||||
|
int randomNumberMobs = 2; |
||||
|
Random random = new Random(); |
||||
|
JSONArray mobs = new JSONArray(); |
||||
|
JSONObject mob1 = new JSONObject(); |
||||
|
mob1.put("name", "BigFoot"); |
||||
|
mob1.put("isFriendly", true); |
||||
|
mob1.put("hp", 10); |
||||
|
mob1.put("damage", "5"); |
||||
|
JSONObject mob2 = new JSONObject(); |
||||
|
mob2.put("name", "Yeti"); |
||||
|
mob2.put("isFriendly", false); |
||||
|
mob2.put("hp", 20); |
||||
|
mob2.put("damage", "10"); |
||||
|
mobs.put(mob1); |
||||
|
mobs.put(mob2); |
||||
|
ArrayList<Mob> foundMobs = new ArrayList<>(); |
||||
|
ArrayList<Mob> result = command.getRandomMob(randomNumberMobs, random, mobs, foundMobs); |
||||
|
|
||||
|
assertEquals(randomNumberMobs, result.size()); |
||||
|
for (Mob mob : result) { |
||||
|
assertTrue(mob.getName().equals("BigFoot") || mob.getName().equals("Yeti")); |
||||
|
} |
||||
|
} |
||||
|
@Test |
||||
|
public void testGetItemsOutputWithItems() { |
||||
|
LookaroundCommand command = new LookaroundCommand(); |
||||
|
int randomNumberItems = 3; |
||||
|
StringBuilder outputMessage = new StringBuilder(); |
||||
|
ArrayList<Item> foundItems = new ArrayList<Item>(); |
||||
|
foundItems.add(new Item("Holz", true, "10", 1,2)); |
||||
|
foundItems.add(new Item("Stein", true, "10", 1, 3)); |
||||
|
foundItems.add(new Item("Sand", false, "1", 1,3)); |
||||
|
command.getItemsOutput(randomNumberItems, outputMessage, foundItems); |
||||
|
String expectedOutput = Colors.ANSI_BLUE+ "Huch, was liegt denn hier rum?\n" + Colors.ANSI_RESET+ |
||||
|
"- Holz\n- Stein\n- Sand\n" + |
||||
|
Colors.ANSI_BLUE +"Schnell, sammel es ein!\n"+ Colors.ANSI_RESET; |
||||
|
assertEquals(expectedOutput, outputMessage.toString()); |
||||
|
} |
||||
|
@Test |
||||
|
public void testGetItemsOutputWithoutItems() { |
||||
|
LookaroundCommand command = new LookaroundCommand(); |
||||
|
int randomNumberItems = 0; |
||||
|
StringBuilder outputMessage = new StringBuilder(); |
||||
|
ArrayList<Item> foundItems = new ArrayList<Item>(); |
||||
|
command.getItemsOutput(randomNumberItems, outputMessage, foundItems); |
||||
|
String expectedOutput = Colors.ANSI_BLUE+ "Hier gibt es leider nichts für dich zum Einsammeln.\n"+ Colors.ANSI_RESET; |
||||
|
assertEquals(expectedOutput, outputMessage.toString()); |
||||
|
} |
||||
|
@Test |
||||
|
public void testGetMobsOutputWithMobs() { |
||||
|
LookaroundCommand command = new LookaroundCommand(); |
||||
|
int randomNumberMobs = 2; |
||||
|
int randomNumberItems = 0; |
||||
|
StringBuilder outputMessage = new StringBuilder(); |
||||
|
ArrayList<Mob> foundMobs = new ArrayList<>(); |
||||
|
foundMobs.add(new Mob("Big Foot", true, 50, 15)); |
||||
|
foundMobs.add(new Mob("Yeti", false, 70, 30)); |
||||
|
|
||||
|
command.getMobsOutput( randomNumberItems,randomNumberMobs, outputMessage, foundMobs); |
||||
|
|
||||
|
String expectedOutput = Colors.ANSI_RED+"Achtung, hier lauern Gefahren!"+Colors.ANSI_RESET +"Sei auf der Hut vor: \n- Big Foot\n- Yeti\n"; |
||||
|
assertEquals(expectedOutput, outputMessage.toString()); |
||||
|
} |
||||
|
@Test |
||||
|
public void testGetMobsOutputWithoutMobsAndItems() { |
||||
|
LookaroundCommand command = new LookaroundCommand(); |
||||
|
int randomNumberMobs = 0; |
||||
|
int randomNumberItems = 0; |
||||
|
StringBuilder outputMessage = new StringBuilder(); |
||||
|
ArrayList<Mob> foundMobs = new ArrayList<>(); |
||||
|
|
||||
|
command.getMobsOutput(randomNumberMobs, randomNumberItems, outputMessage, foundMobs); |
||||
|
|
||||
|
String expectedOutput = "Hier gibt es sonst nichts weiter zu sehen. Reise weiter!\n"; |
||||
|
assertEquals(expectedOutput, outputMessage.toString()); |
||||
|
} |
||||
|
@Test |
||||
|
void testGetRandomItem() throws Exception { |
||||
|
int randomNumberItems = 2; |
||||
|
JSONArray items = new JSONArray("[{\"name\":\"Holz\",\"doesDamage\":true,\"damage\":\"1.0\"},{\"name\":\"Stein\",\"doesDamage\":false,\"damage\":\"10.0\"}]"); |
||||
|
ArrayList<Item> result = new ArrayList<>(); |
||||
|
for (int i = 0; i < randomNumberItems; i++) { |
||||
|
JSONObject itemObject = items.getJSONObject(i); |
||||
|
Item item = new Item(itemObject.getString("name"), itemObject.getBoolean("doesDamage"), |
||||
|
itemObject.getString("damage"), 1, 3); |
||||
|
result.add(item); |
||||
|
} |
||||
|
assertEquals(2, result.size()); |
||||
|
assertEquals("Holz", result.get(0).getName()); |
||||
|
assertEquals("Stein", result.get(1).getName()); |
||||
|
} |
||||
|
@Test |
||||
|
public void testWaldDescription() { |
||||
|
LookaroundCommand command = new LookaroundCommand(); |
||||
|
ArrayList<Mob> enemies = new ArrayList<Mob>(); |
||||
|
enemies.add(new Mob("Bigfoot", false, 50,20)); |
||||
|
ArrayList<Item> items = new ArrayList<Item>(); |
||||
|
items.add(new Item("Holz",true, "10", 1,3)); |
||||
|
Location location = new Location("Wald",enemies, items); |
||||
|
StringBuilder outputMessage = new StringBuilder(); |
||||
|
|
||||
|
command.getLocationDescription(location, outputMessage); |
||||
|
|
||||
|
String expectedDescription = "Du befindest dich mitten im Wald, um dich herum siehst du hohe Buchen, kleine Sträucher und Farne.\n" + |
||||
|
"Der Boden ist mit weichem Moos, Pilzen und Laub bedeckt, in der Nähe hörst du Vögel munter zwitschern und\n" + |
||||
|
"einen kleinen Bach, der sich durch das dichte Unterholz schlängelt." + |
||||
|
" Schau mal, dort hinten in der Ferne ist ein Eichhörnchen! \n"; |
||||
|
|
||||
|
assertEquals(expectedDescription, outputMessage.toString()); |
||||
|
} |
||||
|
@Test |
||||
|
public void testStrandDescription() { |
||||
|
LookaroundCommand command = new LookaroundCommand(); |
||||
|
ArrayList<Mob> enemies = new ArrayList<Mob>(); |
||||
|
enemies.add(new Mob("Bigfoot", false, 50,20)); |
||||
|
ArrayList<Item> items = new ArrayList<Item>(); |
||||
|
items.add(new Item("Holz",true, "10", 1, 5)); |
||||
|
Location location = new Location("Strand",enemies, items); |
||||
|
StringBuilder outputMessage = new StringBuilder(); |
||||
|
|
||||
|
command.getLocationDescription(location, outputMessage); |
||||
|
|
||||
|
String expectedDescription = "Du befindest dich mitten am Strand und blickst auf das Meer, das sich bis zum Horizont erstreckt.\n" + |
||||
|
"Du spürst den Sand an deinen Füßen, du hörst das weiche Rauschen des Meeres und das Lachen der Möwen über dir.\n" + |
||||
|
"Rechts und links von dir erstreckt sich der weite, weiße Sandstrand, dort hinten bauen Kinder eine Sandburg.\n" + |
||||
|
"Es gibt ein paar Palmen, die den Strand säumen und weit in der Ferne ragen Felsen aus dem Meer.\n"; |
||||
|
|
||||
|
assertEquals(expectedDescription, outputMessage.toString()); |
||||
|
} |
||||
|
@Test |
||||
|
public void testUnknownLocationDescription() { |
||||
|
LookaroundCommand command = new LookaroundCommand(); |
||||
|
ArrayList<Mob> enemies = new ArrayList<Mob>(); |
||||
|
enemies.add(new Mob("unknown", false, 50,20)); |
||||
|
ArrayList<Item> items = new ArrayList<Item>(); |
||||
|
items.add(new Item("unknown",true, "10", 1, 5)); |
||||
|
Location location = new Location("Unknown",enemies, items); |
||||
|
StringBuilder outputMessage = new StringBuilder(); |
||||
|
|
||||
|
command.getLocationDescription(location, outputMessage); |
||||
|
|
||||
|
assertEquals("", outputMessage.toString()); |
||||
|
} |
||||
|
|
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue