📄 myplayer.java
字号:
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 + -