diff options
| author | Joe Zhao <ztuowen@gmail.com> | 2014-12-03 13:05:53 +0800 | 
|---|---|---|
| committer | Joe Zhao <ztuowen@gmail.com> | 2014-12-03 13:05:53 +0800 | 
| commit | 635589583b9af8994dd3f947dd3eb31157ecde1f (patch) | |
| tree | d4f1fc0c7d8483bf6b21e6c5139dea0adb9db4c4 | |
| parent | 20192ee5e02f3b87992764b68063028cb15e9d50 (diff) | |
| download | Mahjong-635589583b9af8994dd3f947dd3eb31157ecde1f.tar.gz Mahjong-635589583b9af8994dd3f947dd3eb31157ecde1f.tar.bz2 Mahjong-635589583b9af8994dd3f947dd3eb31157ecde1f.zip  | |
Revised Aside
Need better input method
| -rw-r--r-- | aux/set/Aside.java | 8 | ||||
| -rw-r--r-- | aux/set/Hand.java | 2 | ||||
| -rw-r--r-- | engine/Engine.java | 22 | ||||
| -rw-r--r-- | player/GenericPlayer.java | 8 | ||||
| -rw-r--r-- | player/PlayerAction.java | 7 | ||||
| -rw-r--r-- | player/human/LocalHuman.java | 20 | 
6 files changed, 50 insertions, 17 deletions
diff --git a/aux/set/Aside.java b/aux/set/Aside.java index c58932c..2a3b530 100644 --- a/aux/set/Aside.java +++ b/aux/set/Aside.java @@ -10,24 +10,24 @@ public class Aside {      public enum Type {Chi,Peng,aGang,mGang,jGang};      private Type type; -    private Card rep; +    private Card[] rep;      private int from; -    public Aside(Card rep,Type type,int from) +    public Aside(Card[] rep,Type type,int from)      {          this.rep=rep;          this.type=type;          this.from=from;      } -    public Aside(Card rep,Type type) +    public Aside(Card[] rep,Type type)      {          this.rep=rep;          this.type=type;          this.from= 0;      } -    public Card getRep() { +    public Card[] getRep() {          return rep;      } diff --git a/aux/set/Hand.java b/aux/set/Hand.java index cf5767e..a66944f 100644 --- a/aux/set/Hand.java +++ b/aux/set/Hand.java @@ -70,7 +70,7 @@ public class Hand extends Set {      public boolean jiaGangAble(Card card)      {          for (Aside i:asides) -        if (i.getType()== Aside.Type.Peng && card.getStdId() == i.getRep().getStdId()) +        if (i.getType()== Aside.Type.Peng && card.getStdId() == i.getRep()[0].getStdId())              return true;          return false;      } diff --git a/engine/Engine.java b/engine/Engine.java index efd853c..eec7b73 100644 --- a/engine/Engine.java +++ b/engine/Engine.java @@ -45,6 +45,16 @@ public class Engine {          deck = Deck.generateDeck();      } +    public static void playerPutAsideCards(GenericPlayer player, Card card, Aside aside) +    { +        boolean mark=true; +        for (Card asCard:aside.getRep()) +            if (card.getId() == asCard.getId() && mark) +                mark = true; +            else +                player.hand.remove(asCard); +    } +      public void mainLoop()      {          start(); @@ -61,14 +71,15 @@ public class Engine {                  hu=true;                  System.out.println(player.getName().concat(" Hule"));              } -            // An Gang +            // Gang              if (player.hand.gangAble(card))              {                  Aside aside = player.confirmJiaAnGang(card, 0); -                if (aside.getRep().getStdId()==card.getStdId()) +                if (aside.getRep()[0].getStdId()==card.getStdId())                  { +                    // An                      for (Aside exAside:player.hand.asides) -                        if (exAside.getRep().getStdId() == card.getStdId()) { +                        if (exAside.getRep()[0].getStdId() == card.getStdId()) {                              aside.setFrom(exAside.getFrom());                              player.hand.asides.remove(exAside);                              break; @@ -76,9 +87,8 @@ public class Engine {                      player.hand.asides.add(aside);                  }                  else { -                    player.hand.asides.add(aside); -                    for (int i=0;i<3;++i) -                        player.hand.remove(card); +                    // Jia +                    playerPutAsideCards(player,card,aside);                      // @TODO Remove consider card no                  }              } diff --git a/player/GenericPlayer.java b/player/GenericPlayer.java index bae29a1..b965310 100644 --- a/player/GenericPlayer.java +++ b/player/GenericPlayer.java @@ -12,6 +12,7 @@ import java.io.IOException;   */  public abstract class GenericPlayer {      public Hand hand=new Hand(); +    int score;      protected String name; @@ -30,4 +31,11 @@ public abstract class GenericPlayer {      public abstract boolean confirmHu(Card card,int from); +    public void setScore(int score) { +        this.score = score; +    } + +    public int getScore() { +        return score; +    }  } diff --git a/player/PlayerAction.java b/player/PlayerAction.java new file mode 100644 index 0000000..fb7b205 --- /dev/null +++ b/player/PlayerAction.java @@ -0,0 +1,7 @@ +package mahjong.player; + +/** + * Created by joe on 12/3/14. + */ +public class PlayerAction { +} diff --git a/player/human/LocalHuman.java b/player/human/LocalHuman.java index 48da715..a977177 100644 --- a/player/human/LocalHuman.java +++ b/player/human/LocalHuman.java @@ -22,7 +22,7 @@ public class LocalHuman extends GenericPlayer {      @Override      public void stateUpdate(GenericPlayer player, Aside aside, Card card) {          if (aside!=null) -            System.out.println(player.getName().concat(":\n\t").concat(aside.getType().name()).concat("\tStart with\t").concat(aside.getRep().getNormalName())); +            System.out.println(player.getName().concat(":\n\t").concat(aside.getType().name()).concat("\tStart with\t").concat(aside.getRep()[0].getNormalName()));          if (card!=null)              System.out.println(player.getName().concat(":\n\t").concat("Putdown:\t").concat(card.getNormalName()));      } @@ -40,6 +40,14 @@ public class LocalHuman extends GenericPlayer {          return new Card(cardStr);      } +    public Card[] readMultipleCardFromInput(int num) +    { +        Card[] res=new Card[num]; +        for (int i=0;i<num;++i) +            res[i]=readCardFromInput(); +        return res; +    } +      public boolean genConfirm(String question)      {          System.out.println(question); @@ -73,14 +81,14 @@ public class LocalHuman extends GenericPlayer {      @Override      public Aside confirmPeng(Card card, int from) {          if (genConfirm("Peng?")) -            return new Aside(card, Aside.Type.Peng,from); +            return new Aside(readMultipleCardFromInput(3), Aside.Type.Peng,from);          return null;      }      @Override      public Aside confirmChi(Card card, int from) {          if (genConfirm("Chi?")) -            return new Aside(readCardFromInput(), Aside.Type.jGang, from); +            return new Aside(readMultipleCardFromInput(3), Aside.Type.jGang, from);          return null;      } @@ -88,9 +96,9 @@ public class LocalHuman extends GenericPlayer {      public Aside confirmJiaAnGang(Card card, int from) {          if (genConfirm("Gang?")) {              if (readCardFromInput().getId() == card.getId()) -                return new Aside(card, Aside.Type.jGang, from); +                return new Aside(readMultipleCardFromInput(4), Aside.Type.jGang, from);              else -                return new Aside(card, Aside.Type.aGang, from); +                return new Aside(readMultipleCardFromInput(4), Aside.Type.aGang, from);          }          return null;      } @@ -98,7 +106,7 @@ public class LocalHuman extends GenericPlayer {      @Override      public Aside confirmMingGang(Card card, int from) {          if (genConfirm("Gang?")) -            return new Aside(card, Aside.Type.mGang, from); +            return new Aside(readMultipleCardFromInput(4), Aside.Type.mGang, from);          return null;      }  | 
