Вы знаете, что с двумя кубиками у вас всегда есть три варианта покрытия.Предположительно в другом месте кода вы будете сравнивать покрытые варианты с числами.Что-то вроде
int[] covered = { die1, die2, die1+die2 };
// ... other stuff
if (comparisonValue > 6) {
// maybe do special stuff since this uses both dice
if (comparisonValue == covered[2]) {
// covered/coverable behavior
} else {
// not
}
} else {
// maybe do special stuff since this only uses one die
if (comparisonValue == covered[0] || comparisonValue == covered[1]) {
// covered/coverable behavior
} else {
// not
}
}
дает вам сначала то, что покрыто, а затем простое использование.Вы также можете foreach
над массивом сделать что-то для покрытых чисел, ala
for (int c : covered) {
// do stuff with c because it's covered
}
Это довольно хрупко, но гибкий ответ (например, сброс результатов в Collection
) равен способ излишества для 6-гранных, целочисленных костей и гибкий действительно гибкий ответ (например, включение переменного числа костей, специализированное сочетание граней в результаты) подобен ядерному армагеддону для этой конкретной проблемы.
РЕДАКТИРОВАТЬ для вашей конкретной проблемы, я бы сделал что-то вроде
// start new turn, disable all buttons
// get rolls
int[] coverable = { die1, die2, die1+die2 };
for (int covered : coverable ) {
// enabled covered button
}
Если игрок может изменить, какой из 1-12 покрыт предыдущими бросками, на основе нового результата,ну, тогда вы можете повеселиться в зависимости от того, какую помощь вы хотите им оказать.