package mahjong.aux; /** * Created by joe on 12/1/14. */ public class Card { int id = 0; static final String[] typeName = {"Wan","Tong","Tiao","Feng","Yuan"}; static final String[] typeSuffix = {"Wan","Tong","Tiao","Feng",""}; static final String[] shuName = {"Guard","Guard","Yi","Er","San","Si","Wu","Liu","Qi","Ba","Jiu","Guard","Guard"}; static final String[] fengName = {"Guard","Guard","Dong","Guard","Guard","Nan","Guard","Guard","Xi","Guard","Guard","Bei","Guard","Guard"}; static final String[] yuanName = {"Guard","Guard","Fa","Guard","Guard","Zhong","Guard","Guard","Bai","Guard","Guard"}; static final String exName = "Hong"; static final String errName = "ERROR"; static public int parseSuffixNameId(String str) { int id; for (int i=0;i3) ex=1; id = (((type<<4)+ord)<<1)+ex; return; } String[] res = name.split("\\s"); ex=parseExId(res[0]); ord = parseOrdNameId(res[ex]); if (res.length > ex+1) type = parseSuffixNameId(res[ex+1]); id = (((type<<4)+ord)<<1)+ex; } // Some Getters public int getId() { return id; } public int getStdId() {return id&0xFFFE;} public int getTypeId() { return id>>5; } public int getOrdId() { return (id>>1)&0xF; } public int getExId() { return id&1; } public String getTypeName() {return typeName[getTypeId()];} public String getTypeSuffix() {return typeSuffix[getTypeId()];} public String getOrdName() { int type = getTypeId(); int ord = getOrdId(); if (isShu()) return shuName[ord]; if (isFeng()) return fengName[ord]; if (isYuan()) return yuanName[ord]; return errName; } public String getBaoName() { if ( getExId() > 0) return exName; return ""; } public String getNormalName() { return getBaoName().concat(" ") .concat(getOrdName()).concat(" ") .concat(getTypeSuffix()) .trim(); } // Some Testers public boolean isShu() { return getTypeId()<3; } public boolean isFeng() { return getTypeId() == 3; } public boolean isYuan() { return getTypeId() == 4; } public boolean isLaoTou() { return isShu()&& (getOrdId()&7) == 0; } public boolean isZi() { return isFeng() || isYuan(); } public boolean is19() { return isLaoTou() || isZi();} public boolean isZhongZhang(){ return !is19(); } }