diff options
Diffstat (limited to 'aux')
| -rw-r--r-- | aux/Card.java | 19 | ||||
| -rw-r--r-- | aux/set/Set.java | 69 | 
2 files changed, 79 insertions, 9 deletions
diff --git a/aux/Card.java b/aux/Card.java index c84b9bb..4b351b1 100644 --- a/aux/Card.java +++ b/aux/Card.java @@ -13,10 +13,17 @@ public class Card {      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[] yuanName = {"Guard","Guard","Bai","Guard","Guard","Fa","Guard","Guard","Zhong","Guard","Guard"};      static final String exName = "Hong";      static final String errName = "ERROR"; +    static public final int[][] idLut = new int[][]{ +            {11,  4,  6,  8, 10, 12, 14, 16, 18, 20}, +            {45, 36, 38, 40, 42, 44, 46, 48, 50, 52}, +            {77, 68, 70, 72, 74, 76, 78, 80, 82, 84}, +            {11,100,106,112,118,132,138,144,148,148}, +    }; +      static public int parseSuffixNameId(String str)      {          int id; @@ -60,7 +67,7 @@ public class Card {          if (name.charAt(0)==':')          {              ord = name.charAt(1)-47; -            switch (name.charAt(2)) +            switch (Character.toUpperCase(name.charAt(2)))              {                  case 'M':                      type=0;break; @@ -68,14 +75,10 @@ public class Card {                      type=1;break;                  case 'S':                      type=2;break; -                case 'F': -                    type=3;break;                  case 'Z': -                    type=4;break; +                    type=3;break;              } -            if (name.length()>3) -                ex=1; -            id = (((type<<4)+ord)<<1)+ex; +            id = idLut[type][ord];              return;          }          String[] res = name.split("\\s"); diff --git a/aux/set/Set.java b/aux/set/Set.java index d087955..be1cdca 100644 --- a/aux/set/Set.java +++ b/aux/set/Set.java @@ -23,10 +23,38 @@ public class Set {          for (Card card:cards)              add(card);      } +    public Set(String str) +    { +        int typeid=0; +        for (int i=str.length()-1;i>=0;--i) +        { +            if (!Character.isDigit(str.charAt(i))) +                switch (Character.toUpperCase(str.charAt(i))) +                { +                    case 'M': +                        typeid=0; +                        break; +                    case 'P': +                        typeid=1; +                        break; +                    case 'S': +                        typeid=2; +                        break; +                    case 'Z': +                        typeid=3; +                        break; +                } +            else +            { +                int posid=str.charAt(i)-48; +                add(new Card(Card.idLut[typeid][posid])); +            } +        } +    }      public void sort()      { -        cards.sort((Card x,Card y) -> x.getExId()-y.getExId()); +        cards.sort((Card x,Card y) -> x.getId()-y.getId());      }      public void add(Card in)      { @@ -67,6 +95,45 @@ public class Set {          return cards.size();      } +    static char typeId2Char(int typeid) +    { +        switch (typeid) +        { +            case 0: +                return 'm'; +            case 1: +                return 'p'; +            case 2: +                return 's'; +            case 3: +                return 'z'; +        } +        return ' '; +    } + +    @Override +    public String toString() { +        int typeid=-1; +        String str=""; +        sort(); +        for (Card card:cards) { +            if (typeid!=Math.min(3, card.getTypeId())) +            { +                if (typeid>=0) +                    str=str.concat(Character.toString(typeId2Char(typeid))); +            } +            typeid=Math.min(3, card.getTypeId()); +            int i=0; +            for (int j=0;j<10;++j) +                if (Card.idLut[typeid][j]==card.getId()) +                    i=j; +            str=str.concat(Integer.toString(i)); +        } +        if (typeid>=0) +            str=str.concat(Character.toString(typeId2Char(typeid))); +        return str; +    } +      public void print()      {          for (Card card:cards)  | 
