1.Main
import java.util.List; public class Main { /** * 1.面向对象思维(一张扑克) * 抽取共性属性 * 花色 int * 牌值 int * 花色符号 String * 牌值符号 String * 抽取共性方法 * * 2.面向对象思维(一副扑克) * 抽取共性属性 * 花色数量 int * 牌的张数 int * 所有牌 List * 抽取共性方法 * 创建扑克 * 洗牌 * 抽取一张 * 分组 * 排序 * 1(多)--对--2(一) * */ public static void main(String[] args) { /** * 6.创建一副扑克对象 * */ Pukes p=new Pukes(); // 这是一副空盒 List<Apuke> list=p.createPuke(); //System.out.println(list); /** * 7.洗牌 * */ List<Apuke> list2=p.shufferPuke(); //System.out.println(list2); /** * 8.随机抽取一张牌 * */ Apuke a=p.getRandomPuke(); //System.out.println(a); /** * 10.洗牌后,重新排序牌 * */ List<Apuke> list3=p.sortPuke(); System.out.println(list3); } }
2.Apuke
//一张扑克类 public class Apuke implements Comparable<Apuke>{ /** * 1.定义属性 * */ private int color; // 花色值 private String colorText; // 花色符号 private int value; // 牌值 private String valueText; // 牌值符号 /** * 2.创建构造方法和setter、getter方法、toString方法 * */ public Apuke(int color, String colorText, int value, String valueText) { super(); this.color = color; this.colorText = colorText; this.value = value; this.valueText = valueText; } public int getColor() { return color; } public void setColor(int color) { this.color = color; } public String getColorText() { return colorText; } public void setColorText(String colorText) { this.colorText = colorText; } public int getValue() { return value; } public void setValue(int value) { this.value = value; } public String getValueText() { return valueText; } public void setValueText(String valueText) { this.valueText = valueText; } @Override public String toString() { return "Apuke [color=" + color + ", colorText=" + colorText + ", value=" + value + ", valueText=" + valueText + "]\n"; } /** * 9.单张扑克牌比较大小,需要实现Comparable排序接口的compareTo方法 * */ @Override public int compareTo(Apuke o) { int val=0; // 先根据花色比较 val=this.color-o.color; if(val==0) { // 在根据大小比较 val=this.value-o.value; } return val; } }
3.Pukes
import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; // 一副扑克 public class Pukes { /** * 3.定义属性 * */ private int pukesCount; // 扑克张数 private int colorCount; // 花色数量 private List<Apuke> aList; // 扑克牌的集合 /** * 12.创建一个大的组,放花色组的集合 * */ private List<ColorGroup> cgl; public List<ColorGroup> getCgl() { return cgl; } public void setCgl(List<ColorGroup> cgl) { this.cgl = cgl; } /** * 4.创建setter、getter方法、toString方法 * */ public int getPukesCount() { return pukesCount; } public void setPukesCount(int pukesCount) { this.pukesCount = pukesCount; } public int getColorCount() { return colorCount; } public void setColorCount(int colorCount) { this.colorCount = colorCount; } public List<Apuke> getaList() { return aList; } public void setaList(List<Apuke> aList) { this.aList = aList; } @Override public String toString() { return "Pukes [pukesCount=" + pukesCount + ", colorCount=" + colorCount + ", aList=" + aList + "]"; } /** * 5.先把业务方法定义出来,可以先搭个架子 * */ // 5.1.创建一副扑克牌的方法 public List<Apuke> createPuke(){ pukesCount=54; // 初始化扑克牌数量 colorCount=5 ; // 初始化花色数量(包含王) aList=new ArrayList<Apuke>(); // 初始化扑克牌集合 /*王 ♡ ■ ♠ ▲ 1 2 3 4 5 A 2 3 4 5 6 7 8 9 10 J Q K 小王 大王 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15*/ //先创建4种花色牌 for(int i=2;i<=5;i++) { for(int j=1;j<=13;j++) { String colorText=null; // 定义花色符号 String valueText=null; // 定义牌值符号 // 给花色符号赋值 switch (i) { case 2:colorText="♡";break; case 3:colorText="■";break; case 4:colorText="♠";break; case 5:colorText="▲";break; } // 给牌值符号赋值 switch(j) { case 1 : valueText="A"; break; case 2 : valueText="2"; break; case 3 : valueText="3"; break; case 4 : valueText="4"; break; case 5 : valueText="5"; break; case 6 : valueText="6"; break; case 7 : valueText="7"; break; case 8 : valueText="8"; break; case 9 : valueText="9"; break; case 10 : valueText="10";break; case 11 : valueText="J"; break; case 12 : valueText="Q"; break; case 13 : valueText="K"; break; } // 创建一张扑克对象,让后扔到扑克盒里 Apuke ap=new Apuke(i, colorText, j, valueText); aList.add(ap); } } //创建小王、大王扑克牌 Apuke ap_xiaowang=new Apuke(1, "★", 14, "♂"); aList.add(ap_xiaowang); Apuke ap_dawang=new Apuke(1, "★", 15, "♀"); aList.add(ap_dawang); return aList; } // 5.2.洗牌的方法 public List<Apuke> shufferPuke(){ Collections.shuffle(aList); return aList; } // 5.3.随机抽取一张扑克 public Apuke getRandomPuke() { Random r=new Random(); int index=r.nextInt(this.pukesCount); System.out.println(index); return aList.get(index); } // 5.4.排序所有扑克牌(先花色,在大小),所以单张扑克牌类要实现Comparable接口 public List<Apuke> sortPuke(){ Collections.sort(aList); return aList; } // 5.5.分组最后做 }