burrow/src/main/java/io/rudefox/burrow/InteractiveDice8EntropyGene...

60 lines
2.0 KiB
Java

package io.rudefox.burrow;
import java.util.Scanner;
import java.util.regex.Pattern;
public class InteractiveDice8EntropyGenerator extends InteractiveEntropyGenerator {
public InteractiveDice8EntropyGenerator(int targetBitsOfEntropy, Scanner inputScanner, boolean ansiColorOutput) {
super(inputScanner, ansiColorOutput, targetBitsOfEntropy, 3);
}
@Override
protected String readNextEventSetString() {
String eventSetString = "";
Pattern eventSetPattern = Pattern.compile(String.format("[1-8]{%d}", eventsPerEventSet));
while (!eventSetPattern.matcher(eventSetString).matches()) {
System.out.print("Input 11 x 8-sided dice rolls [1-8]: ");
eventSetString = inputScanner.next();
}
return eventSetString;
}
@Override
protected String getEventValueFormatString(int eventIndexWithinSet) {
return eventIndexWithinSet == bitsPerEvent || eventIndexWithinSet == 7 ? " %d |" : " %d |";
}
@Override
protected int toZeroBasedInteger(int eventDecimalValue) {
return eventDecimalValue - 1;
}
@Override
protected void outputEventValuesLine(StringBuilder eventValuesLine) {
System.out.println(eventValuesLine);
}
@Override
protected StringBuilder getInitialBitsLine() {
return new StringBuilder("|");
}
@Override
protected void padBitsLine(StringBuilder eventSetBitsLine, int bitIndexWithinEventSet, int bitIndexWithinEntropy) {
if (bitIndexWithinEventSet == BITS_PER_EVENT_SET - 1)
eventSetBitsLine.append("|");
else if (bitIndexWithinEventSet % bitsPerEvent == bitsPerEvent - 1)
eventSetBitsLine.append(styleBit(" ", bitIndexWithinEntropy, bitIndexWithinEventSet));
else if (bitIndexWithinEventSet % BITS_PER_WORD == BITS_PER_WORD - 1)
eventSetBitsLine.append(" | ");
}
@Override
protected String getSeedWordLineFormatString() {
return "|%-15s|%-17s|%-15s|";
}
}