【自用】JavaSE--集合框架(一)--斗地主案例
不包含打牌的环节,简单的创建初始牌、洗牌、发牌、看牌功能
主代功能
public class Show {public void start(){//创建角色List<Person> people = new ArrayList<>();people.add(new Person("玩家1"));people.add(new Person("玩家2"));people.add(new Person("玩家3"));//创建初始牌LinkedList<Card> cards = CreatCard();System.out.print("初始牌:");System.out.println(cards);//洗牌System.out.println("洗牌中...");Collections.shuffle(cards);System.out.println("洗牌完成!");System.out.println(cards);System.out.println("开始发牌!");//System.out.println(cards);//给每个玩家发牌,发 51张,一人17张SendCard(people,cards);//给每个玩家手中的牌排序SortCard(people);//展示每个玩家的牌PrintPlayerCard(people);//剩下的牌就是地主牌System.out.print("地主牌:");System.out.println(cards);}//准备好有序的54张牌private LinkedList<Card> CreatCard(){String[] name = {"3","4","5","6","7","8","9","10","J","Q","K","A","2","小王","大王"};String[] type = {"黑桃","红桃","梅花","方块"};LinkedList<Card> cards = new LinkedList<>();for(int i=0;i<15;i++){if(i!=13 && i!=14){for(int j=0;j<4;j++){Card card = new Card(name[i],type[j],i);cards.add(card);}}else{Card card = new Card(name[i],"none",i);cards.add(card);}}return cards;}//发牌,发一张删一张,剩下的就是地主牌private void SendCard(List<Person> people,LinkedList<Card> cards){while(cards.size()>3){for(int j=0;j<people.size();j++){people.get(j).getCards().add(cards.removeFirst());}}}//给牌排序private void SortCard(List<Person> people){for(int i=0;i<people.size();i++){List<Card> cards = people.get(i).getCards();Collections.sort(cards, new Comparator<Card>() {@Overridepublic int compare(Card o1, Card o2) {return o1.getSize() - o2.getSize();}});}}//展示每个玩家手中的牌private void PrintPlayerCard(List<Person> people){for(int i=0;i<people.size();i++){System.out.print("玩家"+(i+1)+"的牌:");for(int j=0;j<people.get(i).getCards().size();j++){Card card = people.get(i).getCards().get(j);if(!(card.getName().equals("小王")) && !(card.getName().equals("大王"))){System.out.print(card.getName()+","+card.getType()+" ");}else{System.out.print(card.getName()+" ");}}System.out.println();}}
}
数据模板
//每一张牌的信息
public class Card {private String name; //3 4 5 ... A 2 小王 大王private String type; //黑桃、红桃、梅花、方块private int size; //每张牌的大小public Card() {}public Card(String name, String type, int size) {this.name = name;this.type = type;this.size = size;}@Overridepublic String toString() {returnname +"," + type;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getType() {return type;}public void setType(String type) {this.type = type;}public int getSize() {return size;}public void setSize(int size) {this.size = size;}
}
//玩家
public class Person{private String name;private ArrayList<Card> cards = new ArrayList<>();public Person() {}public Person(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}public ArrayList<Card> getCards() {return cards;}public void setCards(ArrayList<Card> cards) {this.cards = cards;}
}
测试
public class Test {public static void main(String[] args) {Show show = new Show();show.start();}
}