summaryrefslogtreecommitdiff
path: root/player
diff options
context:
space:
mode:
authorJoe Zhao <ztuowen@gmail.com>2014-12-02 21:40:36 +0800
committerJoe Zhao <ztuowen@gmail.com>2014-12-02 21:40:36 +0800
commit134770f0cd68eaf0525e03bb6e6cfbd03153fdb7 (patch)
treeeb07c5399b1b9fef21ee82efe12415b86c9237b0 /player
parent83122b34976d012fc5524152b170adcfef7eef60 (diff)
downloadMahjong-134770f0cd68eaf0525e03bb6e6cfbd03153fdb7.tar.gz
Mahjong-134770f0cd68eaf0525e03bb6e6cfbd03153fdb7.tar.bz2
Mahjong-134770f0cd68eaf0525e03bb6e6cfbd03153fdb7.zip
Various UI
Tested Read Card
Diffstat (limited to 'player')
-rw-r--r--player/GenericPlayer.java33
-rw-r--r--player/ai/Values.java25
-rw-r--r--player/human/LocalHuman.java75
3 files changed, 133 insertions, 0 deletions
diff --git a/player/GenericPlayer.java b/player/GenericPlayer.java
new file mode 100644
index 0000000..bd53b8c
--- /dev/null
+++ b/player/GenericPlayer.java
@@ -0,0 +1,33 @@
+package mahjong.player;
+
+import mahjong.aux.Card;
+import mahjong.aux.set.Aside;
+import mahjong.aux.set.Hand;
+import mahjong.aux.set.Set;
+
+import java.io.IOException;
+
+/**
+ * Created by joe on 12/2/14.
+ */
+public abstract class GenericPlayer {
+ public Hand hand=new Hand();
+
+ protected String name;
+
+ public String getName() {
+ return name;
+ }
+
+ public abstract void stateUpdate(GenericPlayer player,Aside aside,Card card);
+ public abstract Card putCard();
+ public abstract void give(Card card);
+
+ public abstract Aside confirmPeng(Card card);
+ public abstract Aside confirmChi(Card card);
+ public abstract Aside confirmJiaAnGang(Card card);
+ public abstract Aside confirmMingGang(Card card);
+
+ public abstract boolean confirmHu();
+
+}
diff --git a/player/ai/Values.java b/player/ai/Values.java
new file mode 100644
index 0000000..ac3db75
--- /dev/null
+++ b/player/ai/Values.java
@@ -0,0 +1,25 @@
+package mahjong.player.ai;
+
+/**
+ * Created by joe on 12/2/14.
+ */
+public class Values {
+ public static final double[] valuesI = new double[]{};
+ public static final double[] deckValue = new double[]
+ {
+ 5, 8, 8, 8, 8, 8, 8, 8, 5,
+ 5, 8, 8, 8, 8, 8, 8, 8, 5,
+ 5, 8, 8, 8, 8, 8, 8, 8, 5,
+ 6,6,6,6,
+ 6,6,6,0
+ };
+ public static final double[] spitRate = new double[]
+ {
+ 0,6,4,3,4
+ };
+
+ public static double calCardSpitProb(int rems, int id)
+ {
+ return spitRate[rems]/deckValue[id];
+ }
+}
diff --git a/player/human/LocalHuman.java b/player/human/LocalHuman.java
new file mode 100644
index 0000000..4ae8bf7
--- /dev/null
+++ b/player/human/LocalHuman.java
@@ -0,0 +1,75 @@
+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()));
+ }
+
+ @Override
+ public Card putCard(){
+ System.out.println("Your deck now:");
+ hand.print();
+ 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);
+ }
+
+ @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) {
+ return null;
+ }
+
+ @Override
+ public Aside confirmChi(Card card) {
+ return null;
+ }
+
+ @Override
+ public Aside confirmJiaAnGang(Card card) {
+ return null;
+ }
+
+ @Override
+ public Aside confirmMingGang(Card card) {
+ return null;
+ }
+
+ @Override
+ public boolean confirmHu() {
+ return false;
+ }
+}