實現鬥地主發牌(java)
阿新 • • 發佈:2019-02-01
/** *這是一個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]; } } } }