📄 mjconsoleclienteventhandler.java~7~
字号:
String[] rt = null;
String cmdpmt = "";
for (int i = 0; i < cmds.length; i++) {
ConsoleCommand cmd = cmds[i];
cmdpmt += cmd.getPrompt();
if (i < (cmds.length - 1))
cmdpmt += "|";
}
if (showCmds) {
prompt += "(" + cmdpmt + "):";
}
while (true) {
System.out.print(prompt);
rt = readCommand();
if (rt == null || rt.length == 0)
continue;
String thiscmd = rt[0];
for (int i = 0; i < cmds.length; i++) {
String cmd = cmds[i].getCommand();
if (cmd.equalsIgnoreCase(thiscmd))
return rt;
}
}
}
private String[] readCommand() {
String[] rt = null;
try {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
if (line == null)
return null;
rt = line.split(" ");
} catch (Exception e) {
System.err.println(e);
}
return rt;
}
private boolean doCommond(String[] cmd) {
String op = cmd[0];
if (op.equalsIgnoreCase("q")) {
theClient.exitInstance();
} else if (op.equalsIgnoreCase("a")) { // an gang
return doCmdAnGang(cmd);
} else if (op.equalsIgnoreCase("c")) { // pass
return doCmdPass(cmd);
} else if (op.equalsIgnoreCase("d")) { // drop
return doCmdDrop(cmd);
} else if (op.equalsIgnoreCase("e")) { // eat
return doCmdEat(cmd);
} else if (op.equalsIgnoreCase("g")) { // gang
return doCmdGang(cmd);
} else if (op.equalsIgnoreCase("h")) { // hu
return doCmdHu(cmd);
} else if (op.equalsIgnoreCase("p")) { // peng
return doCmdPeng(cmd);
} else if (op.equalsIgnoreCase("l")) { // look
return doCmdLook(cmd);
}
return true;
}
private boolean doCmdLook(String[] cmd) {
StringBuffer sb = new StringBuffer();
String[] changfeng = { "东风", "南风", "西风", "北风" };
int bankNo = theMod.getBankerNo();
int lastPlayerNo = theMod.getLastPlayerNo();
int nLeftCard = theMod.countLeftCard();
MJCard ldCard = theMod.getLastDroppedCard();
sb.append("玩家:" + theClient.getPlayer());
sb.append(" " + changfeng[(bankNo + 4 - myNo) % 4] + "\n");
sb.append("剩余牌个数(" + nLeftCard + ")\n");
sb.append("\n");
sb.append(
ConsolePrinter.print(
theMod.getNextPlayerCardModule(theClient),
true));
if (ldCard != null && lastPlayerNo == (myNo + 1) % 4)
sb.append(" <\n");
else
sb.append("\n");
sb.append(
ConsolePrinter.print(
theMod.getOpsPlayerCardModule(theClient),
true));
if (ldCard != null && lastPlayerNo == (myNo + 2) % 4)
sb.append(" <\n");
else
sb.append("\n");
sb.append(
ConsolePrinter.print(
theMod.getPrevPlayerCardModule(theClient),
true));
if (ldCard != null && lastPlayerNo == (myNo + 3) % 4)
sb.append(" <\n");
else
sb.append("\n");
sb.append("\n");
sb.append(
ConsolePrinter.print(theMod.getMyCardModule(theClient), false));
if (ldCard != null && lastPlayerNo == myNo)
sb.append(" <\n");
else
sb.append("\n");
String str = ConsolePrinter.wrapText(sb.toString());
System.out.println(str);
// System.out.println(sb.toString());
return true;
}
private boolean doCmdDrop(String[] cmd) {
List allCards = theMod.getMyCardModule(theClient).getDroppableCards();
int no = readNumber(ConsolePrinter.printCardsWithNo(allCards), 0, allCards.size() - 1);
MJCard card = (MJCard) allCards.get(no);
theClient.dropACard(card);
System.out.println(card);
return true;
}
private boolean doCmdPass(String[] cmd) {
theClient.sendPassSignal();
return true;
}
private boolean doCmdEat(String[] cmd) {
MJCard card = theMod.getLastDroppedCard();
PlayerCardModule myCards = theMod.getMyCardModule(theClient);
MJCardCollection handCards = myCards.getHandCards();
Collection pairs = handCards.getEatablePairs(card);
if (pairs == null || pairs.size() == 0)
return false;
if (pairs.size() == 1) {
MJCard[] pair = (MJCard[]) pairs.iterator().next();
theClient.eatWithPair(card, pair);
return true;
}
int n =
readNumber(
ConsolePrinter.print(pairs, false),
0,
pairs.size() - 1);
int i = 0;
for (Iterator iter = pairs.iterator(); iter.hasNext(); i++) {
MJCard[] pair = (MJCard[]) iter.next();
if (i == n) {
theClient.eatWithPair(card, pair);
return true;
}
}
return false;
}
private boolean doCmdGang(String[] cmd) {
MJCard card = theMod.getLastDroppedCard();
theClient.gang(card);
return true;
}
private boolean doCmdAnGang(String[] cmd) {
PlayerCardModule myCards = theMod.getMyCardModule(theClient);
MJCardCollection handCards = myCards.getHandCards();
MJCard[] cards = handCards.getAnGangableCards();
int n = 0;
if (cards.length > 1)
readNumber(ConsolePrinter.print(cards, false), 0, cards.length-1);
theClient.anGang(cards[n]);
return true;
}
private boolean doCmdHu(String[] cmd) {
theClient.hu();
return true;
}
private boolean doCmdPeng(String[] cmd) {
MJCard card = theMod.getLastDroppedCard();
theClient.peng(card);
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -