📄 consoleprinter.java
字号:
package com.newpalm.game.mj.client;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import com.newpalm.game.mj.share.MJCard;
import com.newpalm.game.mj.share.PlayerCardModule;
/**
* @author ama
*/
public class ConsolePrinter {
private static int cardWidth;
private static String blank;
static {
MJCard card = new MJCard(0);
cardWidth = getStringPrintLength(card.toString());
blank = genRepeatString(" ", cardWidth+2);
}
public static String print(PlayerCardModule pc, boolean hidden) {
String str;
str = print(pc.getSortedHandCards(), hidden);
if (pc.getNewCard() != null) {
str += blank + print(pc.getNewCard(), hidden);
}
if (pc.getTransparentCaptivePairs().size()>0) {
str += blank;
str += print(pc.getTransparentCaptivePairs(), false);
}
if (pc.getOpacityCaptivePairs().size()>0) {
str += " " + print(pc.getOpacityCaptivePairs(), hidden);
}
if (pc.getDroppedCards().size() == 0) {
str += "\n";
return str;
}
List list = null;
if (pc.getDroppedCards() instanceof List)
list = (List)pc.getDroppedCards();
else
list = new Vector(pc.getDroppedCards());
int wrapWidth = 9;
for (int i = 0; i < list.size(); i++) {
MJCard card = (MJCard)list.get(i);
if (i%wrapWidth==0 && i != list.size())
str += "\n";
str += print(card, false) + " ";
}
// str += "\n";
return str;
}
//
public static String print(MJCard card, boolean hidden) {
if (hidden)
return genRepeatString("-", cardWidth);
else
return card.toString();
}
public static String print(MJCard[] pair, boolean hidden) {
String str = "";
for (int i = 0; i < pair.length; i++) {
str += print(pair[i], hidden);
if (i < pair.length - 1)
str += " ";
}
return str;
}
public static String print(Collection cards, boolean hidden) {
String str = "";
for (Iterator iter = cards.iterator(); iter.hasNext();) {
Object item = iter.next();
if (item instanceof MJCard) {
MJCard card = (MJCard)item;
str += print(card, hidden);
if (iter.hasNext())
str += " ";
} else if (item instanceof MJCard[]) {
MJCard[] pair = (MJCard[])item;
str += print(pair, hidden);
if (iter.hasNext())
str += blank;
}
}
return str;
}
public static String printCardsWithNo(Collection cards) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < cards.size() && i < 13; i++) {
if (i%3==0)
sb.append(i + genRepeatString(" ", cardWidth));
else
sb.append(genRepeatString(" ", cardWidth+1));
}
sb.append("\n" + print(cards, false));
return sb.toString();
}
public static String wrapText(String str) {
String ctop = "-", cleft = "|", cright = "|", clt = "+";
String top;
String[] lines = str.split("\n");
int width = 0;
for (int i = 0; i < lines.length; i++) {
String string = lines[i];
width = Math.max(width, getStringPrintLength(string));
}
width += 2;
top = genRepeatString(ctop, width);
StringBuffer sb = new StringBuffer();
sb.append(clt + ctop + top + ctop + clt + "\n");
for (int i = 0; i < lines.length; i++) {
sb.append(
cleft
+ " "
+ lines[i]
+ genRepeatString(" ", width - getStringPrintLength(lines[i]))
+ " "
+ cright
+ "\n");
}
sb.append(clt + ctop + top + ctop + clt + "\n");
return sb.toString();
}
private static int getStringPrintLength(String str){
int n = 0;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if ((int)c > Byte.MAX_VALUE) {
n = n + 2;
} else
n++;
}
return n;
}
private static String genRepeatString(String c, int times) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < times; i++) {
sb.append(c);
}
return sb.toString();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -