📄 mjcardcollection.java
字号:
package com.newpalm.game.mj.share;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.Vector;
/**
* @author liyamin
*/
public class MJCardCollection extends Vector {
public SortedSet getSortedSet() {
return new TreeSet(this);
}
public int countSame(MJCard card) {
int count = 0;
for (Iterator iter = this.iterator(); iter.hasNext();) {
if (iter.next().equals(card))
count++;
}
return count;
}
public boolean isHuable(MJCard card) {
List cards = (List) this.clone();
cards.add(card);
return MJCardStat.isHuable(cards);
}
public boolean isHuable() {
return MJCardStat.isHuable(this);
}
public boolean isPengable(MJCard card) {
if (countSame(card) >= 2)
return true;
return false;
}
public MJCard[] getAnGangableCards() {
Vector vt = new Vector();
MJCard lastCard = null;
for (Iterator iter = getSortedSet().iterator(); iter.hasNext();) {
MJCard card = (MJCard) iter.next();
if (card.equals(lastCard))
continue;
if (countSame(card) >= 4) {
vt.add(card);
lastCard = card;
}
}
if (vt.size() == 0)
return null;
MJCard[] cards = new MJCard[vt.size()];
vt.toArray(cards);
return cards;
}
public boolean isGangable(MJCard card) {
if (countSame(card) >= 3)
return true;
return false;
}
public boolean isEatable(MJCard card) {
return (getEatablePairs(card) != null);
}
public Collection getEatablePairs(MJCard card) {
if (card.isZiCard()) {
return null;
}
Collection rt = new Vector();
MJCard p1 = getRelativeCard(card, -1);
MJCard p2 = getRelativeCard(card, -2);
MJCard n1 = getRelativeCard(card, 1);
MJCard n2 = getRelativeCard(card, 2);
if (p1 != null && p2 != null) {
MJCard[] pair = new MJCard[2];
pair[0] = p1;
pair[1] = p2;
rt.add(pair);
}
if (p1 != null && n1 != null) {
MJCard[] pair = new MJCard[2];
pair[0] = p1;
pair[1] = n1;
rt.add(pair);
}
if (n1 != null && n2 != null) {
MJCard[] pair = new MJCard[2];
pair[0] = n1;
pair[1] = n2;
rt.add(pair);
}
if (rt.size() == 0)
return null;
else
return rt;
}
private MJCard getRelativeCard(MJCard card, int offset) {
if (card.isZiCard())
return null;
int abs = card.getPoint() + offset;
if (abs < 0 || abs > 8)
return null;
MJCard c = new MJCard(card.getType(), abs);
if (this.contains(c))
return c;
else
return null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -