import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

/**
 * author:gongyu
 * description:only one
 */
public class GuanDan {
    public int playerNumber;  //当前第一个出牌人的序号  0，1，2，3
    public int [] laiZi = new int[2];  // laizi[0]记录着玩家0和玩家2的级数，laizi[1]记录着玩家1和玩家3的级数
    public int ownerOfLaiZi; //0表示当前是打的是玩家0和玩家2的级数，1表示当前是打的是玩家1和玩家3的级数

    public int gameNumber;
    ArrayDataofGuanDan[] player;   //这个类是很重要的类，这个类变量中使用到的类也很重要，除此以外，其他类不是很重要（都是我写代码过程中检验动作集合个数的）

    public GuanDan(){
        playerNumber = 0;  //当前是哪一个人出牌，初始为0
        laiZi[0] = 2;
        laiZi[1] = 2;//初始的时候，级数都为2
        ownerOfLaiZi = 0; //初始的为打的是玩家0和玩家2的级数
        gameNumber = 1;  // 当前玩的第几局，初始为1
        player = new ArrayDataofGuanDan[4];  //定义4个玩家
    }

    public static void main(String[] args) {
        GuanDan gameGuanDan = new GuanDan();  // 新的一局，就需要重新定义一个gameGuanDan
        // 创建一副扑克牌，编号从0到107
        List<Integer> poker = new ArrayList<>();
        for (int i = 0; i < 108; i++) {
            poker.add(i);
        }

        // 打乱扑克牌的顺序
        Collections.shuffle(poker);

        // 随机选择一张牌，用来确定第一个出牌的人
        Random random = new Random();
        int firstCardIndex = random.nextInt(108);


        // 发牌
        for (int i = 0; i < poker.size(); i++) {
            int card = poker.get(i);
            gameGuanDan.player[i % 4].cs.setCard(card);
            if (gameGuanDan.gameNumber == 1 && i == firstCardIndex) {
                gameGuanDan.ownerOfLaiZi = (i % 4) % 2;
                gameGuanDan.playerNumber = i % 4;
            }
        }

        //牌发完了，就开始打牌
        //根据已有的方法，自行补充
        //四个人都有了自己的牌，每一个玩家筛选自己的动作集合索引
        //第一个人出牌，后面三个人根据上一个人出的牌，遍历自己以筛选过的动作集合索引，进行出牌
        //当连续三个人过牌的时候（这个判断功能没写），重新筛选自己的动作集合
        //以此往复，游戏结束

        //一局结束后，
        gameGuanDan.gameNumber++;
        for(int i=0;i<4;i++){
            // 充实初始化每一个玩家的手牌，全部变为0
            gameGuanDan.player[i].cs.resetValues();
        }




    }
}
