From 83122b34976d012fc5524152b170adcfef7eef60 Mon Sep 17 00:00:00 2001 From: Joe Zhao Date: Tue, 2 Dec 2014 18:57:51 +0800 Subject: First commit --- aux/Card.java | 140 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 aux/Card.java (limited to 'aux/Card.java') diff --git a/aux/Card.java b/aux/Card.java new file mode 100644 index 0000000..cabd2d9 --- /dev/null +++ b/aux/Card.java @@ -0,0 +1,140 @@ +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(); } +} \ No newline at end of file -- cgit v1.2.3-70-g09d2