⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mjcardcollection.java

📁 麻将程序
💻 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 + -