[CODE lang="java" title="kleine Straße"]public static boolean checkSmallStreet(int diceList[]) {
ArrayList<Integer> unsortedDiceList = arrayToArrayList(diceList);
ArrayList<Integer> sortedDiceList = sortArrayList(unsortedDiceList);
System.out.println(sortedDiceList);
int countDoubleIndex = 0;
int countRow = 0;
for (int i = 0; i < sortedDiceList.size() - 1; i++) {
if(countRow == 4) {
break;
}
if (doubleIndex(i, sortedDiceList)) {
countDoubleIndex++;
if (countDoubleIndex == 2) {
return false;
}
if (i == 3) {
if (countRow == 3 && sortedDiceList.get(i) - sortedDiceList.get(i - 1) == 1) {
return true;
} else {
return false;
}
} else {
i++;
}
}
if (sortedDiceList.get(i + 1) - sortedDiceList.get(i) != 1) {
return false;
} else {
countRow++;
}
}
return true;
}
private static boolean doubleIndex(int indexArray, ArrayList<Integer> list) {
if (list.get(indexArray) == list.get(indexArray + 1)) {
return true;
} else {
return false;
}
}[/CODE]
Hallo, ich programmiere gerade ein Kniffel-Spiel und habe nach langem Versuchen nun eine Lösung gefunden, um zu checken, ob die Würfelfolge bei einer Anzahl von fünf Würfeln einer kleinen Straße entspricht. Jetzt frage ich mich, ob jemand vielleicht eine einfachere Lösung hat oder ob man mein Code noch verbessern kann. Das schwierige für mich war die ArrayList so zu überprüfen, sodass bei der bereits sortierten ArrayList ein doppelter Index, z.B. [2, 3, 4, 4, 5] beachtet wird.
Die Methode, um eine große Straße zu checken habe ich schon programmiert und die oben stehende Methode "checkSmallStreet" wird erst aufgerufen, sobald die die Methode für die große Straße false zurück gibt bzw. für die anderen Optionen wie Kniffel und Full House.
Vielen Dank schonmal im Vorraus
ArrayList<Integer> unsortedDiceList = arrayToArrayList(diceList);
ArrayList<Integer> sortedDiceList = sortArrayList(unsortedDiceList);
System.out.println(sortedDiceList);
int countDoubleIndex = 0;
int countRow = 0;
for (int i = 0; i < sortedDiceList.size() - 1; i++) {
if(countRow == 4) {
break;
}
if (doubleIndex(i, sortedDiceList)) {
countDoubleIndex++;
if (countDoubleIndex == 2) {
return false;
}
if (i == 3) {
if (countRow == 3 && sortedDiceList.get(i) - sortedDiceList.get(i - 1) == 1) {
return true;
} else {
return false;
}
} else {
i++;
}
}
if (sortedDiceList.get(i + 1) - sortedDiceList.get(i) != 1) {
return false;
} else {
countRow++;
}
}
return true;
}
private static boolean doubleIndex(int indexArray, ArrayList<Integer> list) {
if (list.get(indexArray) == list.get(indexArray + 1)) {
return true;
} else {
return false;
}
}[/CODE]
Hallo, ich programmiere gerade ein Kniffel-Spiel und habe nach langem Versuchen nun eine Lösung gefunden, um zu checken, ob die Würfelfolge bei einer Anzahl von fünf Würfeln einer kleinen Straße entspricht. Jetzt frage ich mich, ob jemand vielleicht eine einfachere Lösung hat oder ob man mein Code noch verbessern kann. Das schwierige für mich war die ArrayList so zu überprüfen, sodass bei der bereits sortierten ArrayList ein doppelter Index, z.B. [2, 3, 4, 4, 5] beachtet wird.
Die Methode, um eine große Straße zu checken habe ich schon programmiert und die oben stehende Methode "checkSmallStreet" wird erst aufgerufen, sobald die die Methode für die große Straße false zurück gibt bzw. für die anderen Optionen wie Kniffel und Full House.
Vielen Dank schonmal im Vorraus