package com.GameDemo; public class GameDemo { public static void main(String[] args) { Room s=new Room(); //启动游戏 s.start(); } }
package com.GameDemo; 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; } }
package com.GameDemo; import java.util.*; public class Room { //必须有一副牌 private List<Card> allCard=new ArrayList<>(); //无参构造器 public Room(){ //1.做出54张牌,存入到集合allCard //a.点数:个数确定了,类型确定 String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2"}; //b.花色:个数确定了,类型确定 String[] colors={"♠","♥","♣","♦"}; int size=0;//表示每张牌大小 //c.遍历点数:再遍历花色,组织牌 for (String number : numbers) { //number="3" size++;//1 2 ..... for (String color : colors) { //得到一张牌 Card c=new Card(number,color,size); allCard.add(c); } } //单独存入小大王 Card c1=new Card("","?",++size); Card c2=new Card("","?",++size); Collections.addAll(allCard,c1,c2); System.out.println("新牌:"+allCard); } /** *启动游戏 * * */ public void start() { //1.洗牌 Collections.shuffle(allCard); System.out.println("洗牌后:"+allCard); //2.发牌,首先肯定要定义三个玩家 用List(rrayList)更适用 List<Card> lida=new ArrayList<>(); List<Card> lier=new ArrayList<>(); List<Card> lisan=new ArrayList<>(); //正式发牌给玩家,依次发出51张牌,剩余三张底牌 //用发牌索引对3取余 % 3 for (int i = 0; i < allCard.size(); i++) { Card c=allCard.get(i); //判断发牌给谁 if(i % 3==0){ //1号玩家 lida.add(c); }else if (i%3==1){ //2号玩家 lier.add(c); }else if (i % 3== 2){ //3号玩家 lisan.add(c); } } //对3个玩家牌进行排序 sortCard(lida); sortCard(lier); sortCard(lisan); //4.看牌 System.out.println("李大:"+lida); System.out.println("李二:"+lier); System.out.println("李三:"+lisan); List<Card> DiPai=allCard.subList(allCard.size()-3,allCard.size());//表示从倒数第三张牌开始索引到极限值,并赋值给底牌 System.out.println("底牌:"+DiPai); lier.addAll(DiPai); System.out.println("李大抢到地主后:"+lida); } /*** * 集中排序 */ private void sortCard(List<Card> cards) { Collections.sort(cards, new Comparator<Card>() { @Override public int compare(Card o1, Card o2) { return o1.getSize()-o2.getSize();//升序排序 //return o2.getSize()-o1.getSize();//降序排序 } }); } }