发牌、看牌
需求: 斗地主中实现发牌和看牌
public class PokerDemo {
public static void main(String[] args) {
//创建一个空牌盒,ArrayList实现
ArrayList<String> array = new ArrayList<String>();
//装牌(A到K四种花色,大王小王)
//定义四种花色
String[] colors = {"♦", "♣", "♥", "♠"};
//定义十三张点
String[] numbers = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "k", "A"};
for (String color : colors){
for (String number : numbers){
array.add(color + number);
}
}
array.add("大王");
array.add("小王");
// System.out.println(array);
//洗牌
Collections.shuffle(array);
//发牌
//定义三个对象存放三个人的牌,以及三张底牌
ArrayList<String> benben = new ArrayList<String>();
ArrayList<String> doudou = new ArrayList<String>();
ArrayList<String> qiqi = new ArrayList<String>();
ArrayList<String> dipai = new ArrayList<String>();
for (int i = 0; i < array.size(); i++){
String poker = array.get(i);
if (i >= array.size() - 3){
dipai.add(poker);
} else if (i % 3 == 0){
benben.add(poker);
}else if (i % 3 == 1){
doudou.add(poker);
}else if (i % 3 == 2){
qiqi.add(poker);
}
}
// System.out.print(dipai);
//看牌
lookPoker("笨笨", benben);
lookPoker("兜兜", doudou);
lookPoker("琪琪", qiqi);
lookPoker("底牌", dipai);
}
public static void lookPoker(String name, ArrayList poker){
System.out.print(name + "的牌:");
for (int i = 0; i < poker.size(); i++){
System.out.print(poker.get(i) + " ");
}
System.out.println();
}
}
//显示结果
笨笨的牌:♣A ♥10 ♥J ♥8 ♦9 大王 ♠4 ♥4 ♦8 ♠6 ♠3 ♣8 ♦k 小王 ♣6 ♥2 ♥5
兜兜的牌:♣9 ♣Q ♠9 ♦7 ♥7 ♥9 ♣J ♥3 ♠8 ♦Q ♣7 ♠A ♦5 ♦A ♠Q ♦10 ♥A
琪琪的牌:♣10 ♠10 ♦4 ♣4 ♠J ♦2 ♣k ♠k ♣5 ♦J ♠2 ♣3 ♣2 ♥k ♥Q ♦6 ♥6
底牌的牌:♠7 ♦3 ♠5
模拟斗地主
需求: 通过程序实现模拟斗地主过长中的发牌、看牌、要求进行排序
public class pokerTest {
public static void main(String[] args) {
//创建HashMap
HashMap<Integer, String> hm = new HashMap<Integer, String>();
//创建ArrayList
ArrayList<Integer> al = new ArrayList<Integer>();
//创建花色和点数数组
String[] colors = {"♦", "♣", "♠", "♥"};
String[] numbers = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
//往HashMap中存储编号和牌,往ArrayList中存储编号
int index = 0;
for (String number : numbers){
for (String color : colors){
hm.put(index, color + number);
al.add(index);
index++;
}
}
hm.put(index,"小王");
al.add(index);
index++;
hm.put(index,"大王");
al.add(index);
//洗牌
Collections.shuffle(al);
//创建三个TreeSet对象,发牌
TreeSet<Integer> xiaoming = new TreeSet<Integer>();
TreeSet<Integer> xiaohong = new TreeSet<Integer>();
TreeSet<Integer> xiaoli = new TreeSet<Integer>();
TreeSet<Integer> dipai = new TreeSet<Integer>();
for (int i = 0; i < al.size(); i++){
int x = al.get(i);
if (i >= al.size() - 3){
dipai.add(x);
}else if (i % 3 == 0){
xiaoming.add(x);
}else if (i % 3 == 1){
xiaohong.add(x);
}else if (i % 3 == 2){
xiaoli.add(x);
}
}
//看牌
lp("小明", xiaoming, hm);
lp("小红", xiaoming, hm);
lp("小李", xiaoli, hm);
lp("底牌", dipai, hm);
}
//看牌的方法
public static void lp(String name, TreeSet<Integer> treeSet, HashMap<Integer, String> hm){
System.out.print(name + "的牌:");
for (Integer ts : treeSet){
System.out.print(hm.get(ts) + " ");
}
System.out.println();
}
}
//显示结果
小明的牌:♣3 ♠4 ♣5 ♠5 ♥6 ♠6 ♦9 ♥9 ♦J ♦Q ♠Q ♦K ♣K ♠A ♣2 ♥2 大王
小红的牌:♣3 ♠4 ♣5 ♠5 ♥6 ♠6 ♦9 ♥9 ♦J ♦Q ♠Q ♦K ♣K ♠A ♣2 ♥2 大王
小李的牌:♦4 ♥4 ♦6 ♣6 ♦7 ♥7 ♠7 ♦8 ♥8 ♠8 ♠9 ♥Q ♠K ♦A ♣A ♥A ♦2
底牌的牌:♣8 ♥J ♥K