Я написал пару функций, которые принимают отформатированную строку, определяют количество и размер кубиков, бросают их и добавляют их значения. Например: 3d8 означало бы бросить 3 кубика по 8 сторон каждая и добавить их значения. Значения всегда положительные, поэтому каждый раз, когда я запускаю эту функцию для 3d8 , я могу получить значения от 3 до 24.
public int calcDice(String diceFormula){
String[] divided = diceFormula.split("d");
int cant = Integer.parseInt(divided[0]);
int dice = Integer.parseInt(divided[1]);
int result = 0;
for (int i = 0; i < cant; i++) {
result += throwDice(dice);
}
return result;
}
private int throwDice(int diceSize) {
diceSize = diceSize < 0 ? dice * -1 : diceSize;
Random r = new Random();
return r.nextInt((diceSize - 1) + 1) + 1;
}
Теперь мне нужно сделать математические функции, использующие эти значения, поэтому я мог бы ввести математическую функцию, которая будет вычисляться. Я должен был бы соблюдать порядок разрешения, например, ((3d8) +1) x (2d4) x 3
Одна из идей состояла в том, чтобы взять строку и обработать сначала значения, а затем заменить оценщик javascript, чтобы выяснить, результат, но я не уверен, как я могу "выбрать" значения. (Может быть, регулярное выражение?)