452 lines
19 KiB
Java
452 lines
19 KiB
Java
package domain;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
|
|
public class Box {
|
|
|
|
private int categoryOne;
|
|
private int categoryTwo;
|
|
private int categoryThree;
|
|
private int categoryFour;
|
|
private int categoryFive;
|
|
private int categorySix;
|
|
private int categorySeven;
|
|
private int categoryEight;
|
|
|
|
private Integer setCategoryOne;
|
|
private Integer setCategoryTwo;
|
|
private Integer setCategoryThree;
|
|
private Integer setCategoryFour;
|
|
private Integer setCategoryFive;
|
|
private Integer setCategorySix;
|
|
private Integer setCategorySeven;
|
|
private Integer setCategoryEight;
|
|
|
|
private int categoryTripleMatch;
|
|
private int categoryFourOfAKind;
|
|
private int categoryFullHouse;
|
|
private int categorySmallStreet;
|
|
private int categoryBigStreet;
|
|
private int categoryYahtzee;
|
|
private int categoryChance;
|
|
private int categoryStarWarsDay;
|
|
private int categoryR2D2;
|
|
|
|
private Integer setCategoryTripleMatch;
|
|
private Integer setCategoryFourOfAKind;
|
|
private Integer setCategoryFullHouse;
|
|
private Integer setCategorySmallStreet;
|
|
private Integer setCategoryBigStreet;
|
|
private Integer setCategoryYahtzee;
|
|
private Integer setCategoryChance;
|
|
private Integer setCategoryStarWarsDay;
|
|
private Integer setCategoryR2D2;
|
|
|
|
private Integer bonus;
|
|
private int counter[] = new int[8];
|
|
private String savedGamemode;
|
|
|
|
public Box(String gamemode) {
|
|
|
|
this.savedGamemode = gamemode;
|
|
}
|
|
|
|
private void evaluateUpperBoxOptions(ArrayList<Integer> diceNumbers) {
|
|
|
|
if (diceNumbers.contains(1))
|
|
for (int i = 0; i < diceNumbers.size(); i++) {
|
|
if (diceNumbers.get(i) == 1)
|
|
this.categoryOne += diceNumbers.get(i);
|
|
}
|
|
if (diceNumbers.contains(2))
|
|
for (int i = 0; i < diceNumbers.size(); i++) {
|
|
if (diceNumbers.get(i) == 2)
|
|
this.categoryTwo += diceNumbers.get(i);
|
|
}
|
|
if (diceNumbers.contains(3))
|
|
for (int i = 0; i < diceNumbers.size(); i++) {
|
|
if (diceNumbers.get(i) == 3)
|
|
this.categoryThree += diceNumbers.get(i);
|
|
}
|
|
if (diceNumbers.contains(4))
|
|
for (int i = 0; i < diceNumbers.size(); i++) {
|
|
if (diceNumbers.get(i) == 4)
|
|
this.categoryFour += diceNumbers.get(i);
|
|
}
|
|
if (diceNumbers.contains(5))
|
|
for (int i = 0; i < diceNumbers.size(); i++) {
|
|
if (diceNumbers.get(i) == 5)
|
|
this.categoryFive += diceNumbers.get(i);
|
|
}
|
|
if (diceNumbers.contains(6))
|
|
for (int i = 0; i < diceNumbers.size(); i++) {
|
|
if (diceNumbers.get(i) == 6)
|
|
this.categorySix += diceNumbers.get(i);
|
|
}
|
|
if (diceNumbers.contains(7))
|
|
for (int i = 0; i < diceNumbers.size(); i++) {
|
|
if (diceNumbers.get(i) == 7)
|
|
this.categorySeven += diceNumbers.get(i);
|
|
}
|
|
if (diceNumbers.contains(8))
|
|
for (int i = 0; i < diceNumbers.size(); i++) {
|
|
if (diceNumbers.get(i) == 8)
|
|
this.categoryEight += diceNumbers.get(i);
|
|
}
|
|
}
|
|
|
|
private void evaluateLowerBoxOptions(ArrayList<Integer> diceNumbers) {
|
|
int sumOfAllNumbers = 0;
|
|
|
|
for (int i = 0; i < diceNumbers.size(); i++) {
|
|
if (diceNumbers.get(i) == 1)
|
|
counter[0]++;
|
|
else if (diceNumbers.get(i) == 2)
|
|
counter[1]++;
|
|
else if (diceNumbers.get(i) == 3)
|
|
counter[2]++;
|
|
else if (diceNumbers.get(i) == 4)
|
|
counter[3]++;
|
|
else if (diceNumbers.get(i) == 5)
|
|
counter[4]++;
|
|
else if (diceNumbers.get(i) == 6)
|
|
counter[5]++;
|
|
else if (diceNumbers.get(i) == 7)
|
|
counter[6]++;
|
|
else if (diceNumbers.get(i) == 8)
|
|
counter[7]++;
|
|
}
|
|
|
|
for (int i = 0; i < diceNumbers.size(); i++) {
|
|
sumOfAllNumbers += diceNumbers.get(i);
|
|
}
|
|
|
|
categoryStarWarsDay = (counter[3]*4) + (counter[4]*5);
|
|
categoryChance = sumOfAllNumbers;
|
|
|
|
for (int i = 0; i < counter.length; i++) {
|
|
if (counter[i] >= 3)
|
|
categoryTripleMatch = sumOfAllNumbers;
|
|
if (counter[i] >= 4)
|
|
categoryFourOfAKind = sumOfAllNumbers;
|
|
if (counter[i] == 5) {
|
|
categoryYahtzee = 50;
|
|
}
|
|
for (int s = 0; s < counter.length; s++) {
|
|
if (counter[i] == 3 && counter[s] == 2)
|
|
categoryFullHouse = 25;
|
|
}
|
|
|
|
}
|
|
|
|
for (int i = 0; i < 5; i++) {
|
|
|
|
if (counter[i] >= 1 && counter[i + 1] >= 1 && counter[i + 2] >= 1 && counter[i + 3] >= 1)
|
|
categorySmallStreet = 30;
|
|
|
|
}
|
|
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
|
|
if (counter[i] == 1 && counter[i + 1] == 1 && counter[i + 2] == 1 && counter[i + 3] == 1 && counter[i + 3] == 1)
|
|
categoryBigStreet = 40;
|
|
|
|
}
|
|
|
|
if (counter[0] == 1 && counter[1] == 2 && counter[3] == 1 && counter[7] == 1)
|
|
categoryR2D2 = 42;
|
|
|
|
}
|
|
|
|
public void evaluateBoxOptions(ArrayList<Integer> diceNumbers) {
|
|
|
|
evaluateUpperBoxOptions(diceNumbers);
|
|
evaluateLowerBoxOptions(diceNumbers);
|
|
|
|
}
|
|
|
|
public ArrayList<String> getAllOptions() {
|
|
ArrayList<String> res = new ArrayList<>();
|
|
|
|
if (categoryOne > 0 && (setCategoryOne == null))
|
|
res.add("categoryOne: " + categoryOne);
|
|
if (categoryTwo > 0 && (setCategoryTwo == null))
|
|
res.add("categoryTwo: " + categoryTwo);
|
|
if (categoryThree > 0 && (setCategoryThree == null))
|
|
res.add("categoryThree: " + categoryThree);
|
|
if (categoryFour > 0 && (setCategoryFour == null))
|
|
res.add("categoryFour: " + categoryFour);
|
|
if (categoryFive > 0 && (setCategoryFive == null))
|
|
res.add("categoryFive: " + categoryFive);
|
|
if (categorySix > 0 && (setCategorySix == null))
|
|
res.add("categorySix: " + categorySix);
|
|
if (categorySeven > 0 && (setCategorySeven == null))
|
|
res.add("categorySeven: " + categorySeven);
|
|
if (categoryEight > 0 && (setCategoryEight == null))
|
|
res.add("categoryEight: " + categoryEight);
|
|
if (categoryTripleMatch > 0 && (setCategoryTripleMatch == null))
|
|
res.add("categoryTrippleMatch: " + categoryTripleMatch);
|
|
if (categoryFourOfAKind > 0 && (setCategoryFourOfAKind == null))
|
|
res.add("categoryFourOfAKind: " + categoryFourOfAKind);
|
|
if (categoryFullHouse > 0 && (setCategoryFullHouse == null))
|
|
res.add("categoryFullHouse: " + categoryFullHouse);
|
|
if (categorySmallStreet > 0 && (setCategorySmallStreet == null))
|
|
res.add("categorySmallStreet: " + categorySmallStreet);
|
|
if (categoryBigStreet > 0 && (setCategoryBigStreet == null))
|
|
res.add("categoryBigStreet: " + categoryBigStreet);
|
|
if (categoryYahtzee > 0)
|
|
res.add("categoryYahtzee: " + categoryYahtzee);
|
|
if (categoryChance > 0 && (setCategoryChance == null))
|
|
res.add("categoryChance: " + categoryChance);
|
|
if (categoryStarWarsDay > 0 && (setCategoryStarWarsDay == null))
|
|
res.add("categoryStarWarsDay: " + categoryStarWarsDay);
|
|
if (categoryR2D2 > 0 && (setCategoryR2D2 == null))
|
|
res.add("categoryR2D2: " + categoryR2D2);
|
|
|
|
if (res.isEmpty()) {
|
|
if (setCategoryOne == null)
|
|
res.add("categoryOne: " + categoryOne);
|
|
if (setCategoryTwo == null)
|
|
res.add("categoryTwo: " + categoryTwo);
|
|
if (setCategoryThree == null)
|
|
res.add("categoryThree: " + categoryThree);
|
|
if (setCategoryFour == null)
|
|
res.add("categoryFour: " + categoryFour);
|
|
if (setCategoryFive == null)
|
|
res.add("categoryFive: " + categoryFive);
|
|
if (setCategorySix == null)
|
|
res.add("categorySix: " + categorySix);
|
|
if (setCategorySeven == null && savedGamemode.equals("Special8"))
|
|
res.add("categorySeven: " + categorySeven);
|
|
if (setCategoryEight == null && savedGamemode.equals("Special8"))
|
|
res.add("categoryEight: " + categoryEight);
|
|
if (setCategoryTripleMatch == null)
|
|
res.add("categoryTrippleMatch: " + categoryTripleMatch);
|
|
if (setCategoryFourOfAKind == null)
|
|
res.add("categoryFourOfAKind: " + categoryFourOfAKind);
|
|
if (setCategoryFullHouse == null)
|
|
res.add("categoryFullHouse: " + categoryFullHouse);
|
|
if (setCategorySmallStreet == null)
|
|
res.add("categorySmallStreet: " + categorySmallStreet);
|
|
if (setCategoryBigStreet == null)
|
|
res.add("categoryBigStreet: " + categoryBigStreet);
|
|
if (setCategoryYahtzee == null)
|
|
res.add("categoryYahtzee: " + categoryYahtzee);
|
|
if (setCategoryChance == null)
|
|
res.add("categoryChance: " + categoryChance);
|
|
if (setCategoryStarWarsDay == null)
|
|
res.add("categoryStarWarsDay: " + categoryStarWarsDay);
|
|
if (setCategoryR2D2 == null && savedGamemode.equals("Special8"))
|
|
res.add("categoryR2D2: " + categoryR2D2);
|
|
}
|
|
return res;
|
|
|
|
}
|
|
|
|
public void selectOption(String option) {
|
|
|
|
if (option.equals("categoryOne"))
|
|
setCategoryOne = categoryOne;
|
|
else if (option.equals("categoryTwo"))
|
|
setCategoryTwo = categoryTwo;
|
|
else if (option.equals("categoryThree"))
|
|
setCategoryThree = categoryThree;
|
|
else if (option.equals("categoryFour"))
|
|
setCategoryFour = categoryFour;
|
|
else if (option.equals("categoryFive"))
|
|
setCategoryFive = categoryFive;
|
|
else if (option.equals("categorySix"))
|
|
setCategorySix = categorySix;
|
|
else if (option.equals("categorySeven"))
|
|
setCategorySeven = categorySeven;
|
|
else if (option.equals("categoryEight"))
|
|
setCategoryEight = categoryEight;
|
|
else if (option.equals("categoryTripleMatch"))
|
|
setCategoryTripleMatch = categoryTripleMatch;
|
|
else if (option.equals("categoryFourOfAKind"))
|
|
setCategoryFourOfAKind = categoryFourOfAKind;
|
|
else if (option.equals("categoryFullHouse"))
|
|
setCategoryFullHouse = categoryFullHouse;
|
|
else if (option.equals("categorySmallStreet"))
|
|
setCategorySmallStreet = categorySmallStreet;
|
|
else if (option.equals("categoryBigStreet"))
|
|
setCategoryBigStreet = categoryBigStreet;
|
|
else if (option.equals("categoryYahtzee")) {
|
|
if (setCategoryYahtzee != null) {
|
|
setCategoryYahtzee += 50;
|
|
if (counter[0] == 5)
|
|
setCategoryOne = 5;
|
|
else if (counter[1] == 5)
|
|
setCategoryTwo = 10;
|
|
else if (counter[2] == 5)
|
|
setCategoryThree = 15;
|
|
else if (counter[3] == 5)
|
|
setCategoryFour = 20;
|
|
else if (counter[4] == 5)
|
|
setCategoryFive = 25;
|
|
else if (counter[5] == 5)
|
|
setCategorySix = 30;
|
|
else if (counter[6] == 5)
|
|
setCategorySeven = 35;
|
|
else if (counter[7] == 5)
|
|
setCategoryEight = 40;
|
|
} else
|
|
setCategoryYahtzee = categoryYahtzee;
|
|
|
|
} else if (option.equals("categoryChance"))
|
|
setCategoryChance = categoryChance;
|
|
else if (option.equals("categoryStarWarsDay"))
|
|
setCategoryStarWarsDay = categoryStarWarsDay;
|
|
else if (option.equals("categoryR2D2"))
|
|
setCategoryR2D2 = categoryR2D2;
|
|
|
|
}
|
|
|
|
public void resetOptions() {
|
|
|
|
categoryOne = categoryTwo = categoryThree = categoryFour = categoryFive = categorySix = categorySeven = categoryEight = categoryTripleMatch = categoryFourOfAKind = categoryFullHouse = categorySmallStreet = categoryBigStreet = categoryYahtzee = categoryChance = categoryStarWarsDay = categoryR2D2 = 0;
|
|
|
|
Arrays.fill(counter, 0);
|
|
|
|
}
|
|
|
|
public boolean gameOver() {
|
|
|
|
if (this.savedGamemode.equals("Special8"))
|
|
return setCategoryOne != null &&
|
|
setCategoryTwo != null &&
|
|
setCategoryThree != null &&
|
|
setCategoryFour != null &&
|
|
setCategoryFive != null &&
|
|
setCategorySix != null &&
|
|
setCategorySeven != null &&
|
|
setCategoryEight != null &&
|
|
setCategoryTripleMatch != null &&
|
|
setCategoryFourOfAKind != null &&
|
|
setCategoryFullHouse != null &&
|
|
setCategorySmallStreet != null &&
|
|
setCategoryBigStreet != null &&
|
|
setCategoryYahtzee != null &&
|
|
setCategoryChance != null &&
|
|
setCategoryStarWarsDay != null &&
|
|
setCategoryR2D2 != null;
|
|
|
|
else
|
|
return setCategoryOne != null &&
|
|
setCategoryTwo != null &&
|
|
setCategoryThree != null &&
|
|
setCategoryFour != null &&
|
|
setCategoryFive != null &&
|
|
setCategorySix != null &&
|
|
setCategoryTripleMatch != null &&
|
|
setCategoryFourOfAKind != null &&
|
|
setCategoryFullHouse != null &&
|
|
setCategorySmallStreet != null &&
|
|
setCategoryBigStreet != null &&
|
|
setCategoryYahtzee != null &&
|
|
setCategoryChance != null &&
|
|
setCategoryStarWarsDay != null;
|
|
|
|
}
|
|
|
|
public void updateBonus(){
|
|
|
|
if(savedGamemode.equals("Special8")){
|
|
|
|
if(nullCheckInt(setCategoryOne) + nullCheckInt(setCategoryTwo) + nullCheckInt(setCategoryThree) + nullCheckInt(setCategoryFour)
|
|
+ nullCheckInt(setCategoryFive) + nullCheckInt(setCategorySix) + nullCheckInt(setCategorySeven) + nullCheckInt(setCategoryEight) >= 108){
|
|
this.bonus = 35;
|
|
}
|
|
|
|
} else
|
|
|
|
if(nullCheckInt(setCategoryOne) + nullCheckInt(setCategoryTwo) + nullCheckInt(setCategoryThree) + nullCheckInt(setCategoryFour)
|
|
+ nullCheckInt(setCategoryFive) + nullCheckInt(setCategorySix) >= 63){
|
|
this.bonus = 35;
|
|
}
|
|
|
|
}
|
|
|
|
public int returnTotalPoints() {
|
|
|
|
if (savedGamemode.equals("Special8"))
|
|
return setCategoryOne + setCategoryTwo + setCategoryThree + setCategoryFour + setCategoryFive
|
|
+ setCategorySix + setCategorySeven + setCategoryEight + bonus + setCategoryTripleMatch
|
|
+ setCategoryFourOfAKind
|
|
+ setCategoryFullHouse + setCategorySmallStreet + setCategoryBigStreet + setCategoryYahtzee
|
|
+ setCategoryChance + setCategoryStarWarsDay
|
|
+ setCategoryR2D2;
|
|
else
|
|
|
|
return setCategoryOne + setCategoryTwo + setCategoryThree + setCategoryFour + setCategoryFive
|
|
+ setCategorySix + bonus + setCategoryTripleMatch + setCategoryFourOfAKind
|
|
+ setCategoryFullHouse + setCategorySmallStreet + setCategoryBigStreet + setCategoryYahtzee
|
|
+ setCategoryChance + setCategoryStarWarsDay;
|
|
|
|
}
|
|
|
|
public String selectedOptionsPrinted(int player) {
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
if (savedGamemode.equals("Special8")) {
|
|
sb.append("categoryOne: " + nullCheck(setCategoryOne) + "\n");
|
|
sb.append("categoryTwo: " + nullCheck(setCategoryTwo) + "\n");
|
|
sb.append("categoryThree: " + nullCheck(setCategoryThree) + "\n");
|
|
sb.append("categoryFour: " + nullCheck(setCategoryFour) + "\n");
|
|
sb.append("categoryFive: " + nullCheck(setCategoryFive) + "\n");
|
|
sb.append("categorySix: " + nullCheck(setCategorySix) + "\n");
|
|
sb.append("categorySeven: " + nullCheck(setCategorySeven) + "\n");
|
|
sb.append("categoryEight: " + nullCheck(setCategoryEight) + "\n");
|
|
sb.append("\nbonus: " + nullCheck(bonus) + "\n");
|
|
sb.append("\n--------------------------\n\n");
|
|
sb.append("categoryTripleMatch: " + nullCheck(setCategoryTripleMatch) + "\n");
|
|
sb.append("categoryFourOfAKind: " + nullCheck(setCategoryFourOfAKind) + "\n");
|
|
sb.append("categoryFullHouse: " + nullCheck(setCategoryFullHouse) + "\n");
|
|
sb.append("categorySmallStreet: " + nullCheck(setCategorySmallStreet) + "\n");
|
|
sb.append("categoryBigStreet: " + nullCheck(setCategoryBigStreet) + "\n");
|
|
sb.append("categoryYahtzee: " + nullCheck(setCategoryYahtzee) + "\n");
|
|
sb.append("categoryChance: " + nullCheck(setCategoryChance) + "\n");
|
|
sb.append("categoryStarWarsDay: " + nullCheck(setCategoryStarWarsDay) + "\n");
|
|
sb.append("categoryR2D2: " + nullCheck(setCategoryR2D2) + "\n");
|
|
} else {
|
|
sb.append("categoryOne: " + nullCheck(setCategoryOne) + "\n");
|
|
sb.append("categoryTwo: " + nullCheck(setCategoryTwo) + "\n");
|
|
sb.append("categoryThree: " + nullCheck(setCategoryThree) + "\n");
|
|
sb.append("categoryFour: " + nullCheck(setCategoryFour) + "\n");
|
|
sb.append("categoryFive: " + nullCheck(setCategoryFive) + "\n");
|
|
sb.append("categorySix: " + nullCheck(setCategorySix) + "\n");
|
|
sb.append("\nbonus: " + nullCheck(bonus) + "\n");
|
|
sb.append("\n--------------------------\n\n");
|
|
sb.append("categoryTripleMatch: " + nullCheck(setCategoryTripleMatch) + "\n");
|
|
sb.append("categoryFourOfAKind: " + nullCheck(setCategoryFourOfAKind) + "\n");
|
|
sb.append("categoryFullHouse: " + nullCheck(setCategoryFullHouse) + "\n");
|
|
sb.append("categorySmallStreet: " + nullCheck(setCategorySmallStreet) + "\n");
|
|
sb.append("categoryBigStreet: " + nullCheck(setCategoryBigStreet) + "\n");
|
|
sb.append("categoryYahtzee: " + nullCheck(setCategoryYahtzee) + "\n");
|
|
sb.append("categoryChance: " + nullCheck(setCategoryChance) + "\n");
|
|
sb.append("categoryStarWarsDay: " + nullCheck(setCategoryStarWarsDay) + "\n");
|
|
}
|
|
return sb.toString();
|
|
|
|
}
|
|
|
|
public String nullCheck(Integer i) {
|
|
|
|
if (i == null)
|
|
return "___";
|
|
else
|
|
return "" + i;
|
|
}
|
|
|
|
public int nullCheckInt(Integer i) {
|
|
|
|
if(i == null)
|
|
return 0;
|
|
else
|
|
return i;
|
|
}
|
|
}
|