案例:
1、总共拥有54张牌
2、点数:"3","4","5","6","7","8","9","10","J","Q","K","A","2"
3、花色:"♠","♣","♦","♥"
4、大小王:"小王","大王";
5、斗地主:发出51张牌,剩下三张做底牌
代码:
1、创建牌类
package CollectionsText;
public class Card {
private String number;
private String color;
private int size;
public Card() {
}
public Card(String number, String color, int size) {
this.number = number;
this.color = color;
this.size = size;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
@Override
public String toString() {
// return color+number+"--->"+size;
return color+number;
}
}
2、创建房间:
package CollectionsText;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Room {
// 1、表示一副具有54张牌的扑克
private List<Card> allCards=new ArrayList<>();
public Room() {
// 1、做出54副牌
// a、点数:类型确定
String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
// b、花色:类型确定,数量确定
String[] colors={"♠","♣","♦","♥"};
// c、设置大小,方便之后的排序
int size=0;
// 先遍历数字,在遍历花色,之后组织牌
for (String number : numbers) {
// 1、表示4张数字相同,花色不同的牌
size++;
for (String color : colors) {
Card c =new Card(number,color,size);
allCards.add(c);
}
}
// 2、创建大小王
Card c1=new Card("","小王",++size);
Card c2=new Card("","大王",++size);
Collections.addAll(allCards,c1,c2);
System.out.println(allCards);
}
public void Start(){
// 1、洗牌
Collections.shuffle(allCards);
System.out.println("洗牌之后:"+allCards);
// 2、创建对象,三个人,采用的是ArrayList集合对象
List<Card> person1=new ArrayList<>();
List<Card> person2=new ArrayList<>();
List<Card> person3=new ArrayList<>();
// 发牌,最后留有三张底牌
for (int i = 0; i < allCards.size()-3; i++) {
Card card = allCards.get(i);
if (i%3==0){
person1.add(card);
} else if (i % 3 == 1) {
person2.add(card);
} else if (i % 3 == 2) {
person3.add(card);
}
}
// 3、将三人底牌进行排序
sortCord(person1);
sortCord(person2);
sortCord(person3);
// 4、展示手牌:
System.out.println("person1"+person1);
System.out.println("person2"+person2);
System.out.println("person3"+person3);
List<Card> cards = allCards.subList(allCards.size() - 3, allCards.size());
System.out.println("底牌是:"+cards);
// 假设是person1抢到牌时:
person1.addAll(cards);
sortCord(person1);
System.out.println("抢地主之后的手牌"+person1);
}
/**
* 集中进行排序
* @param person
*/
private void sortCord(List<Card> person) {
Collections.sort(person, new Comparator<Card>() {
@Override
public int compare(Card o1, Card o2) {
return o1.getSize()- o2.getSize();//升序排列
}
});
}
}
3、测试:
package CollectionsText; public class Text { public static void main(String[] args) { // 1、创建牌类 // 2、创建房间类 Room room=new Room(); room.Start(); } }
4、结果: