From 808c9d8fac5b4a14315e00a2fe1672cd797a44b6 Mon Sep 17 00:00:00 2001 From: Sebastian Zeidler Date: Wed, 20 Feb 2019 19:30:49 +0100 Subject: [PATCH] zwichencommit --- src/main/java/Shadowrun/dice.java | 175 +++++++++++++++++++++++++++--- 1 file changed, 160 insertions(+), 15 deletions(-) diff --git a/src/main/java/Shadowrun/dice.java b/src/main/java/Shadowrun/dice.java index 3b9ba5b..d4df6e2 100755 --- a/src/main/java/Shadowrun/dice.java +++ b/src/main/java/Shadowrun/dice.java @@ -10,23 +10,27 @@ import org.json.JSONObject; import java.awt.*; +import java.security.SecureRandom; import java.util.Random; +import java.util.concurrent.ThreadLocalRandom; public class dice extends ListenerAdapter { private String prefixSr; private String prefixZitat; + private String prefixTest; public dice() { this.prefixSr = "!sr"; + this.prefixTest = "!rollTest"; this.prefixZitat = "!zitat"; } @Override public void onMessageReceived(MessageReceivedEvent event) { - if ((!event.getMessage().getContentRaw().startsWith(this.prefixSr) && !event.getMessage().getContentRaw().startsWith(this.prefixZitat)) || event.getChannelType() != ChannelType.TEXT) { + if ((!event.getMessage().getContentRaw().startsWith(this.prefixSr) && !event.getMessage().getContentRaw().startsWith(this.prefixZitat) && !event.getMessage().getContentRaw().startsWith(this.prefixTest)) || event.getChannelType() != ChannelType.TEXT) { return; } @@ -34,13 +38,78 @@ public class dice extends ListenerAdapter { if (!author.isBot()) { if (event.getMessage().getContentRaw().startsWith(this.prefixSr)) this.roll(event); + if (event.getMessage().getContentRaw().startsWith(this.prefixTest)) + this.rollTest(event); if (event.getMessage().getContentRaw().startsWith(this.prefixZitat)) this.zitat(event); } } /** - * Holt Kontostand ab + * rolltest + * + * @param event JDA Event + */ + private void rollTest(MessageReceivedEvent event) { + + EmbedBuilder test = new EmbedBuilder(); + test.setTitle("Das ist ein Test"); + test.setColor(Color.red); + test.setDescription("Text " + event.getMember().getAsMention()); + + + + + int[] verteilung = new int[6]; + int[] verteilung2 = new int[6]; + int[] verteilung3 = new int[6]; + int dice1, dice2, dice3; + + try { + String[] MsgParts_exl_Mention = event.getMessage().getContentRaw().split(" "); + int rounds = Integer.parseInt(MsgParts_exl_Mention[1]); + if(rounds <= 0) { + event.getChannel().sendMessage("Nope").queue(); + return; + } + for(int i = 0; i < rounds; i++) { + dice1 = new Random().nextInt(6); + dice2 = new SecureRandom().nextInt(6); + //dice3 = new ThreadLocalRandom().current().nextInt(6); + dice3 = ThreadLocalRandom.current().nextInt(0, 6); + verteilung[dice1]++; + verteilung2[dice2]++; + verteilung3[dice3]++; + } + for(int i = 0; i < 6; i++) { + float pro = verteilung[i]*100f/rounds; + test.addField(Integer.toString(i+1), Integer.toString(verteilung[i]) + " - " + String.format("%.2f", pro) + "%", true); + } + test.addBlankField(false); + for(int i = 0; i < 6; i++) { + float pro = verteilung2[i]*100f/rounds; + test.addField(Integer.toString(i+1), Integer.toString(verteilung2[i]) + " - " + String.format("%.2f", pro) + "%", true); + } + test.addBlankField(false); + for(int i = 0; i < 6; i++) { + float pro = verteilung3[i]*100f/rounds; + test.addField(Integer.toString(i+1), Integer.toString(verteilung3[i]) + " - " + String.format("%.2f", pro) + "%", true); + } + event.getChannel().sendMessage(test.build()).queue(); + + } + catch (NumberFormatException e) { + event.getChannel().sendMessage("Nope").queue(); + } + catch (Exception e) { + System.out.println("problem: " + e.getMessage()); + } finally { + + } + + } + /** + * rolltest * * @param event JDA Event */ @@ -53,25 +122,101 @@ public class dice extends ListenerAdapter { - int[] verteilung = new int[6]; int dice1; + int numberOdDice = 1; + int diceart = 6; + StringBuilder result = new StringBuilder(""); + + int hits = 0; + boolean glitches = false; + boolean critGlitches = false; + + boolean edge = false; try { - String[] MsgParts_exl_Mention = event.getMessage().getContentRaw().split(" "); - int rounds = Integer.parseInt(MsgParts_exl_Mention[1]); - if(rounds <= 0) { - event.getChannel().sendMessage("Nope").queue(); + if(event.getMessage().getContentRaw().startsWith(this.prefixSr+"+")) { + edge = true; + } + String[] MsgParts = event.getMessage().getContentRaw().split(" ", 2); + if(MsgParts.length < 2) { + event.getChannel().sendMessage(event.getMember().getAsMention() + " der " + this.prefixSr + " befehl benötigt einen Wert").queue(); return; } - for(int i = 0; i < rounds; i++) { - dice1 = new Random().nextInt(6); + + if(MsgParts[1].trim().matches(".*[^0-9].*")) { // es wurden andere zeichen als Zahlen gefunden + if(MsgParts[1].trim().toLowerCase().replace(" ", "").matches("([0-9]*)[dw]([0-9].*)")) { // format besteh aus (Zahlen)d(Zahlen) oder (Zahlen)w(Zahlen) + String[] diceInterpreter = MsgParts[1].trim().toLowerCase().replace(" ", "").split("[wd]"); + try { + diceart = Integer.parseInt(diceInterpreter[1]); + numberOdDice = Integer.parseInt(diceInterpreter[0]); + } + catch (NumberFormatException e) { + event.getChannel().sendMessage(event.getMember().getAsMention() + " Irgent was dummes ist passiert beim Verstehen von " + MsgParts[1].trim().toLowerCase()).queue(); + return; + } + } + else { + try { + numberOdDice = Integer.parseInt(MsgParts[1].trim().replace(" ", "")); + } + catch (NumberFormatException e) { + event.getChannel().sendMessage(event.getMember().getAsMention() + " Irgent was dummes ist passiert beim Verstehen von " + MsgParts[1].trim()).queue(); + return; + } + } +/* + if(MsgParts[1].trim().toLowerCase().replace(" ", "").matches("^([0-9]*\\+)?[0-9]*([dw][0-9]*)?(\\+[0-9]*)?")) { // format besteh aus (Zahlen)+(Zahlen)d(Zahlen) oder (Zahlen)d(Zahlen)+(Zahlen) + String[] diceInterpreter = MsgParts[1].trim().toLowerCase().replace(" ", "").split("\\+"); + try { + diceart = Integer.parseInt(diceInterpreter[1]); + numberOdDice = Integer.parseInt(diceInterpreter[0]); + } + catch (NumberFormatException e) { + event.getChannel().sendMessage(event.getMember().getAsMention() + " Irgent was dummes ist passiert beim Verstehen von " + MsgParts[1].trim().toLowerCase()).queue(); + return; + } + }*/ + } + + + if(numberOdDice <= 0) { + event.getChannel().sendMessage(event.getMember().getAsMention() + " es darf kein Negativen Wurf geben").queue(); + return; + } + + int bonusEdegeDice = 0; + for(int i = 0; i < numberOdDice+bonusEdegeDice; i++) { + dice1 = new Random().nextInt(diceart); + if(edge && dice1 == 5) + bonusEdegeDice++; + if(edge && dice1 >= 4) { + hits++; + } verteilung[dice1]++; + result.append(dice1); + result.append(" "); } - for(int i = 0; i < 6; i++) { - float pro = verteilung[i]*100f/rounds; - test.addField(Integer.toString(i+1), Integer.toString(verteilung[i]) + " - " + String.format("%.2f", pro), true); + if (verteilung[0] >= (numberOdDice+bonusEdegeDice)/2) { + glitches = true; } + + + if(hits == 0) { + test.setColor(Color.red); + } + else if(glitches == true) { + test.setColor(Color.yellow); + } + else { + test.setColor(Color.green); + } + + for(int i = 0; i < diceart; i++) { + float pro = verteilung[i]*100f/numberOdDice; + test.addField(Integer.toString(i+1), Integer.toString(verteilung[i]) + " - " + String.format("%.2f", pro) + "%", true); + } + event.getChannel().sendMessage(test.build()).queue(); } @@ -98,10 +243,10 @@ public class dice extends ListenerAdapter { quotes[3] = "zzzZZZZZzzZZ"; quotes[4] = "piiiep"; quotes[5] = "grrrrr"; - quotes[6] = "ʕᵔᴥᵔʔ =*Auto translator*=> In meiner psychophysischen Konstituton manifestiert sich eine absolute Dominanz positiver Effekte für die Individualität Deiner Person. "; + //quotes[6] = "ʕᵔᴥᵔʔ =*Auto translator*=> In meiner psychophysischen Konstituton manifestiert sich eine absolute Dominanz positiver Effekte für die Individualität Deiner Person. "; - int dice = new Random().nextInt(700); - event.getChannel().sendMessage(quotes[dice%7]).queue(); + int dice = new Random().nextInt(600); + event.getChannel().sendMessage(quotes[dice%6]).queue(); }