您的位置:首页 > 编程语言 > Java开发

实现斗地主发牌(java)

2013-07-15 18:50 288 查看
/**
*这是一个java实现的斗地主,发牌结果的程序,实现3个人十三张牌,然后底牌3张。
*/
import java.util.Arrays;
public class pokerDemo{
public static void main(String[] args) {

/*生成一副牌的数字,简称牌库*/
int[]pkCode=new int[54];

for(int i=0;i<54;i++){
pkCode[i]=i;
}

/*花色*/
String[]color={"方","梅","红","黑"};

/*数字*/
String[]num={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};

/*生成数组实现空的54个位置,存放随机洗牌后的牌,简称牌位*/
int[]pk=new int[54];

for(int i=0;i<pk.length;i++){

/*随机生成数字*/
int index=(int)(Math.random()*(pk.length-i));

/*将生成的下标对应的牌存入54个空牌位。然后将原来牌库中拿到的牌移除,并重新洗牌*/
pk[i]=pkCode[index];
remove(pkCode,index);
}

/*生成三个用户以及底牌三张*/
int[]pk1=new int[17];
int[]pk2=new int[17];
int[]pk3=new int[17];
int[]dz=new int[3];

/*将得到的牌拷贝倒数组当中 ,用于排列*/
System.arraycopy(pk, 0, pk1, 0, 17);
System.arraycopy(pk, 17, pk2, 0, 17);
System.arraycopy(pk, 34, pk3, 0, 17);
System.arraycopy(pk, 51, dz, 0,3);

sort(pk1);
sort(pk2);
sort(pk3);
sort(dz);

/*声明最后存放牌结果的数组*/
String []pk1Char = new String[17];
String []pk2Char = new String[17];
String []pk3Char = new String[17];
String []dzChar = new String[3];

/*调用花色生成方法,并复制结果到最后的结果String 数组当中*/
copy(pk1,pk1Char,color,num);
copy(pk2,pk2Char,color,num);
copy(pk3,pk3Char,color,num);
copy(dz,dzChar,color,num);

/*打印输出结果*/
System.out.println(Arrays.toString(pk1Char));
System.out.println(Arrays.toString(pk2Char));
System.out.println(Arrays.toString(pk3Char));
System.out.println(Arrays.toString(dzChar));
}

/*排序*/
public static void sort(int[]a){
for(int i=1;i<a.length;i++){
for(int j=0;j<i;j++){
if(a[j]<a[i]){
int temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
}
/*移除,从牌库中移除随机生成后牌*/
public static void remove(int[]a,int index){
for(int i=index;i<a.length-1;i++){
a[i]=a[i+1];
}
}

/*生成花色,复制到最后的发牌结果中*/
public static void copy(int[]a,String[]d
,String[]color,String[]num){
for(int i=0;i<a.length;i++){
int index=a[i];

/*53张为小王*/
if(index==52)d[i]="小王";

/*54张为大王*/
else if(index==53)d[i]="大王";

else{
/*花色根据下标对4取余的结果来得到四种花色中的随机值*/
d[i]=color[index%4]+num[index/4];
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: