牌类游戏的发牌 |
| 作者:不详 来源:本站整理 发布时间:2005-11-24 17:31:46 |
|
这是以前写的一个斗地主游戏的发牌模型,补上一些注释,希望对大家有帮助。调试通过。 /*大宝-斗地主 * 程序流程: * 1、首先定义需要使用的数组、变量等 * 2、用Random.nextInt方法生成随机数,并通过循环判断语句将说得的值进行比较,不重复的记入pai[] * 3、进行分牌,分配到play_a、play_b、play_c三位玩家手中 * * 关于牌的大小安排 3 4 5 6 7 8 9 10 J Q K A 2 小王 大王 黑 4 8 12 16 20 24 28 32 36 40 44 48 52 53 54 红 3 7 11 15 19 23 27 31 35 39 43 47 51 梅 2 6 10 14 18 22 26 30 34 38 42 46 50 方 1 5 9 13 17 21 25 29 33 37 41 45 49 * * 分配原则为:因为已经随机抽取牌,所以直接将pai[]中的 * 0-16分给play_a * 17-33分给play_b * 34-50分给play_c * 51-53为底牌 * * 4、对每位玩家手上的牌进行大小排序,使用Arrays.sort()可以很方便的对数组进行排序 * 5、进行花色定义,这是一个复杂的手工过程,但是这样可以方便以后操作,然后将花色牌打印出来 * 6、玩家a当地主,将底牌给玩家a,然后将地主的牌打印 * 待续。。。 * * * */ import java.util.Random; import java.util.Arrays; public class ddz { public static void main(String args[]){ int pai[] = new int[54]; //用于保存取出来的54个随机数 int play_a[] = new int[17]; int play_b[] = new int[17]; int play_c[] = new int[17]; //存放a,b,c三个玩家的牌 int k=0,m,n=0,paishu=0,qu = 0; // paishu用来表示pai[]数组里面的数的位置 //qu表示随机数每次取出来的数值,k,m,n表示自由变量,根据需要设置的; Random rnd; rnd=new Random(System.currentTimeMillis()); //随机数xuan //随机生成54张不重复的牌 while(paishu<54) //while语句的作用,机选出54个数据,按选出来的顺序依次放在pai[]中 { qu = Math.abs(rnd.nextInt())%54+1; for(m = 0; m<=paishu ;m++) //判断机选出来的数值qu是否已经在pai[]中 { if(pai[m]==qu) { n=0; break; } else n= 1; } if(n==1) //如果机选出来的数值不在pai[]中,则把qu的值加入到pai[]里面相应的位置 { pai[paishu]=qu; paishu++; } } //第二部分,将初始牌分配给每个人 /*关于牌的大小安排 3 4 5 6 7 8 9 10 J Q K A 2 小王 大王 黑 4 8 12 16 20 24 28 32 36 40 44 48 52 53 54 红 3 7 11 15 19 23 27 31 35 39 43 47 51 梅 2 6 10 14 18 22 26 30 34 38 42 46 50 方 1 5 9 13 17 21 25 29 33 37 41 45 49 */ //把随机牌分给3位玩家 for(k=0,m=0;m<17;k++,m++) { play_a[k] = pai[m]; } for(k=0,m=17;m<34;k++,m++) { play_b[k] = pai[m]; } for(k=0,m=34;m<51;k++,m++) { play_c[k] = pai[m]; } //直接将3人的牌排序 Arrays.sort(play_a); Arrays.sort(play_b); Arrays.sort(play_c); //将牌和花色定义 String flowers[] = new String[55]; flowers[1]= "方"+"3"; flowers[2]= "梅"+"3"; flowers[3]= "红"+"3"; flowers[4]= "黑"+"3"; flowers[5]= "方"+"4"; flowers[6]= "梅"+"4"; flowers[7]= "红"+"4"; flowers[8]= "黑"+"4"; flowers[9]= "方"+"5"; flowers[10]= "梅"+"5"; flowers[11]= "红"+"5"; flowers[12]= "黑"+"5"; flowers[13]= "方"+"6"; flowers[14]= "梅"+"6"; flowers[15]= "红"+"6"; flowers[16]= "黑"+"6"; flowers[17]= "方"+"7"; flowers[18]= "梅"+"7"; flowers[19]= "红"+"7"; flowers[20]= "黑"+"7"; flowers[21]= "方"+"8"; flowers[22]= "梅"+"8"; flowers[23]= "红"+"8"; flowers[24]= "黑"+"8"; flowers[25]= "方"+"9"; flowers[26]= "梅"+"9"; flowers[27]= "红"+"9"; flowers[28]= "黑"+"9"; flowers[29]= "方"+"10"; flowers[30]= "梅"+"10"; flowers[31]= "红"+"10"; flowers[32]= "黑"+"10"; flowers[33]= "方"+"J"; flowers[34]= "梅"+"J"; flowers[35]= "红"+"J"; flowers[36]= "黑"+"J"; flowers[37]= "方"+"Q"; flowers[38]= "梅"+"Q"; flowers[39]= "红"+"Q"; flowers[40]= "黑"+"Q"; flowers[41]= "方"+"K"; flowers[42]= "梅"+"K"; flowers[43]= "红"+"K"; flowers[44]= "黑"+"K"; flowers[45]= "方"+"A"; flowers[46]= "梅"+"A"; flowers[47]= "红"+"A"; flowers[48]= "黑"+"A"; flowers[49]= "方"+"2"; flowers[50]= "梅"+"2"; flowers[51]= "红"+"2"; flowers[52]= "黑"+"2"; flowers[53]= "小王"; flowers[54]= "大王"; flowers[0]= "???"; //将原来的数字牌换成花色牌 String[] play_apai= new String[17]; String[] play_bpai= new String[17]; String[] play_cpai= new String[17]; for(k=0;k<17;k++){ play_apai[k]=flowers[play_a[k]]; play_bpai[k]=flowers[play_b[k]]; play_cpai[k]=flowers[play_c[k]]; } //将花色牌打印出来 System.out.print(" \n =打印出已经排序且转换牌面的牌="); System.out.print(" \n 玩家a的牌: "); for(k=0;k<17;k++) System.out.print( play_apai[k]+" " ); System.out.print(" \n 玩家b的牌: "); for(k=0;k<17;k++) System.out.print( play_bpai[k]+" " ); System.out.print(" \n 玩家c的牌: "); for(k=0;k<17;k++) System.out.print( play_cpai[k]+" " |
| [] [返回上一页] [打 印] |
|
文章评论 |
