多线程随机发牌
随机发牌!!!
import java.util.Scanner;
import java.util.Arrays;
import java.util.Random;
public class Main {
public static void main(String[] args) {
Poker res = new Poker();
Thread a = new Thread(res);
a.start();
}
}
class Poker implements Runnable {
People[] r;
int[] d;
String[] card;
int w;
public Poker() {
r = new People[] { new People("玩家1"), new People("玩家2"), new People("玩家3"), };
d = new int[54];
w = 0;
card = new String[54];
Random rec = new Random();
while (w < 54) {
int ji = 0;
int x = rec.nextInt(54);
for (int i = 0; i < w; i++) {
if (d[i] == x) {
ji++;
}
}
if (ji == 0) {
d[w] = x;
if (x + 1 <= 52) {
if (x % 4 == 0) {
card[w] = "♦";
} else if (x % 4 == 1) {
card[w] = "♣";
} else if (x % 4 == 2) {
card[w] = "♠";
} else if (x % 4 == 3) {
card[w] = "♥";
}
card[w] = card[w] + ((x / 4) + 1);
} else if (x + 1 == 53) {
card[w] = "小王";
} else if (x + 1 == 54) {
card[w] = "大王";
}
w++;
}
}
}
public String zh(int x) {
if (x + 1 <= 52) {
if (x % 4 == 0) {
return "♦" + ((x / 4) + 1);
} else if (x % 4 == 1) {
return "♣" + ((x / 4) + 1);
} else if (x % 4 == 2) {
return "♠" + ((x / 4) + 1);
} else if (x % 4 == 3) {
return "♥" + ((x / 4) + 1);
}
} else if (x + 1 == 53) {
return "小王";
} else if (x + 1 == 54) {
return "大王";
}
return null;
}
@Override
public void run() {
int i = 0;
r[0].f = true;
while (i < 54) {
int z = 0;
for (;;) {
if (r[z].f) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.print(r[z].name + "摸牌 " + card[i] + ",");
r[z].t[r[z].g] = d[i];
r[z].c[r[z].g] = card[i];
r[z].g = r[z].g + 1;
i++;
r[z].f = false;
if (i == 54) {
System.out.println("发牌结束");
break;
} else {
if (z + 1 == 3) {
System.out.println("下一个" + r[0].name);
r[0].f = true;
} else {
System.out.println("下一个" + r[z + 1].name);
r[z + 1].f = true;
}
}
break;
} else {
z++;
if (z == 3) {
z = 0;
}
}
}
}
this.String();
}
public void String() {
for (int i = 0; i < 3; i++) {
Arrays.sort(r[i].t);
System.out.print(r[i].name + " ");
for (int b = 0; b < 18; b++) {
System.out.print(this.zh(r[i].t[b]) + " ");
}
System.out.println();
}
}
private void sort() {
// TODO Auto-generated method stub
}
}
class People {
String name;
boolean f;
String[] c;
int g;
int[] t;
public People(String name) {
c = new String[18];
this.name = name;
f = false;
t = new int[18];
}
}