代码实现功能:模拟斗地主发牌,将54张扑克牌随机的等数量的发给三个人,并留下三张底牌
(一)代码(用数组实现):
import java.util.Arrays;
import java.util.Random;
public class Puke {
// 做随机牌数组的index
public int[] index(){
int []a=new int[54];
int i=0,x=0;
while (i<54){
x=new Random().nextInt(54);
boolean isflag=true;
for (int j = 0; j < i; j++) {
if(x==a[j]){
isflag=false;
}
}
if(isflag) {
a[i] = x;
i++;
}
}
return a;
}
// 将所有牌写到一个数组里
public String[] value(){
String[]b=new String[54];
String [] c={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
String []d={"红桃 ","黑桃","方块","梅花"};
// b[0]="大王";
// b[1]="小王";
int j=0;
for (int k = 0; k <d.length ; k++) {
for (int i = 0; i <c.length ; i++) {
b[j]=d[k]+c[i];
j++;
}
}
b[j]="大王";
b[j+1]="小王";
return b;
}
// 洗牌,将有序的所有牌数组b变成无序的所有牌s,s=b[a[i]],a[i]是无序的0-53的index,即b数组的index无序遍历下标
public String[] shuffle(){
Puke p=new Puke();
int[]a=p.index();
String[]b=p.value();
String c[]=new String[54];
for (int i = 0; i <c.length ; i++) {
c[i]=b[a[i]];
}
return c;
}
// 发牌,将已经洗好的牌分别发给三个人,并留下三张底牌
public void deal() {
Puke p=new Puke();
String [] s=p.shuffle();
int count=0;
String a[];
String b[]={"张三","李四","王五","底牌"};
for (int i = 0; i < 4; i++) {
if(i<3){
a=new String[17];
for (int j = 0; j <a.length ; j++) {
a[j]=s[count];
count++;
}
}else {
a=new String[3];
for (int j = 0; j <a.length ; j++) {
a[j]=s[count];
count++;
}
}
System.out.println(b[i]+":"+Arrays.toString(a));
}
}
// 调用发牌方法,完成输出
public static void main(String[] args) {
Puke p=new Puke();
p.deal();
}
}
(二)代码(用列表实现):
import java.util.ArrayList;
import java.util.Random;
public class PukeList {
public String poker(int num ){
String str;
String[] kind={"红桃","黑桃","方块","梅花"};
String[] number={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
if(num/4<=12){
str=kind[num%4]+number[num/4];
}else {
if(num%4==0){
str="大王";
}else {
str="小王";
}
}
return str;
}
public void pokerList(){
PukeList p=new PukeList();
ArrayList list=new ArrayList();
for (int i = 0; i < 54; i++) {
list.add(p.poker(i));
}
int length = list.size();
int count=0;
for (int i = 0; i <length ; i++) {
int num=new Random().nextInt(list.size());
System.out.print(list.get(num)+"\t");
list.remove(num);
count++;
if(count%17==0){
System.out.println();
}
}
}
public static void main(String[] args) {
PukeList p=new PukeList();
p.pokerList();
}
}