package W03H02_CollectionsLists;

import java.util.*;

public class AnArrayList {

    private final List<Ficha> fichas;

    public AnArrayList() {
        fichas = new ArrayList<>(); // Constructor de ArrayList<E>
        int n = Ficha.MAX_NUM + 1;

        for (int i = 0; i <= Ficha.MAX_NUM; i++) {
            fichas.add(new Ficha((int) (Math.random() * n),
                    (int) (Math.random() * n)));
        }
    }

    public void misFichas() {
        System.out.println("Tienes " + fichas.size() + " fichas.");
        for (int i = 0; i <= Ficha.MAX_NUM; i++) {
            int n = 0;
            for (Ficha f : fichas) {
                if (f.getA() == i || f.getB() == i) {
                    n++;
                }
            }
            System.out.println("Tienes " + n + " " + i + "s.");
        }
        int n = 0;
        for (Ficha f : fichas) {

            if (f.getA() == f.getB()) {
                n++;
            }
        }
        System.out.println("Tienes " + n + " dobles.");
    }
    
    public void tiraFichas() {
        while (!fichas.isEmpty()) {
            int n = (int) (Math.random() * fichas.size());
            System.out.println("Tiras la ficha " + fichas.remove(n));
            System.out.println(this); // usa el toString() de this
            // System.out.println(fichas); // usa el toString() de ArrayList
        }
    }

    @Override
    public String toString() {
        String s = "";
        s += "fichas (" + fichas.size() + "): ";
        for (Ficha f : fichas) {
            s += f;
        }
        return s;
    }

    public static void main(String[] args) {
        AnArrayList d = new AnArrayList();

        System.out.println(d);
        d.misFichas();
        d.tiraFichas();
    }
}
