
#include "prologin.hh"
#include "fonctions.h"
#include <vector>
#include <iostream>

using namespace std;

int monId, autreId;

int dernGrosseTrans = 0;

void jouer_tour()
{
    cout << "DEBUT TOUR "  << tour_actuel()  << endl;
    echantillon monEchantillon = echantillon_tour();

    vector<position_echantillon> positionsPossibles = placements_possible_echantillon(monEchantillon, monId);

    int l = 3;
    while(positionsPossibles.empty())
    {
        if(!transmuterPetit(l))
            l--;

        positionsPossibles = placements_possible_echantillon(monEchantillon, monId);
    }

    int x = random(0, positionsPossibles.size());
    x = (random(0, 2) == 0 ? x : 0);
    placer_echantillon(positionsPossibles[x].pos1, positionsPossibles[x].pos2);

    position regCata = grosseRegion(false);
    position regOr = grosseRegion(true);

    if(regCata.ligne == regOr.ligne && regCata.colonne == regOr.colonne)
        dernGrosseTrans++;

    if(tour_actuel() - dernGrosseTrans >= 42 || tour_actuel() >= 149)
    {
        while(regCata.ligne != INFINI && !(regCata.ligne == regOr.ligne && regCata.colonne == regOr.colonne))
        {
            cout << "RECUP CATA" << endl;
            transmuter(regCata);
            regCata = grosseRegion(false);

        }
    }
    if(nombre_catalyseurs() > 0 && regOr.ligne != INFINI)
    {
        cout << "VIDER CATA " << nombre_catalyseurs() << endl;
        ajouteCatalyseurs(regOr);
            cout << "VIDER CATA FIN " << nombre_catalyseurs() << endl;
    }

    if(tour_actuel() - dernGrosseTrans >= 42 || tour_actuel() >= 149)
    {
        transmuter(regOr);
        dernGrosseTrans = tour_actuel();
    }

    if(tour_actuel() >= 149)
    {
        for(int i = 0; i < TAILLE_ETABLI; i++)
        {
            for(int j = 0; j < TAILLE_ETABLI; j++)
            {
                position iPos = makepos(i, j);
                if(taille_region(iPos, monId) >= 3)
                    transmuter(iPos);
            }
        }
    }

    donnerMerde();

    emmerderAdversaire();
}

void partie_fin()
{

}
