004サブ優先順位の修正について
2285 ワード
半時間にわたる選択の後、私はついに非常に心が痛い決定を下しました。サブ優先順位クラスを再構築しました。まず最新のコードを挙げます。
/**
* <p>Title: PairPrecedenceSort.java</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2007</p>
* @author Tunie
* @date 2014 9 15
* @version 1.0
*/
public class PairPrecedenceSort implements ICardGroupSort {
public void sort(List<Card> list) {
//
CardGroup cardGroup = new CardGroup();
cardGroup.addAll(list);
cardGroup.doSort(CardGroupSortType.DECREASE);
//
if(cardGroup.size() < 3 ) return;
// ,
List<CardGroup> bombCardGroups = new ArrayList<CardGroup>();
List<CardGroup> threeCardGroups = new ArrayList<CardGroup>();
List<CardGroup> pairCardGroups = new ArrayList<CardGroup>();
int index = 0;
if (cardGroup.getCardList().get(index).isBigKing() && cardGroup.getCardList().get(index + 1).isSmallKing()) {
bombCardGroups.add(cardGroup.removeRange(0, 2));
}
while(index < cardGroup.size() - 1) {
if(cardGroup.subCardGroup(index, index + 2).isSame()) {
if((index + 3 <= cardGroup.size()) && cardGroup.subCardGroup(index, index + 3).isSame()) {
if((index + 4 <= cardGroup.size()) && cardGroup.subCardGroup(index, index + 4).isSame()) {
bombCardGroups.add(cardGroup.removeRange(index, index + 4));
continue;
}
threeCardGroups.add(cardGroup.removeRange(index, index + 3));
continue;
}
pairCardGroups.add(cardGroup.removeRange(index, index + 2));
continue;
}
++index;
}
// ,
List<Card> tempList = new ArrayList<Card>();
for(int i = 0 ; i < bombCardGroups.size() ; i++) {
tempList.addAll(bombCardGroups.get(i).getCardList());
}
for(int i = 0 ; i < threeCardGroups.size() ; i++) {
tempList.addAll(threeCardGroups.get(i).getCardList());
}
for(int i = 0 ; i < pairCardGroups.size() ; i++) {
tempList.addAll(pairCardGroups.get(i).getCardList());
}
if(!tempList.isEmpty()) {
cardGroup.getCardList().addAll(0, tempList);
list.clear();
list.addAll(cardGroup.getCardList());
}
}
}
へへへ、主な改正は子を優先して、爆弾の3つの組の優先順位を変えて、このような並べ替えを使った後に、爆弾は永遠に3つの組の子と単に札の前に、同じく道理に合って、くどくどしませんでした。