創建撲克測試(二)
阿新 • • 發佈:2018-03-17
java Collections ArrayList 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.分組最後做 }
創建撲克測試(二)