From 635589583b9af8994dd3f947dd3eb31157ecde1f Mon Sep 17 00:00:00 2001 From: Joe Zhao Date: Wed, 3 Dec 2014 13:05:53 +0800 Subject: Revised Aside Need better input method --- aux/set/Aside.java | 8 ++++---- aux/set/Hand.java | 2 +- engine/Engine.java | 22 ++++++++++++++++------ player/GenericPlayer.java | 8 ++++++++ player/PlayerAction.java | 7 +++++++ player/human/LocalHuman.java | 20 ++++++++++++++------ 6 files changed, 50 insertions(+), 17 deletions(-) create mode 100644 player/PlayerAction.java 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