洗牌并按规则分发给四玩家(非图形),洗牌分发,package Chem
分享于 点击 5015 次 点评:40
洗牌并按规则分发给四玩家(非图形),洗牌分发,package Chem
package Cheman; public class PlayPai{ public static void main (String[] args){ new Poker(); } } class Poker{ public int pai[][]=new int[13][4];//创建一个二维数组,第一维存放点数第二维存放花色 public Poker(){ //构造方法 this.JianPai(); this.XiPai(); this.FaPai(); } public void JianPai(){ //建牌,使用二重循环从1-52对二维数组共52个变量赋值 int count=1; for(int i=0;i<=12;i++){ for(int j=0;j<=3;j++){ pai[i][j]=count; count++; } } System.out.println("建牌完毕……"); } public void XiPai(){ //每次随机出2张牌 pai[row1][col1],pai[row2][col2],如果不相等则互换,循环200次 double a,b; int row1,col1,row2,col2,i; int zhongjianshu; for(i=1;i<=200;i++){ a=Math.random()*13; row1=(int)(a); //row1,row2范围从0-12 b=Math.random()*4; col1=(int)(b); //col1,col2范围从0-3 a=Math.random()*13; row2=(int)(a); b=Math.random()*4; col2=(int)(b); if(row1!=row2||col1!=col2){ //两变量互换 zhongjianshu=pai[row1][col1]; pai[row1][col1]=pai[row2][col2]; pai[row2][col2]=zhongjianshu; } } System.out.println("洗牌完毕……"); } public void FaPai(){ //发牌:1.对各玩家手中的牌进行大小排序 2.将排序好的牌发出并转换成中文名 int wanjia[][]=new int[4][13]; //创建一个4行13列二维数组,每一行存放每个玩家的13张牌,并按大小排序 int i,j,z,min; for(i=0;i<4;i++){//原来的二维数组pai[][]赋值给wanjia[][] for(j=0;j<13;j++){ wanjia[i][j]=pai[j][i]; } } //用选择排序法对各个玩家的牌进行升序排序 for(i=0;i<4;i++){ for(j=0;j<13;j++){ min=wanjia[i][j]; for(z=j+1;z<13;z++){ if(wanjia[i][z]<min){ min=wanjia[i][z]; wanjia[i][z]=wanjia[i][j]; wanjia[i][j]=min; } } } } //开始发牌并转换成中文名 int yushu;//余数 int shang;//商 int save[]=new int[8];//一维数组,存放A,2,使其能在3-K牌输出后再输出 int count;//存放一维数组save变量数 for(i=0;i<4;i++){ count=0; System.out.print("玩家"+(i+1)+":"); for(j=0;j<13;j++){ yushu=(wanjia[i][j])%4; shang=((wanjia[i][j]-1)/4); if(shang==0||shang==1){ //如果要输出的牌色为A或2,则将其存入save数组中,待3-K输出后再输出 save[count]=wanjia[i][j]; count++; continue; } switch(yushu){ //检验花色 case 0:System.out.print("方块");break; case 1:System.out.print("梅花");break; case 2:System.out.print("红桃");break; case 3:System.out.print("黑桃");break; } switch(shang){ //检验点数 case 0:System.out.print("A ");break; case 10:System.out.print("J ");break; case 11:System.out.print("Q ");break; case 12:System.out.print("K ");break; default:System.out.print((shang+1)+" "); } } //输出save数组,把A和2牌输出 for(j=0;j<count;j++){ yushu=(save[j])%4; shang=((save[j]-1)/4); switch(yushu){ case 0:System.out.print("方块");break; case 1:System.out.print("梅花");break; case 2:System.out.print("红桃");break; case 3:System.out.print("黑桃");break; } if(shang==0) System.out.print("A "); else System.out.print((shang+1)+" "); } System.out.println(); } } }//该片段来自于http://byrx.net
用户点评