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.分组最后做
}
转载于:https://blog.51cto.com/13634837/2087986