
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();//降序排序
}
});
}
}