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

📄 myplayer.java

📁 一款麻将游戏的J2me源代码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        while(vector2.size() < 3 && vector1.size() != 0) 
            if(!isSequenceO(vector1) && !isTripleO(vector1))
                if(isPairO(vector1))
                {
                    byte0 += 2;
                } else
                {
                    Object obj = vector1.lastElement();
                    vector2.addElement(obj);
                    vector1.removeElement(obj);
                }
        return reachTenCondition(vector2, byte0);
    }

    private boolean checkTenTPS(Vector vector)
    {
        m_vHouSet.removeAllElements();
        Vector vector1 = cloneVector(vector);
        Vector vector2 = new Vector();
        byte byte0 = 0;
        while(vector2.size() < 3 && vector1.size() != 0) 
            if(!isTriple(vector1))
                if(isPair(vector1))
                    byte0 += 2;
                else
                if(!isSequence(vector1))
                {
                    Object obj = vector1.firstElement();
                    vector2.addElement(obj);
                    vector1.removeElement(obj);
                }
        return reachTenCondition(vector2, byte0);
    }

    private boolean checkTenSTP(Vector vector)
    {
        m_vHouSet.removeAllElements();
        Vector vector1 = cloneVector(vector);
        Vector vector2 = new Vector();
        byte byte0 = 0;
        while(vector2.size() < 3 && vector1.size() != 0) 
            if(!isSequence(vector1) && !isTriple(vector1))
                if(isPair(vector1))
                {
                    byte0 += 2;
                } else
                {
                    Object obj = vector1.firstElement();
                    vector2.addElement(obj);
                    vector1.removeElement(obj);
                }
        return reachTenCondition(vector2, byte0);
    }

    private boolean reachTenCondition(Vector vector, byte byte0)
    {
        sort(vector);
        boolean flag = false;
        if(byte0 == 12 || byte0 == 4 && vector.size() == 0)
            flag = true;
        else
        if(vector.size() == 2 && byte0 == 2)
        {
            byte byte1 = ((Byte)vector.firstElement()).byteValue();
            byte byte2 = ((Byte)vector.lastElement()).byteValue();
            flag = byte1 < 30 && (byte1 % 10 != 9 && byte1 + 1 == byte2 || byte1 % 10 < 8 && byte1 + 2 == byte2);
        } else
        if(vector.size() == 1 && byte0 == 0)
            flag = true;
        return flag;
    }

    public boolean isPicked()
    {
        return m_bPicked;
    }

    public void rightDiscardPos()
    {
        m_btDiscardPos = m_btDiscardPos != m_vInHand.size() ? (byte)(m_btDiscardPos + 1) : 0;
    }

    public void leftDiscardPos()
    {
        m_btDiscardPos = m_btDiscardPos != 0 ? (byte)(m_btDiscardPos - 1) : (byte)m_vInHand.size();
    }

    public boolean gotSelfKongChance()
    {
        m_vChances = new Vector();
        pickedConcealedSelfKongChance();
        pickedUnconcealedSelfKongChance();
        inhandConcealedSelfKongChance();
        inhandUnconcealedSelfKongChance();
        return m_vChances.size() != 0;
    }

    private void inhandUnconcealedSelfKongChance()
    {
        for(byte byte0 = 0; byte0 < m_vMelded.size(); byte0++)
        {
            MeldedSet meldedset = (MeldedSet)m_vMelded.elementAt(byte0);
            if(meldedset.getType() == 7 && m_vInHand.contains(new Byte(meldedset.getTileOrIndex())))
                m_vChances.addElement(new MeldedSet((byte)3, byte0));
        }

    }

    private void inhandConcealedSelfKongChance()
    {
        for(Vector vector = cloneVector(m_vInHand); vector.size() > 3;)
        {
            Byte byte1 = (Byte)vector.firstElement();
            if(getTileCount(vector, byte1) == 4)
            {
                for(byte byte0 = 0; byte0 < 4; byte0++)
                    vector.removeElement(byte1);

                m_vChances.addElement(new MeldedSet((byte)2, (byte)m_vInHand.indexOf(byte1)));
            } else
            {
                vector.removeElement(byte1);
            }
        }

    }

    private void pickedUnconcealedSelfKongChance()
    {
        for(byte byte0 = 0; byte0 < m_vMelded.size(); byte0++)
        {
            MeldedSet meldedset = (MeldedSet)m_vMelded.elementAt(byte0);
            if(meldedset.getType() == 7 && meldedset.getTileOrIndex() == m_btPickedTile)
                m_vChances.addElement(new MeldedSet((byte)1, byte0));
        }

    }

    private void pickedConcealedSelfKongChance()
    {
        Byte byte1 = new Byte(m_btPickedTile);
        if(getTileCount(m_vInHand, byte1) == 3)
            m_vChances.addElement(new MeldedSet((byte)0, (byte)m_vInHand.indexOf(byte1)));
    }

    public boolean isHuman()
    {
        return m_btType == 0;
    }

    public byte getDiscardPos()
    {
        return m_btDiscardPos;
    }

    public byte getPickedTile()
    {
        return m_btPickedTile;
    }

    public boolean pick(byte byte0)
    {
        m_bPicked = true;
        m_btPickedTile = byte0;
        m_btDiscardPos = (byte)m_vInHand.size();
        return gotHouChance(m_btPickedTile);
    }

    public boolean gotHouChance(byte byte0)
    {
        Vector vector = cloneVector(m_vInHand);
        vector.addElement(new Byte(byte0));
        	
//        Vector vector=new Vector(0,1);
//        int[] cs=new int[]{1,2,3,11,11,34,34,34};
//        for(int i=0;i<cs.length;i++)
//        vector.addElement(new Byte((byte)cs[i]));
        sort(vector);
        return checkHouSTP(vector) || checkHouTPS(vector) || checkHouSTPO(vector) || checkHouTPSO(vector);
 
    	//return true;
    }

    private boolean checkHouTPSO(Vector vector)
    {
        m_vHouSet.removeAllElements();
        Vector vector1 = cloneVector(vector);
        byte byte0 = 0;
        byte byte1 = 0;
        while(byte0 == 0 && vector1.size() != 0)//没有坎牌,判断是否有对子,如果有就继续,如果没有对子,则判断是否有顺子,否则不能和 
            if(!isTripleO(vector1))
                if(isPairO(vector1))
                    byte1 += 2;
                else
                if(!isSequenceO(vector1))
                    byte0++;
        return reachHouCondition(byte0, byte1);
    }

    private boolean checkHouSTPO(Vector vector)//七对子
    {
        m_vHouSet.removeAllElements();
        Vector vector1 = cloneVector(vector);
        byte byte0 = 0;
        byte byte1 = 0;
        while(byte0 == 0 && vector1.size() != 0) 
            if(!isSequenceO(vector1) && !isTripleO(vector1))//如果没有坎牌和顺牌
                if(isPairO(vector1))
                    byte1 += 2;
                else
                    byte0++;
        return reachHouCondition(byte0, byte1);
    }

    private boolean isPairO(Vector vector)//是否有对子
    {
        Byte byte1 = (Byte)vector.lastElement();
        boolean flag = false;
        if(getTileCount(vector, byte1) == 2)
        {
            flag = true;
            for(byte byte0 = 0; byte0 < 2; byte0++)
                vector.removeElement(byte1);

            m_vHouSet.addElement(new MeldedSet((byte)12, byte1.byteValue()));
        }
        return flag;
    }

    private boolean isTripleO(Vector vector)//是否有坎
    {
        Byte byte1 = (Byte)vector.lastElement();
        boolean flag = false;
        if(getTileCount(vector, byte1) == 3)
        {
            flag = true;
            for(byte byte0 = 0; byte0 < 3; byte0++)
                vector.removeElement(byte1);

            m_vHouSet.addElement(new MeldedSet((byte)11, byte1.byteValue()));
        }
        return flag;
    }

    private boolean isSequenceO(Vector vector)//是否有顺
    {
        Byte byte1 = (Byte)vector.lastElement();
        boolean flag = false;
        if(byte1.byteValue() <= 30)
        {
            Byte byte2 = new Byte((byte)(byte1.byteValue() - 1));
            Byte byte3 = new Byte((byte)(byte1.byteValue() - 2));
            if(vector.contains(byte2) && vector.contains(byte3))
            {
                flag = true;
                vector.removeElement(byte3);
                vector.removeElement(byte2);
                vector.removeElement(byte1);
                m_vHouSet.addElement(new MeldedSet((byte)10, byte3.byteValue()));
            }
        }
        return flag;
    }

    private boolean checkHouTPS(Vector vector)//
    {
        m_vHouSet.removeAllElements();
        Vector vector1 = cloneVector(vector);
        byte byte0 = 0;
        byte byte1 = 0;
        while(byte0 == 0 && vector1.size() != 0) 
            if(!isTriple(vector1))
                if(isPair(vector1))
                    byte1 += 2;
                else
                if(!isSequence(vector1))
                    byte0++;
        return reachHouCondition(byte0, byte1);
    }

    private boolean checkHouSTP(Vector vector)
    {
        m_vHouSet.removeAllElements();
        Vector vector1 = cloneVector(vector);
        byte byte0 = 0;
        byte byte1 = 0;
        int num=0;
        while(byte0 == 0 && vector1.size() != 0)
        { 
            if(!isSequence(vector1) && !isTriple(vector1))
                if(isPair(vector1))
                    byte1 += 2;
                else
                    byte0++;
//                 //System.out.println(num);
//                 //System.out.println(byte0);
//                 //System.out.println(byte1);
                }   
        return reachHouCondition(byte0, byte1);
    }

    private boolean reachHouCondition(byte byte0, byte byte1)
    {
        return byte0 == 0 && (byte1 == 2 || byte1 == 14);
    }

    private boolean isPair(Vector vector)
    {
        Byte byte1 = (Byte)vector.firstElement();
        boolean flag = false;
        if(getTileCount(vector, byte1) == 2)
        {
            flag = true;
            for(byte byte0 = 0; byte0 < 2; byte0++)
                vector.removeElement(byte1);

            m_vHouSet.addElement(new MeldedSet((byte)12, byte1.byteValue()));
        }
        return flag;
    }

    private boolean isTriple(Vector vector)//坎
    {
        Byte byte1 = (Byte)vector.firstElement();
        boolean flag = false;
        if(getTileCount(vector, byte1) == 3)
        {
            flag = true;
            for(byte byte0 = 0; byte0 < 3; byte0++)
                vector.removeElement(byte1);

            m_vHouSet.addElement(new MeldedSet((byte)11, byte1.byteValue()));
        }
        return flag;
    }

    private byte getTileCount(Vector vector, Byte byte1)
    {
        byte byte0 = 0;
        for(byte byte2 = 0; byte2 < vector.size(); byte2++)
            if(((Byte)vector.elementAt(byte2)).byteValue() == byte1.byteValue())
                byte0++;

        return byte0;
    }

    private boolean isSequence(Vector vector)
    {
        Byte byte1 = (Byte)vector.firstElement();
        boolean flag = false;
        if(byte1.byteValue() <= 30)
        {
            Byte byte2 = new Byte((byte)(byte1.byteValue() + 1));
            Byte byte3 = new Byte((byte)(byte1.byteValue() + 2));
            if(vector.contains(byte2) && vector.contains(byte3))
            {
                flag = true;
                vector.removeElement(byte1);
                vector.removeElement(byte2);
                vector.removeElement(byte3);
                m_vHouSet.addElement(new MeldedSet((byte)10, byte1.byteValue()));
            }
        }
        return flag;
    }

    private Vector cloneVector(Vector vector)
    {
        Vector vector1 = new Vector();
        for(byte byte0 = 0; byte0 < vector.size(); byte0++)
            vector1.addElement(vector.elementAt(byte0));

        return vector1;
    }

    public void sortInHand()
    {
        sort(m_vInHand);
    }

    private void sort(Vector vector)
    {
        byte abyte0[] = new byte[vector.size()];
        for(byte byte0 = 0; byte0 < abyte0.length; byte0++)
            abyte0[byte0] = ((Byte)vector.elementAt(byte0)).byteValue();

        for(byte byte1 = 0; byte1 < abyte0.length - 1; byte1++)
        {
            for(byte byte2 = (byte)(byte1 + 1); byte2 < abyte0.length; byte2++)
                if(abyte0[byte1] > abyte0[byte2])
                {
                    byte byte4 = abyte0[byte1];
                    abyte0[byte1] = abyte0[byte2];
                    abyte0[byte2] = byte4;
                }

        }

        vector.removeAllElements();
        for(byte byte3 = 0; byte3 < abyte0.length; byte3++)
        {
            vector.addElement(new Byte(abyte0[byte3]));
            ////System.out.println(abyte0[byte3]);
        }

    }

    public void setLastDealtTile(byte byte0)
    {
        m_vInHand.addElement(new Byte(byte0));
    }

    public byte getInHandTile(byte byte0)
    {
        return ((Byte)m_vInHand.elementAt(byte0)).byteValue();
    }

    public int getInHandCount()
    {
        return m_vInHand.size();
    }

    public void setDealtTiles(byte abyte0[])
    {
        for(byte byte0 = 0; byte0 < abyte0.length; byte0++)
            m_vInHand.addElement(new Byte(abyte0[byte0]));

    }

    public byte getType()
    {
        return m_btType;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -