这段代码的主要实现功能扑克牌的洗牌和发牌功能,一副牌,红桃,黑桃,梅花,方片,A~K,不含大小王。
构造一个class。
首先是声明花色:
private String[] sign={"方片","红桃","黑桃","梅花"};//扑克的四种花色
然后是洗牌功能,意味花色与A~K结合构造成顺序的52张扑克牌,构造一个ArrayList对象存储扑克牌的值。
private static ArrayList<String> List;
接下来再类中实现此方法,构造出一副扑克牌。
public void Init(){ List = new ArrayList(); for(String str:sign){ for(int i = 1;i<=13;i++){ String extra_sign = ""; //将数字与扑克匹配 if(i == 1){ extra_sign = "A"; List.add(str+extra_sign); }else if(i == 11){ extra_sign = "J"; List.add(str+extra_sign); }else if(i == 12){ extra_sign = "Q"; List.add(str+extra_sign); }else if(i == 13){ extra_sign = "K"; List.add(str+extra_sign); }else{ List.add(str+i); } } } }
此时衣服扑克牌已经构造完成,接下来通过方法实现扑克牌的乱序发放到四人的手中。
public void Hands(){ int i = 0,j=0; Collections.shuffle(List);//Collection类中的shuffle方法将<List>乱序排列 for(String str:List){ if(j == 4) break; if(i == 0){ hands[j] = str+" "; i++; } //这里不使用for(i<13){ // hands[j] = str+" "; // i++; //}是因为第一个下标为0的元素为null,所以多了一步判断 if(0<i && i<13){ hands[j] +=str+" " ; i++; }else{ i = 0; j++; } } }
洗牌和分牌步骤已经完成,下面贴上完整代码:
package com; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; public class Pokes { private String[] sign={"方片","红桃","黑桃","梅花"}; private static String[] hands = new String[4]; private static ArrayList<String> List; Pokes(){ } public void Init(){ List = new ArrayList(); for(String str:sign){ for(int i = 1;i<=13;i++){ String extra_sign = ""; if(i == 1){ extra_sign = "A"; List.add(str+extra_sign); }else if(i == 11){ extra_sign = "J"; List.add(str+extra_sign); }else if(i == 12){ extra_sign = "Q"; List.add(str+extra_sign); }else if(i == 13){ extra_sign = "K"; List.add(str+extra_sign); }else{ List.add(str+i); } } } } public void Hands(){ int i = 0,j=0; Collections.shuffle(List); for(String str:List){ if(j == 4) break; if(i == 0){ hands[j] = str+" "; i++; } if(0<i && i<13){ hands[j] +=str+" " ; i++; }else{ i = 0; j++; } } } public static void main(String[] args) { Pokes p = new Pokes(); p.Init(); p.Hands(); System.out.println(hands[0]); System.out.println(hands[1]); System.out.println(hands[2]); System.out.println(hands[3]); } }
通过debug结果如下:
第一次输出结果: 黑桃2 黑桃2 红桃A 红桃8 黑桃9 黑桃7 梅花4 梅花8 黑桃5 梅花3 红桃10 方片Q 方片K 黑桃6 黑桃6 方片8 红桃4 红桃7 黑桃3 梅花K 红桃J 黑桃J 梅花2 梅花10 红桃Q 方片9 方片A 方片A 梅花Q 黑桃8 梅花J 红桃3 方片3 红桃6 红桃2 方片7 梅花9 红桃5 梅花5 方片6 方片6 梅花A 红桃K 黑桃K 方片10 黑桃A 梅花7 方片J 梅花6 方片5 黑桃10 红桃9 第二次输出结果: 黑桃10 黑桃10 红桃5 黑桃7 方片3 方片Q 红桃8 方片6 梅花5 方片9 方片2 红桃Q 红桃9 黑桃5 黑桃5 黑桃2 红桃2 黑桃K 梅花8 梅花2 黑桃9 红桃7 黑桃8 红桃6 梅花9 黑桃6 红桃10 红桃10 梅花3 黑桃A 梅花10 方片7 方片10 黑桃4 黑桃Q 梅花7 红桃K 黑桃3 红桃3 梅花6 梅花6 梅花A 梅花K 红桃A 梅花J 方片8 红桃J 黑桃J 方片4 方片A 红桃4 方片5
简单的Java扑克牌程序,初始化构造一副扑克牌,利用Collection.shuffle(<List>)将List中的元素打乱顺序,依次分配给四个String[]。
来源:https://www.cnblogs.com/xiangxi/p/4685775.html