/**
*这是一个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];
}
}
}
}
实现斗地主发牌(java)
最新推荐文章于 2024-07-06 11:28:20 发布