Browse Source

merged branch develop into shop

remotes/origin/develop
Max Gerbeth 2 years ago
parent
commit
2ad05fa568
  1. 3
      src/main/java/org/bitbiome/Boot.java
  2. 96
      src/main/java/org/bitbiome/classes/BlackJack.java
  3. 6
      src/main/java/org/bitbiome/classes/Colors.java
  4. 24
      src/main/java/org/bitbiome/classes/CreateLocations.java
  5. 38
      src/main/java/org/bitbiome/classes/InteractionLoop.java
  6. 37
      src/main/java/org/bitbiome/classes/JsonParser.java
  7. 11
      src/main/java/org/bitbiome/classes/TravelEngine.java
  8. 109
      src/main/java/org/bitbiome/commands/BlackJackCommand.java
  9. 4
      src/main/java/org/bitbiome/commands/CommandAPI.java
  10. 4
      src/main/java/org/bitbiome/commands/CommandListener.java
  11. 4
      src/main/java/org/bitbiome/commands/HelpCommand.java
  12. 4
      src/main/java/org/bitbiome/commands/QuitCommand.java
  13. 106
      src/main/java/org/bitbiome/commands/QuizCommand.java
  14. 15
      src/main/java/org/bitbiome/commands/TravelCommand.java
  15. 10
      src/main/java/org/bitbiome/entities/Item.java
  16. 8
      src/main/java/org/bitbiome/entities/Location.java
  17. 4
      src/main/java/org/bitbiome/entities/Mob.java
  18. 11
      src/main/java/org/bitbiome/entities/Player.java
  19. 17
      src/main/resources/playerconfig.json
  20. 83
      src/main/resources/quiz.json
  21. 44
      src/test/java/org/bitbiome/classes/BlackJackTest.java
  22. 23
      src/test/java/org/bitbiome/classes/ColorsTest.java
  23. 2
      src/test/java/org/bitbiome/commands/HelpCommandTest.java
  24. 36
      src/test/java/org/bitbiome/commands/QuizCommandTest.java
  25. 38
      src/test/java/org/bitbiome/entitiesTest/ItemTest.java
  26. 24
      src/test/java/org/bitbiome/entitiesTest/LocationTest.java
  27. 35
      src/test/java/org/bitbiome/entitiesTest/MobTest.java
  28. 43
      src/test/java/org/bitbiome/entitiesTest/PlayerTest.java

3
src/main/java/org/bitbiome/Boot.java

@ -26,8 +26,7 @@ public class Boot {
private Player getPlayerSave() { private Player getPlayerSave() {
String name; String name;
JsonParser jp = new JsonParser();
JSONObject playerconfig = jp.getJSONObject("playerconfig.json");
JSONObject playerconfig = JsonParser.getJSONObject("src/main/resources/playerconfig.json");
name = playerconfig.getString("name"); name = playerconfig.getString("name");
return new Player(name); return new Player(name);
} }

96
src/main/java/org/bitbiome/classes/BlackJack.java

@ -0,0 +1,96 @@
package org.bitbiome.classes;
import java.util.Random;
public class BlackJack {
public enum Entity {
PLAYER(1), BOT(2);
private int value;
private Entity(int value) {
this.value = value;
}
public int getValue() {
return value;
}
//Just for testing from some SO answers, but no use
public void setValue(int value) {
this.value = value;
}
public static Entity getEventStatusById(int id) {
Entity entity = null;
switch (id) {
case 1 -> entity = PLAYER;
case 2 -> entity = BOT;
default -> {
}
}
return entity;
}
}
private String playerName;
private int playerPoints;
private int botPoints;
private boolean playerIn;
private boolean botIn;
public BlackJack(String playerName) {
this.playerName = playerName;
this.playerPoints = 0;
this.botPoints = 0;
this.playerIn = true;
this.botIn = true;
}
public String getPlayerName(Entity entity) {
return entity == Entity.PLAYER ? playerName : "BitBiome";
}
public int getPoints(Entity entity) {
return entity == Entity.PLAYER ? playerPoints : botPoints;
}
public boolean isIn(Entity entity) {
return entity == Entity.PLAYER ? playerIn : botIn;
}
public Entity getEntity(int ID) {
return Entity.getEventStatusById(ID);
}
public void addPoints(Entity entity, int points) {
if (entity == Entity.BOT) botPoints += points;
if (entity == Entity.PLAYER) playerPoints += points;
}
public boolean botWantsToPlay() {
if (botIn) {
if (botPoints <= 10) {
return true;
} else if (botPoints <= 17) {
int r = new Random().nextInt(1, 9);
if (r <= 3) {
botIn = false;
return false;
} else {
return true;
}
} else {
botIn = false;
return false;
}
} else {
return false;
}
}
public void playerOut() {
this.playerIn = false;
}
}

6
src/main/java/org/bitbiome/classes/Colors.java

@ -2,6 +2,12 @@ package org.bitbiome.classes;
public class Colors { public class Colors {
/*
* This class has only public static mehtods
* Just add a String to your String and finalize it with the ANSI_RESET String
* The Color Codes with BG in the variable name are for the background colors
*/
public static final String ANSI_RESET = "\u001B[0m"; public static final String ANSI_RESET = "\u001B[0m";
public static final String ANSI_BLACK = "\u001B[30m"; public static final String ANSI_BLACK = "\u001B[30m";

24
src/main/java/org/bitbiome/classes/CreateLocations.java

@ -1,24 +0,0 @@
package org.bitbiome.classes;
import org.bitbiome.entities.Item;
import org.bitbiome.entities.Location;
import org.bitbiome.entities.Mob;
import java.util.ArrayList;
public class CreateLocations {
public static Location createForest() {
ArrayList<Item> items = new ArrayList<>();
ArrayList<Mob> mobs = new ArrayList<>();
String name = "Wald";
return new Location(name, mobs, items);
}
public static Location createBeach() {
ArrayList<Item> items = new ArrayList<>();
ArrayList<Mob> mobs = new ArrayList<>();
String name = "Strand";
return new Location(name, mobs, items);
}
}

38
src/main/java/org/bitbiome/classes/InteractionLoop.java

@ -11,24 +11,40 @@ public class InteractionLoop {
public void run(TravelEngine travelEngine) { public void run(TravelEngine travelEngine) {
boolean isRunning = true; boolean isRunning = true;
if (travelEngine.getPlayer().getName().equals("null")) {
System.out.println(Colors.ANSI_BLUE + "Oh, ein Fremder!\nBist du bereit für dein womöglich größtes Abenteuer?\nDann sag mir doch zunächst wie du heißt: " + Colors.ANSI_RESET);
String name = input.nextLine();
JsonParser jp = new JsonParser();
JSONObject playerconf = jp.getJSONObject("playerconfig.json");
playerconf.put("name", name);
travelEngine.getPlayer().setName(name);
jp.writeObject("playerconfig.json", playerconf);
if (playerIsNew(travelEngine.getPlayer().getName())) {
newPlayerWelcome(travelEngine);
} }
System.out.println(Colors.ANSI_BG_CYAN + Colors.ANSI_BLACK + "Willkommen zu BitBiome " + travelEngine.getPlayer().getName() + "!" + Colors.ANSI_RESET + "\n\n");
print(Colors.ANSI_BG_CYAN + Colors.ANSI_BLACK + "Willkommen zu BitBiome " + travelEngine.getPlayer().getName()
+ "!" + Colors.ANSI_RESET + "\n\n");
while (isRunning) { while (isRunning) {
String line = input.nextLine().toLowerCase(); String line = input.nextLine().toLowerCase();
if (!Boot.instance.getCmdListener().perform(line.toLowerCase().split(" ")[0], input, isRunning, line, travelEngine)) {
System.out.println("Unknown Command");
if (!Boot.instance.getCmdListener().perform(line.toLowerCase().split(" ")[0], input, isRunning, line,
travelEngine)) {
print(Colors.ANSI_RED + "Unbekannter Befehl - Siehe " + Colors.ANSI_PURPLE + "help\n"
+ Colors.ANSI_RESET);
}
} }
} }
public boolean print(String message) {
System.out.println(message);
return true;
} }
public boolean playerIsNew(String name) {
return name.equalsIgnoreCase("null");
}
public void newPlayerWelcome(TravelEngine travelEngine) {
print(Colors.ANSI_BLUE
+ "Oh, ein Fremder!\nBist du bereit für dein womöglich größtes Abenteuer?\nDann sag mir doch zunächst wie du heißt: "
+ Colors.ANSI_RESET);
String name = input.nextLine();
JsonParser jp = new JsonParser();
JSONObject playerconf = JsonParser.getJSONObject("src/main/resources/playerconfig.json");
playerconf.put("name", name);
travelEngine.getPlayer().setName(name);
JsonParser.writeObject("src/main/resources/playerconfig.json", playerconf);
}
} }

37
src/main/java/org/bitbiome/classes/JsonParser.java

@ -1,15 +1,10 @@
package org.bitbiome.classes; package org.bitbiome.classes;
import org.json.JSONObject; import org.json.JSONObject;
import org.json.JSONTokener;
import org.json.JSONWriter;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.io.FileReader;
public class JsonParser { public class JsonParser {
@ -28,20 +23,30 @@ public class JsonParser {
https://github.com/stleary/JSON-java https://github.com/stleary/JSON-java
*/ */
public JSONObject getJSONObject(String fileName) {
String resourceName = "./../../../" + fileName;
InputStream is = JsonParser.class.getResourceAsStream(resourceName);
if (is == null) {
throw new NullPointerException("Cannot find resource file " + resourceName);
public static JSONObject getJSONObject(String filePath) {
StringBuilder sb = null;
try {
FileReader reader = new FileReader(filePath);
char[] buffer = new char[1024];
int length;
sb = new StringBuilder();
while ((length = reader.read(buffer)) != -1) {
sb.append(buffer, 0, length);
}
reader.close();
} catch (IOException e) {
System.out.println(e);
} }
JSONTokener tokener = new JSONTokener(is);
return new JSONObject(tokener);
return new JSONObject(sb.toString());
} }
public void writeObject(String fileName, JSONObject object) {
public static void writeObject(String fileName, JSONObject object) {
String resourceName = fileName;
String resourceName = System.getProperty("user.dir") + "/src/main/resources/" + fileName;
try { try {
FileWriter fw = new FileWriter(resourceName, false); FileWriter fw = new FileWriter(resourceName, false);
fw.write(object.toString(1)); fw.write(object.toString(1));
@ -49,7 +54,5 @@ public class JsonParser {
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
} }

11
src/main/java/org/bitbiome/classes/TravelEngine.java

@ -10,21 +10,19 @@ import java.util.ArrayList;
public class TravelEngine { public class TravelEngine {
private JSONArray locations; private JSONArray locations;
private JsonParser jp;
private Player player; private Player player;
public TravelEngine(Player player) { public TravelEngine(Player player) {
jp = new JsonParser();
locations = jp.getJSONObject("gameconfig.json").getJSONArray("locations");
locations = JsonParser.getJSONObject("src/main/resources/gameconfig.json").getJSONArray("locations");
this.player = player; this.player = player;
} }
public void travelTo(Location location) { public void travelTo(Location location) {
player.setLocation(location); player.setLocation(location);
JSONObject jObj = jp.getJSONObject("playerconfig.json");
JSONObject jObj = JsonParser.getJSONObject("src/main/resources/playerconfig.json");
jObj.put("currentLocation", location.getName()); jObj.put("currentLocation", location.getName());
jp.writeObject("playerconfig.json", jObj);
JsonParser.writeObject("src/main/resources/playerconfig.json", jObj);
} }
public Player getPlayer() { public Player getPlayer() {
@ -45,8 +43,7 @@ public class TravelEngine {
} }
public Location getLocationByName(String name) { public Location getLocationByName(String name) {
JsonParser jp = new JsonParser();
JSONObject gameconfig = jp.getJSONObject("gameconfig.json");
JSONObject gameconfig = JsonParser.getJSONObject("src/main/resources/gameconfig.json");
JSONArray locations = gameconfig.getJSONArray("locations"); JSONArray locations = gameconfig.getJSONArray("locations");
JSONObject location = null; JSONObject location = null;
if (locationExists(name)) { if (locationExists(name)) {

109
src/main/java/org/bitbiome/commands/BlackJackCommand.java

@ -0,0 +1,109 @@
package org.bitbiome.commands;
import org.bitbiome.classes.BlackJack;
import org.bitbiome.classes.TravelEngine;
import java.util.Random;
import java.util.Scanner;
public class BlackJackCommand implements CommandAPI {
private boolean over;
@Override
public void performCommand(Scanner scanner, boolean isRunning, String message, TravelEngine travelEngine) {
System.out.println("Du hast das Spiel BlackJack gestartet. Die Spielregeln lauten wie folgt: Du und dein Gegner bekommen jede Runde Zahlen von 4 - 11. \nDerjenige, der zuerst 21 Punkte hat gewinnt. Derjenige, der über 21 Punkte hat verliert. Möchte keiner mehr Karten ziehen, gewinnt der mit dem höchsten Blatt!\nViel Spaß!");
over = false;
spielen();
}
public void spielen() {
BlackJack bj = new BlackJack("Dave");
Scanner sc = new Scanner(System.in);
BlackJack.Entity player = bj.getEntity(1);
while (!over) {
int r = new Random().nextInt(4, 11);
bj.addPoints(player, r);
System.out.println(bj.getPlayerName(player) + " hat " + r + " bekommen. Er hat insgesamt " + bj.getPoints(player) + ".");
if (bj.getPoints(player) >= 21) {
over21(player, bj);
has21(player, bj);
over = true;
break;
}
System.out.print("Weiter?");
if (player == BlackJack.Entity.BOT) {
if (bj.botWantsToPlay()) {
System.out.println("Na klar!");
} else {
System.out.println("Nope, ich bin fertig.");
}
} else {
String eingabe = sc.nextLine();
if (!eingabe.toLowerCase().startsWith("j")) {
bj.playerOut();
}
}
player = switchPlayer(player, bj);
}
}
public void over21(BlackJack.Entity player, BlackJack bj) {
if (bj.getPoints(player) > 21) {
over = true;
System.out.println(bj.getPlayerName(player) + " hat über 21 Punkte und damit verloren.");
}
}
public void has21(BlackJack.Entity player, BlackJack bj) {
if (bj.getPoints(player) == 21) {
System.out.println(bj.getPlayerName(player) + " hat gewonnen! Du hast 21 Punkte!");
over = true;
}
}
public BlackJack.Entity switchPlayer(BlackJack.Entity player, BlackJack bj) {
BlackJack.Entity BOT = BlackJack.Entity.BOT;
BlackJack.Entity PLAYER = BlackJack.Entity.PLAYER;
if (bj.isIn(BOT) || bj.isIn(PLAYER)) {
if (player == PLAYER) {
if (bj.isIn(BOT)) {
return BOT;
}
return PLAYER;
} else {
if (bj.isIn(PLAYER)) {
return PLAYER;
}
return BOT;
}
} else {
over = true;
getWinner(bj);
return null;
}
}
public void getWinner(BlackJack bj) {
BlackJack.Entity entity;
if (bj.getPoints(BlackJack.Entity.BOT) < bj.getPoints(BlackJack.Entity.PLAYER)) {
entity = BlackJack.Entity.PLAYER;
System.out.println(bj.getPlayerName(entity) + " hat gewonnen, da er mehr Punkte hat!");
} else if (bj.getPoints(BlackJack.Entity.BOT) == bj.getPoints(BlackJack.Entity.PLAYER)){
System.out.println("Es ist Gleichstand!");
} else {
entity = BlackJack.Entity.BOT;
System.out.println(bj.getPlayerName(entity) + " hat gewonnen, da er mehr Punkte hat!");
}
}
}

4
src/main/java/org/bitbiome/commands/CommandAPI.java

@ -5,6 +5,10 @@ import org.bitbiome.classes.TravelEngine;
import java.util.Scanner; import java.util.Scanner;
public interface CommandAPI { public interface CommandAPI {
// This is the command interface. Every command implements it's run method from here
// This is the API between the commands and the interaction loop/game
public void performCommand(Scanner scanner, boolean isRunning, String message, TravelEngine travelEngine); public void performCommand(Scanner scanner, boolean isRunning, String message, TravelEngine travelEngine);
} }

4
src/main/java/org/bitbiome/commands/CommandListener.java

@ -16,6 +16,10 @@ public class CommandListener {
commands.put("exit", new QuitCommand()); commands.put("exit", new QuitCommand());
commands.put("quit", new QuitCommand()); commands.put("quit", new QuitCommand());
commands.put("location", new LocationCommand());
commands.put("travel", new TravelCommand());
commands.put("quiz", new QuizCommand());
commands.put("blackjack", new BlackJackCommand());
commands.put("shop", new ShopCommand()); commands.put("shop", new ShopCommand());

4
src/main/java/org/bitbiome/commands/HelpCommand.java

@ -1,10 +1,10 @@
package org.bitbiome.commands; package org.bitbiome.commands;
import org.bitbiome.Boot;
import org.bitbiome.classes.Colors; import org.bitbiome.classes.Colors;
import org.bitbiome.classes.TravelEngine; import org.bitbiome.classes.TravelEngine;
import java.util.HashMap;
import java.util.Scanner; import java.util.Scanner;
public class HelpCommand implements CommandAPI { public class HelpCommand implements CommandAPI {

4
src/main/java/org/bitbiome/commands/QuitCommand.java

@ -6,6 +6,10 @@ import java.util.Scanner;
public class QuitCommand implements CommandAPI { public class QuitCommand implements CommandAPI {
// This command is used to end the game via command
// When the player quits the game, the game is stopped through System.exit(0)
// That means it is exited with no error status
@Override @Override
public void performCommand(Scanner scanner, boolean isRunning, String message, TravelEngine travelEngine) { public void performCommand(Scanner scanner, boolean isRunning, String message, TravelEngine travelEngine) {
System.out.println(getQuitMessage()); System.out.println(getQuitMessage());

106
src/main/java/org/bitbiome/commands/QuizCommand.java

@ -0,0 +1,106 @@
package org.bitbiome.commands;
import org.bitbiome.classes.JsonParser;
import org.json.JSONArray;
import org.json.JSONObject;
import org.bitbiome.classes.TravelEngine;
import java.util.Date;
import java.util.Random;
import java.util.Scanner;
public class QuizCommand implements CommandAPI {
private Scanner quizScanner;
@Override
public void performCommand(Scanner scanner, boolean isRunning, String message, TravelEngine travelEngine) {
quizScanner = new Scanner(System.in);
String path = "src/main/resources/quiz.json";
JSONObject quiz = JsonParser.getJSONObject(path);
long diffTime = canPlayAgain(quiz.getLong("lastPlayed"));
if (diffTime > 0) {
print("Du darfst erst in " + diffTime / 1000 / 60 + " Minuten spielen.");
return;
}
JSONArray fragen = quiz.getJSONArray("Quiz");
JSONObject frage = fragen.getJSONObject(random(fragen.length()));
JSONArray antworten = frage.getJSONArray("antworten");
String korrekteAntwort = frage.getString("korrekteAntwort");
print(starterMessage());
print(generateQuestion(frage, antworten));
int eingabe = quizScanner.nextInt();
if (answerIsCorrect(eingabe, korrekteAntwort, antworten)) {
int neuerStand = addGold();
print("Richtig! Du hast 5 Münzen verdient.\nDein Münzstand beträgt: " + neuerStand);
} else {
print("Leider falsch... Richtig ist: " + korrekteAntwort + "\n");
}
print(endMessage());
Date d = new Date();
long lastPlayed = d.getTime();
quiz.put("lastPlayed", lastPlayed);
JsonParser.writeObject(path, quiz);
}
public static boolean answerIsCorrect(int picked, String answer, JSONArray answers) {
return answers.getString(picked - 1).equalsIgnoreCase(answer);
}
public static String print(String message) {
System.out.println(message);
return message;
}
public static int random(int length) {
return new Random().nextInt(length);
}
public static String generateQuestion(JSONObject frage, JSONArray answers) {
StringBuilder sb = new StringBuilder();
sb.append(frage.getString("frage")).append("\n");
for (int i = 0; i < answers.length(); i++) {
sb.append(i+1).append(". ").append(answers.getString(i)).append("\n");
}
return sb.toString();
}
public static int addGold() {
String playerpath = "src/main/resources/ssplayerconfig.json";
JSONObject playerconfig = JsonParser.getJSONObject(playerpath);
int gold = playerconfig.getInt("gold");
gold = gold + 5;
playerconfig.put("gold", gold);
JsonParser.writeObject(playerpath, playerconfig);
return gold;
}
public static long canPlayAgain(long lastPlayedTime) {
long currentTime = System.currentTimeMillis();
long minTime = lastPlayedTime + (60 * 5 * 1000);
return minTime - currentTime;
}
public static String starterMessage(){
return "Du hast das Quiz gestartet! Hinweis: Wähle deine Antwort, indem du die Zahl (1-4) eingibst. Ist deine Lösung richtig, erhälst du 5 Münzen. Viel Erfolg! \n";
}
public static String endMessage(){
return "Das Quiz ist vorbei!";
}
}

15
src/main/java/org/bitbiome/commands/TravelCommand.java

@ -1,7 +1,7 @@
package org.bitbiome.commands; package org.bitbiome.commands;
import org.bitbiome.classes.Colors; import org.bitbiome.classes.Colors;
import org.bitbiome.classes.CreateLocations;
import org.bitbiome.classes.TravelEngine; import org.bitbiome.classes.TravelEngine;
import org.bitbiome.entities.Item; import org.bitbiome.entities.Item;
import org.bitbiome.entities.Location; import org.bitbiome.entities.Location;
@ -16,18 +16,23 @@ public class TravelCommand implements CommandAPI {
@Override @Override
public void performCommand(Scanner scanner, boolean isRunning, String message, TravelEngine travelEngine) { public void performCommand(Scanner scanner, boolean isRunning, String message, TravelEngine travelEngine) {
System.out.println(Colors.ANSI_BLUE + "Du hast dein Travel-Pad gezückt. Wohin möchtest du reisen?" + Colors.ANSI_RESET);
print(Colors.ANSI_BLUE + "Du hast dein Travel-Pad gezückt. Wohin möchtest du reisen?" + Colors.ANSI_RESET);
JSONArray locations = travelEngine.getLocationList(); JSONArray locations = travelEngine.getLocationList();
for (int i = 0; i < locations.length(); i++) { for (int i = 0; i < locations.length(); i++) {
System.out.println("- " + locations.getJSONObject(i).getString("name"));
print("- " + locations.getJSONObject(i).getString("name"));
} }
String locationName = scanner.nextLine(); String locationName = scanner.nextLine();
if (travelEngine.locationExists(locationName)) { if (travelEngine.locationExists(locationName)) {
travelEngine.travelTo(new Location(locationName, new ArrayList<Mob>(), new ArrayList<Item>())); travelEngine.travelTo(new Location(locationName, new ArrayList<Mob>(), new ArrayList<Item>()));
System.out.println(Colors.ANSI_BLUE + "Du bist nun hierhin gereist: " + locationName + "\n" + Colors.ANSI_RESET);
print(Colors.ANSI_BLUE + "Du bist nun hierhin gereist: " + locationName + "\n" + Colors.ANSI_RESET);
} else { } else {
System.out.println(Colors.ANSI_BLUE + "Du hast dein Travel-Pad weggesteckt." + Colors.ANSI_RESET);
print(Colors.ANSI_BLUE + "Du hast dein Travel-Pad weggesteckt." + Colors.ANSI_RESET);
}
} }
public String print(String message) {
System.out.println(message);
return message;
} }
} }

10
src/main/java/org/bitbiome/entities/Item.java

@ -2,9 +2,9 @@ package org.bitbiome.entities;
public class Item { public class Item {
public String name;
public boolean doesDamage;
public float damage;
private String name;
private boolean doesDamage;
private float damage;
public Item(String name, boolean doesDamage, float damage) { public Item(String name, boolean doesDamage, float damage) {
@ -13,6 +13,10 @@ public class Item {
this.damage = damage; this.damage = damage;
} }
public Item() {
}
public String getName() { public String getName() {
return name; return name;
} }

8
src/main/java/org/bitbiome/entities/Location.java

@ -15,6 +15,10 @@ public class Location {
this.itemList = itemList; this.itemList = itemList;
} }
public Location() {
}
public String getName() { public String getName() {
return name; return name;
@ -28,6 +32,10 @@ public class Location {
return itemList; return itemList;
} }
public void setName(String name) {
this.name = name;
}
} }

4
src/main/java/org/bitbiome/entities/Mob.java

@ -15,6 +15,10 @@ public class Mob {
this.damage = damage; this.damage = damage;
} }
public Mob() {
}
public String getName() { public String getName() {
return name; return name;
} }

11
src/main/java/org/bitbiome/entities/Player.java

@ -1,6 +1,6 @@
package org.bitbiome.entities; package org.bitbiome.entities;
import org.bitbiome.classes.CreateLocations;
import org.bitbiome.classes.JsonParser; import org.bitbiome.classes.JsonParser;
import java.util.ArrayList; import java.util.ArrayList;
@ -12,16 +12,19 @@ public class Player {
private ArrayList<Item> inventory; private ArrayList<Item> inventory;
private JsonParser jp;
public Player(String name) { public Player(String name) {
jp = new JsonParser();
this.name = name; this.name = name;
hp = 100.0F; hp = 100.0F;
location = new Location(jp.getJSONObject("playerconfig.json").getString("currentLocation"), new ArrayList<>(), new ArrayList<>());
location = new Location(JsonParser.getJSONObject("src/main/resources/playerconfig.json").getString("currentLocation"), new ArrayList<>(), new ArrayList<>());
inventory = new ArrayList<>(); inventory = new ArrayList<>();
} }
public Player() {
}
public String getName() { public String getName() {
return name; return name;
} }

17
src/main/resources/playerconfig.json

@ -1,17 +1,18 @@
{ {
"name": "null",
"gold": 0, "gold": 0,
"name": "Dave",
"hp": 10, "hp": 10,
"currentLocation": "Wald",
"inventory": [ "inventory": [
{ {
"name": "Holz",
"amount": "5", "amount": "5",
"durability": 1000
},{
"name": "Stein",
"durability": 1000,
"name": "Holz"
},
{
"amount": "5", "amount": "5",
"durability": 1000
"durability": 1000,
"name": "Stein"
} }
]
],
"currentLocation": "Wald"
} }

83
src/main/resources/quiz.json

@ -2,203 +2,204 @@
"Quiz": [ "Quiz": [
{ {
"frage": "Wie lang ist der Äquator der Erde?", "frage": "Wie lang ist der Äquator der Erde?",
"korrekteAntwort": "40.000km",
"antworten": [ "antworten": [
"20.000m", "20.000m",
"30km", "30km",
"60.000km", "60.000km",
"40.000km" "40.000km"
],
"korrekteAntwort": "40.000km"
]
}, },
{ {
"frage": "Was ist der längste Fluss der Welt?", "frage": "Was ist der längste Fluss der Welt?",
"korrekteAntwort": "Nil",
"antworten": [ "antworten": [
"Amazonas", "Amazonas",
"Nil", "Nil",
"Rhein", "Rhein",
"Niger" "Niger"
],
"korrekteAntwort": "Nil"
]
}, },
{ {
"frage": "Wie viele Tasten hat ein Klavier?", "frage": "Wie viele Tasten hat ein Klavier?",
"korrekteAntwort": "88",
"antworten": [ "antworten": [
"74", "74",
"86", "86",
"82", "82",
"88" "88"
],
"korrekteAntwort": "88"
]
}, },
{ {
"frage": "Von wem wird der Bundespräsident gewählt?", "frage": "Von wem wird der Bundespräsident gewählt?",
"korrekteAntwort": "von der Bundesversammlung",
"antworten": [ "antworten": [
"Vom Europäischen Parlament", "Vom Europäischen Parlament",
"Vom Bundeskanzler", "Vom Bundeskanzler",
"Vom Bundestag", "Vom Bundestag",
"Von der Bundesversammlung" "Von der Bundesversammlung"
],
"korrekteAntwort": "von der Bundesversammlung"
]
}, },
{ {
"frage": "Welches Land produziert jährlich die meisten Filme?", "frage": "Welches Land produziert jährlich die meisten Filme?",
"korrekteAntwort": "Indien",
"antworten": [ "antworten": [
"USA", "USA",
"Indien", "Indien",
"Japan", "Japan",
"Nigeria" "Nigeria"
],
"korrekteAntwort": "Indien"
]
}, },
{ {
"frage": "Wie heißt der am schnellsten schwimmende Fisch auf Erden?", "frage": "Wie heißt der am schnellsten schwimmende Fisch auf Erden?",
"korrekteAntwort": "Segelfisch",
"antworten": [ "antworten": [
"Flugfisch", "Flugfisch",
"Tigerhai", "Tigerhai",
"Segelfisch", "Segelfisch",
"Windfisch" "Windfisch"
],
"korrekteAntwort": "Segelfisch"
]
}, },
{ {
"frage": "Was ist KEIN Gewächs?", "frage": "Was ist KEIN Gewächs?",
"korrekteAntwort": "Incolornis",
"antworten": [ "antworten": [
"Geranie", "Geranie",
"Moosfarn", "Moosfarn",
"Incolornis", "Incolornis",
"Strandflieder" "Strandflieder"
],
"korrekteAntwort": "Incolornis"
]
}, },
{ {
"frage": "Was nutzt eine Fledermaus zur Orientierung in der Luft?", "frage": "Was nutzt eine Fledermaus zur Orientierung in der Luft?",
"korrekteAntwort": "Ultraschall",
"antworten": [ "antworten": [
"Infrarot", "Infrarot",
"Röntgenstrahlen", "Röntgenstrahlen",
"Speichel", "Speichel",
"Ultraschall" "Ultraschall"
],
"korrekteAntwort": "Ultraschall"
]
}, },
{ {
"frage": "Von wem stammt der berühmte Satz: 'Ich denke, also bin ich'?", "frage": "Von wem stammt der berühmte Satz: 'Ich denke, also bin ich'?",
"korrekteAntwort": "René Descartes",
"antworten": [ "antworten": [
"John Fitzgerald Kennedy", "John Fitzgerald Kennedy",
"George Walker Bush", "George Walker Bush",
"René Descartes", "René Descartes",
"Julius Caesar" "Julius Caesar"
],
"korrekteAntwort": "René Descartes"
]
}, },
{ {
"frage": "Welches Lebensmittel enthält das meiste Wasser?", "frage": "Welches Lebensmittel enthält das meiste Wasser?",
"korrekteAntwort": "Gurke",
"antworten": [ "antworten": [
"Gurke", "Gurke",
"Wassermelone", "Wassermelone",
"Zitrone", "Zitrone",
"Paprika" "Paprika"
],
"korrekteAntwort": "Gurke"
]
}, },
{ {
"frage": "Welches Lebensmittel gehört im botanischen Sinne zu den Früchten?", "frage": "Welches Lebensmittel gehört im botanischen Sinne zu den Früchten?",
"korrekteAntwort": "Tomate",
"antworten": [ "antworten": [
"Möhre", "Möhre",
"Kartoffel", "Kartoffel",
"Tomate", "Tomate",
"Weißkohl" "Weißkohl"
],
"korrekteAntwort": "Tomate"
]
}, },
{ {
"frage": "Haptische Wahrnehmung beruht auf dem...?", "frage": "Haptische Wahrnehmung beruht auf dem...?",
"korrekteAntwort": "Tastsinn",
"antworten": [ "antworten": [
"Greifreflex", "Greifreflex",
"Gleichgewichtssinn", "Gleichgewichtssinn",
"Hörsinn", "Hörsinn",
"Tastsinn" "Tastsinn"
],
"korrekteAntwort": "Tastsinn"
]
}, },
{ {
"frage": "Wie nennt man den letzten Tanz einer Tanzveranstaltung?", "frage": "Wie nennt man den letzten Tanz einer Tanzveranstaltung?",
"korrekteAntwort": "Kehraus",
"antworten": [ "antworten": [
"Voraus", "Voraus",
"Garaus", "Garaus",
"Kehraus", "Kehraus",
"Durchaus" "Durchaus"
],
"korrekteAntwort": "Kehraus"
]
}, },
{ {
"frage": "Wie nennt man ein tiefes, enges Tal, durch das ein Gebirgsbach fließt?", "frage": "Wie nennt man ein tiefes, enges Tal, durch das ein Gebirgsbach fließt?",
"korrekteAntwort": "Klamm",
"antworten": [ "antworten": [
"Klamm", "Klamm",
"Feucht", "Feucht",
"Nass", "Nass",
"Schwamm" "Schwamm"
],
"korrekteAntwort": "Klamm"
]
}, },
{ {
"frage": "Wer oder was ist Gerbera?", "frage": "Wer oder was ist Gerbera?",
"korrekteAntwort": "eine Pflanze",
"antworten": [ "antworten": [
"eine europäische Landschaft", "eine europäische Landschaft",
"eine Pflanze", "eine Pflanze",
"die erste Präsidentin von Südafrika", "die erste Präsidentin von Südafrika",
"eine Stadt in Lichtenstein" "eine Stadt in Lichtenstein"
],
"korrekteAntwort": "eine Pflanze"
]
}, },
{ {
"frage": "Nach wem wurde ein Gesellschaftsanzug benannt?", "frage": "Nach wem wurde ein Gesellschaftsanzug benannt?",
"korrekteAntwort": "Gustav Stresemann",
"antworten": [ "antworten": [
"Richard von Weizsäcker", "Richard von Weizsäcker",
"Gustav Heinemann", "Gustav Heinemann",
"Jürgen Klinsmann", "Jürgen Klinsmann",
"Gustav Stresemann" "Gustav Stresemann"
],
"korrekteAntwort": "Gustav Stresemann"
]
}, },
{ {
"frage": "Was ist Speckstein?", "frage": "Was ist Speckstein?",
"korrekteAntwort": "ein besonders weicher Stein",
"antworten": [ "antworten": [
"eine Fischart, die sich als Stein tarnt", "eine Fischart, die sich als Stein tarnt",
"ein Gericht aus dem Mittelalter", "ein Gericht aus dem Mittelalter",
"eine Skulptur im Römischen Reich unter Nero", "eine Skulptur im Römischen Reich unter Nero",
"ein besonders weicher Stein" "ein besonders weicher Stein"
],
"korrekteAntwort": "ein besonders weicher Stein"
]
}, },
{ {
"frage": "In welcher Religion gibt es Gurus?", "frage": "In welcher Religion gibt es Gurus?",
"korrekteAntwort": "im Hinduismus",
"antworten": [ "antworten": [
"im Christentum", "im Christentum",
"im Hinduismus", "im Hinduismus",
"im Islam", "im Islam",
"im Judentum" "im Judentum"
],
"korrekteAntwort": "im Hinduismus"
]
}, },
{ {
"frage": "Was versteht man unter Brunsbüttel?", "frage": "Was versteht man unter Brunsbüttel?",
"korrekteAntwort": "eine Industriestadt an der Unterelbe",
"antworten": [ "antworten": [
"eine Industriestadt an der Unterelbe", "eine Industriestadt an der Unterelbe",
"einen Plakatkleber", "einen Plakatkleber",
"eine 630 Mark-Kraft", "eine 630 Mark-Kraft",
"ein Staatssekretär" "ein Staatssekretär"
],
"korrekteAntwort": "eine Industriestadt an der Unterelbe"
]
}, },
{ {
"frage": "Welcher im 11. Jahrhundert gegründeter Orden rettet und pfelgt auch noch heute Verletzte und Kranke?", "frage": "Welcher im 11. Jahrhundert gegründeter Orden rettet und pfelgt auch noch heute Verletzte und Kranke?",
"korrekteAntwort": "die Johanniter",
"antworten": [ "antworten": [
"die Dominikaner", "die Dominikaner",
"die Augustiner", "die Augustiner",
"die Zisterzienser", "die Zisterzienser",
"die Johanniter" "die Johanniter"
],
"korrekteAntwort": "die Johanniter"
}
] ]
}
],
"lastPlayed": 1675768444160
} }

44
src/test/java/org/bitbiome/classes/BlackJackTest.java

@ -0,0 +1,44 @@
package org.bitbiome.classes;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class BlackJackTest {
private static BlackJack bj;
@BeforeAll
public static void setUpTest() {
bj = new BlackJack("UnitTest");
}
@Test
public void testGetEntity() {
assertEquals(BlackJack.Entity.PLAYER, bj.getEntity(1));
}
@Test
public void testGetEntityBot() {
assertEquals(BlackJack.Entity.BOT, bj.getEntity(2));
}
@Test
public void testPlayerName() {
assertEquals("UnitTest", bj.getPlayerName(BlackJack.Entity.PLAYER));
}
@Test
public void testBotName() {
assertEquals("BitBiome", bj.getPlayerName(BlackJack.Entity.BOT));
}
@Test
public void testPlayerIsIn() {
assertTrue(bj.isIn(BlackJack.Entity.PLAYER));
}
@Test
public void testBotIsIn() {
assertTrue(bj.isIn(BlackJack.Entity.BOT));
}
}

23
src/test/java/org/bitbiome/classes/ColorsTest.java

@ -0,0 +1,23 @@
package org.bitbiome.classes;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
public class ColorsTest {
@Test
public void testResetCode() {
assertEquals("\u001B[0m", Colors.ANSI_RESET);
}
@Test
public void testBlueCode() {
assertEquals("\u001B[34m", Colors.ANSI_BLUE);
}
@Test
public void testCyanCode() {
assertEquals("\u001B[36m", Colors.ANSI_CYAN);
}
}

2
src/test/java/org/bitbiome/commands/HelpCommandTest.java

@ -3,7 +3,7 @@ package org.bitbiome.commands;
import org.bitbiome.classes.Colors; import org.bitbiome.classes.Colors;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class HelpCommandTest { public class HelpCommandTest {

36
src/test/java/org/bitbiome/commands/QuizCommandTest.java

@ -0,0 +1,36 @@
package org.bitbiome.commands;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class QuizCommandTest {
@Test
public void testStartMessage() {
assertEquals("Du hast das Quiz gestartet! Hinweis: Wähle deine Antwort, indem du die Zahl (1-4) eingibst. Ist deine Lösung richtig, erhälst du 5 Münzen. Viel Erfolg! \n", QuizCommand.starterMessage());
}
@Test
public void testEndMessage() {
assertEquals("Das Quiz ist vorbei!", QuizCommand.endMessage());
}
@Test
public void testLastTimePlayed() {
long lastTimePlayed = System.currentTimeMillis();
assertTrue(QuizCommand.canPlayAgain(lastTimePlayed) < lastTimePlayed);
}
@Test
public void testRandomNumberGenerator() {
int getRandom = QuizCommand.random(3);
assertTrue(getRandom >= 0 && getRandom <= 3);
}
@Test
public void testPrintFunction() {
assertEquals("I am a unit test!", QuizCommand.print("I am a unit test!"));
}
}

38
src/test/java/org/bitbiome/entitiesTest/ItemTest.java

@ -0,0 +1,38 @@
package org.bitbiome.entitiesTest;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assumptions.assumeTrue;
import org.bitbiome.entities.Item;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
public class ItemTest {
private static Item item;
@BeforeAll
public static void setItem() {
item = new Item();
item.setName("Unit");
item.setDamage(12.5F);
item.changeDoesDamage(true);
}
@Test
public void testGetName() {
assertEquals("Unit", item.getName());
}
@Test
public void testGetDamage() {
assertEquals(12.5, item.getDamage());
}
@Test
public void testDoesDamage() {
boolean doesDamage = item.doesDamage();
assumeTrue(item.getDamage() > 0);
assumeTrue(doesDamage);
}
}

24
src/test/java/org/bitbiome/entitiesTest/LocationTest.java

@ -0,0 +1,24 @@
package org.bitbiome.entitiesTest;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.bitbiome.entities.Location;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
public class LocationTest {
private static Location location;
@BeforeAll
public static void setLocation() {
location = new Location();
location.setName("NewUnitWorld");
}
@Test
public void testLocationName() {
assertEquals("NewUnitWorld", location.getName());
}
}

35
src/test/java/org/bitbiome/entitiesTest/MobTest.java

@ -0,0 +1,35 @@
package org.bitbiome.entitiesTest;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.bitbiome.entities.Mob;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
public class MobTest {
private static Mob mob;
@BeforeAll
public static void setMob() {
mob = new Mob();
mob.setFriendly(true);
mob.setDamage(0F);
mob.setHp(561.45F);
}
@Test
public void testFriendly() {
assertEquals(mob.isFriendly(), true);
}
@Test
public void testDamage() {
assertEquals(mob.getDamage(), 0F);
}
@Test
public void testHp() {
assertEquals(mob.getHp(), 561.45F);
}
}

43
src/test/java/org/bitbiome/entitiesTest/PlayerTest.java

@ -0,0 +1,43 @@
package org.bitbiome.entitiesTest;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.bitbiome.entities.Location;
import org.bitbiome.entities.Player;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
public class PlayerTest {
private static Player player;
private static Location location;
@BeforeAll
public static void setPlayer() {
player = new Player();
location = new Location();
location.setName("NewUnitWorld");
player.setName("UnitPlayer");
player.setLocation(location);
player.setHp(100F);
}
@Test
public void testPlayerName() {
assertEquals("UnitPlayer", player.getName());
}
@Test
public void testPlayerHp() {
assertEquals(100F, player.getHp());
}
@Test
public void testLocationNameFromPlayer() {
assertEquals("NewUnitWorld", player.getLocation().getName());
}
}
Loading…
Cancel
Save