summaryrefslogtreecommitdiff
path: root/player/human/LocalHuman.java
blob: dd47666ccc45dd9b7cd87f2472f8b6b9c080890f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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()[0].getNormalName()));
        if (card!=null)
            System.out.println(player.getName().concat(":\n\t").concat("Putdown:\t").concat(card.getNormalName()));
    }

    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 Card.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.readMultipleCardFromInput(3), Aside.Type.Peng,from);
        return null;
    }

    @Override
    public Aside confirmChi(Card card, int from) {
        if (genConfirm("Chi?"))
            return new Aside(Card.readMultipleCardFromInput(3), Aside.Type.jGang, from);
        return null;
    }

    @Override
    public Aside confirmJiaAnGang(Card card, int from) {
        if (genConfirm("Gang?")) {
            if (Card.readCardFromInput().getId() == card.getId())
                return new Aside(Card.readMultipleCardFromInput(4), Aside.Type.jGang, from);
            else
                return new Aside(Card.readMultipleCardFromInput(4), Aside.Type.aGang, from);
        }
        return null;
    }

    @Override
    public Aside confirmMingGang(Card card, int from) {
        if (genConfirm("Gang?"))
            return new Aside(Card.readMultipleCardFromInput(4), 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;
    }
}