注意排序的做法:使用的是规则表+选择排序的方法
package cn.itcast.Poker;
import java.util.ArrayList;
import java.util.Collections;
public class Poker {
/**
* @param args
*/
public static void main(String[] args) {
// 造牌
ArrayList<String> arrPoker = createPoker();
// 洗牌
Collections.shuffle(arrPoker);
// 发牌
ArrayList<String> liuBeiPoker = new ArrayList<>();
ArrayList<String> caoCaoPoker = new ArrayList<>();
ArrayList<String> sunQuanPoker = new ArrayList<>();
for (int i = 0; i < arrPoker.size() - 3; i++) {
if ((i + 1) % 3 == 1) {
liuBeiPoker.add(arrPoker.get(i));
} else if ((i + 1) % 3 == 2) {
caoCaoPoker.add(arrPoker.get(i));
} else {
sunQuanPoker.add(arrPoker.get(i));
}
}
// 排序--自己定义码表规则 查表法
System.out.println(sortPoker(liuBeiPoker));
System.out.println(sortPoker(caoCaoPoker));
System.out.println(sortPoker(sunQuanPoker));
// 显示底牌
for (int i = arrPoker.size()-3; i < arrPoker.size(); i++) {
System.out.print(arrPoker.get(i)+" ");
}
}
/**
* 造牌 参数:无参 返回值:是个ArrayList
*/
public static ArrayList<String> createPoker() {
ArrayList<String> arrPoker = new ArrayList<>();
String[] colors = { "♠", "♥", "♣", "♦" };
String[] numbers = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K" };
for (String color : colors) {
for (String number : numbers) {
arrPoker.add(color.concat(number));
}
}
arrPoker.add("大王");
arrPoker.add("小王");
return arrPoker;
}
/**
* 排序 参数:ArrayList 返回值:ArrayList
*/
public static ArrayList<String> sortPoker(ArrayList<String> arrPoker) {
// 按数字进行排序
String[] numbers = { "2", "A", "K", "Q", "J", "10", "9", "8", "7", "6",
"5", "4", "3" };
for (int i = 0; i < arrPoker.size(); i++) {
for (int j = i + 1; j < arrPoker.size(); j++) {
if (getIndex(numbers, arrPoker.get(i).substring(1)) > getIndex(
numbers, arrPoker.get(j).substring(1))) {
// 交换
String temp = arrPoker.get(i);
arrPoker.set(i, arrPoker.get(j));
arrPoker.set(j, temp);
}
}
}
// 按花色排序
String[] colors = { "♠", "♥", "♣", "♦" };
for (int i = 0; i < arrPoker.size(); i++) {
for (int j = i + 1; j < arrPoker.size(); j++) {
if (arrPoker.get(i).substring(1)
.equals(arrPoker.get(j).substring(1))) {
if (getIndex(colors, arrPoker.get(i).substring(0, 1)) > getIndex(
colors, arrPoker.get(j).substring(0, 1))) {
String temp = arrPoker.get(i);
arrPoker.set(i, arrPoker.get(j));
arrPoker.set(j, temp);
}
}
}
}
if("小王".equals(arrPoker.get(0))&&"大王".equals(arrPoker.get(1))){
arrPoker.set(0, "大王");
arrPoker.set(1, "小王");
}
return arrPoker;
}
/**
* 获得规则表中的索引值
*
* @param ruleArray
* @param s
* @return
*/
public static int getIndex(String[] ruleArray, String s) {
int index = -1;
for (int i = 0; i < ruleArray.length; i++) {
if (s.equals(ruleArray[i])) {
index = i;
}
}
return index;
}
}