package mahjong.player.human; import mahjong.aux.Card; import mahjong.aux.set.Aside; import mahjong.aux.set.Hand; import mahjong.player.GenericPlayer; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * Created by joe on 12/2/14. */ public class LocalHuman extends GenericPlayer { public LocalHuman(String name) { this.name=name; } @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())); if (card!=null) System.out.println(player.getName().concat(":\n\t").concat("Putdown:\t").concat(card.getNormalName())); } public Card readCardFromInput() { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String cardStr="Yi Wan"; try { cardStr = br.readLine(); } catch (IOException e) { e.printStackTrace(); } return new Card(cardStr); } public boolean genConfirm(String question) { System.out.println(question); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String inStr="O"; try { while (inStr.toUpperCase().compareTo("Y")!=0 && inStr.toUpperCase().compareTo("N")!=0) inStr = br.readLine(); } catch (IOException e) { e.printStackTrace(); } if (inStr.toUpperCase().compareTo("Y")==0) return true; return false; } @Override public Card putCard(){ System.out.println("Your deck now:"); hand.print(); return readCardFromInput(); } @Override public void give(Card card) { System.out.println("You drew:\n\t".concat(card.getNormalName())); hand.add(card); } @Override public Aside confirmPeng(Card card, int from) { if (genConfirm("Peng?")) return new Aside(card, 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 null; } @Override public Aside confirmJiaAnGang(Card card, int from) { if (genConfirm("Gang?")) { if (readCardFromInput().getId() == card.getId()) return new Aside(card, Aside.Type.jGang, from); else return new Aside(card, Aside.Type.aGang, from); } return null; } @Override public Aside confirmMingGang(Card card, int from) { if (genConfirm("Gang?")) return new Aside(card, Aside.Type.mGang, from); return null; } @Override public boolean confirmHu(Card card, int from) { System.out.println("Card:\n\t".concat(card.getNormalName())); if (genConfirm("Hu?")) return true; return false; } }