//Fight against landlords
package palycard.falandord;
public class PlayCard {
// 牌类
private final String Card[] = { "红桃3", "黑桃3", "梅花3", "方块3", "红桃4", "黑桃4",
"梅花4", "方块4", "红桃5", "黑桃5", "梅花5", "方块5", "红桃6", "黑桃6", "梅花6",
"方块6", "红桃7", "黑桃7", "梅花7", "方块7", "红桃8", "黑桃8", "梅花8", "方块8",
"红桃9", "黑桃9", "梅花9", "方块9", "红桃10", "黑桃10", "梅花10", "方块10", "红桃J",
"黑桃J", "梅花J", "方块J", "红桃Q", "黑桃Q", "梅花Q", "方块Q", "红桃K", "黑桃K",
"梅花K", "方块K", "红桃A", "黑桃A", "梅花A", "方块A", "红桃2", "黑桃2", "梅花2",
"方块2", "小王", "大王" };
public String U1[] = new String[18];
public String U2[] = new String[18];
public String U3[] = new String[18];
// 将数组中null值往后放,前面只有一个null的时候方法成立
private void zeroNull(String X[]) {
for (int i = 0; i < X.length - 1; i++) {
if (X[i] == null) {
X[i] = X[i + 1];
X[i + 1] = null;
}
}
}
//
private int rdmIndex(int i) {
int a = i - 1;
a = (int) (Math.random() * i);
return a;
}
// 平均发牌给三个用户
private PlayCard allotCard(String[] X) {
PlayCard pc = new PlayCard();
String[] N = X.clone();
int I = N.length;
int index = 0;
for (int i = 0; i < pc.U1.length; i++) {
index = rdmIndex(I);
pc.U1[i] = N[index];
N[index] = null;
zeroNull(N);
I--;
index = rdmIndex(I);
pc.U2[i] = N[index];
N[index] = null;
zeroNull(N);
I--;
index = rdmIndex(I);
pc.U3[i] = N[index];
N[index] = null;
zeroNull(N);
I--;
}
washCard(pc.U1);
washCard(pc.U2);
washCard(pc.U3);
return pc;
}
// 显示
private void show(String[] X) {
System.out.println();
for (int i = 0; i < X.length; i++) {
System.out.print(i + "\t");
}
System.out.println();
for (String string : X) {
System.out.print(string + "\t");
}
System.out.println();
}
// 显示牌
private PlayCard showCard(String[] X) {
PlayCard pc = allotCard(X);
System.out.println("\n玩家一:");
show(pc.U1);
System.out.println("\n玩家二:");
show(pc.U2);
System.out.println("\n玩家三:");
show(pc.U3);
return pc;
}
// 返回卡牌的排位
private int indexArr(String[] X, String x) {
int in = -1;
for (int i = 0; i < X.length; i++) {
if (x.equals(X[i])) {
in = i;
break;
}
}
return in;
}
// 把每个人手里的牌按照顺序排列
private void washCard(String[] X) {
PlayCard c = new PlayCard();
for (int j = 0; j < X.length + 1; j++) {
for (int i = 0; i < X.length - 1; i++) {
int in1 = indexArr(c.Card, X[i]);
int in2 = indexArr(c.Card, X[i + 1]);
if (in1 > in2) {
String ex = X[i];
X[i] = X[i + 1];
X[i + 1] = ex;
}
}
}
}
// 数组里面每一个字符串的最后一位
private String[] endArray(String[] X) {
String[] x = new String[X.length];
for (int i = 0; i < x.length; i++) {
x[i] = X[i].charAt(X[i].length() - 1) + "";
}
return x;
}
//
private void countSame(String[] X) {
int count = 1;
String mid = X[0];
for (int i = 1; i < X.length; i++) {
if (mid.equals(X[i])) {
count++;
} else if (count > 1) {
System.out.println(count + "个" + X[i - 1]);
mid = X[i];
count = 1;
}
}
/*
* for (int i = 0; i < X.length - 1; i++) { if (X[i].equals(X[i + 1])) {
* count++; } if ((!X[i].equals(X[i + 1]) || i == X.length - 2) && count
* >= 2) { if (X[i - 1].equals("0")) { System.out.println(count + "个1" +
* X[i - 1]); count = 1; } else if (i != X.length - 2) {
* System.out.println(count + "个" + X[i - 1]); count = 1; } else {
* System.out.println(count + "个" + X[i + 1]); count = 1; } } }
*/
}
//
public void analyze(String[] X) {
// 最大牌
System.out.println("最大牌:\t" + X[X.length - 1]);
// 最小牌
System.out.println("最小牌:\t" + X[0]);
countSame(endArray(X));
}
public void analyzeAll(PlayCard pc) {
System.out.println("\n\n玩家一:");
analyze(pc.U1);
System.out.println("玩家二:");
analyze(pc.U2);
System.out.println("玩家三:");
analyze(pc.U3);
}
//
public static void main(String[] args) {
PlayCard pc = new PlayCard();
pc = pc.showCard(pc.Card);
pc.analyzeAll(pc);
}
}
发牌老方法记录
最新推荐文章于 2022-12-26 18:37:39 发布