Files
javaSE-0113/javaSE-day03/src/com/inmind/comapre05/Test16.java

103 lines
3.4 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.inmind.comapre05;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/*
按照斗地主的规则,完成洗牌发牌的动作。
具体规则:
使用54张牌打乱顺序,三个玩家参与游戏三人交替摸牌每人17张牌最后三张留作底牌。
分析:
1.准备54张牌(花色+数字)
2.洗牌(打乱顺序)
3.创建3个集合对象保存每个玩家的牌,创建1个集合保存底牌
4.打印集合的内容
注意:最后打印牌时,要有排序的效果
*/
public class Test16 {
public static void main(String[] args) {
//1.准备54张牌(花色+数字)
String[] colors = {"", "", "", ""};
String[] nums = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
int index = 0;
//创建一个集合保存牌
ArrayList<Poker> pokers = new ArrayList<>();
for (String num : nums) {
for (String color : colors) {
String content = color + num;
//将扑克牌,由小到大组合好,并设置对应的大小标记,用于排序
pokers.add(new Poker(content,index++));
}
}
pokers.add(new Poker("小王",index++));
pokers.add(new Poker("大王",index++));
System.out.println(pokers);
//2.洗牌(打乱顺序)
Collections.shuffle(pokers);
System.out.println("打乱之后:"+pokers);
//3.创建3个集合对象保存每个玩家的牌,创建1个集合保存底牌
ArrayList<Poker> player1 = new ArrayList<>();
ArrayList<Poker> player2 = new ArrayList<>();
ArrayList<Poker> player3 = new ArrayList<>();
ArrayList<Poker> dipai = new ArrayList<>();
/*
按顺序,轮着抓
玩家1 0 3 6 index%3 == 0
玩家2 1 4 7 index%3 == 1
玩家3 2 5 8 index%3 == 2
最后三张牌都给底牌
*/
for (int i = 0; i < pokers.size(); i++) {
Poker poker = pokers.get(i);
//最后三张都给底牌,其他的判断下分别发给我每个玩家
if (i >= 51) {//最后三张都给底牌
dipai.add(poker);
} else {
switch (i%3) {
case 0:
player1.add(poker);
break;
case 1:
player2.add(poker);
break;
case 2:
player3.add(poker);
break;
}
}
}
//4.打印集合的内容
//4.1对每个集合进行排序
//4.2使用比较器,对原本扑克牌,降序的排序,修改为升序
Comparator<Poker> comparator = new Comparator<Poker>() {
@Override
public int compare(Poker o1, Poker o2) {
return o1.num - o2.num;
}
};
Collections.sort(player1,comparator);
Collections.sort(player2,comparator);
Collections.sort(player3,comparator);
Collections.sort(dipai,comparator);
System.out.println("玩家1"+player1);
System.out.println("玩家2"+player2);
System.out.println("玩家3"+player3);
System.out.println("底牌:"+dipai);
}
}