package T1;
import java.util.*;

class JogoGalo implements JGaloInterface {
    private char winner;
    private char[][] matrix;
    private char player;
    private int turns;

    public JogoGalo(){ //configuração inicial
        this.winner = ' ';
        this.player = 'X';
        this.matrix = new char [3][3];
        this.turns =0;
    }

    public char getActualPlayer(){ return player;}

    public boolean setJogada(int lin,int col){
        matrix[col -1][lin -1 ] = player;
        if (player=='X') { //mudança de jogador
            player = 'O'; 
        } else {
            player='X';
        }
        turns++;
        return true;
    }

    public char checkResult(){
        ArrayList<String> score = getLines();
        for (String s : score) {
            if (s.equals("OOO")) {
                winner = 'O';
                break;
            }
            if (s.equals("XXX")) {
                winner = 'X';
                break;
            }
        }
        return winner;
    }

    public boolean isFinished(){
        ArrayList<String> score = getLines();
        for (String s : score) {
            if (s.equals("OOO")) {
                winner='O';
                return true;
            }
            if (s.equals("XXX")) {
                winner='X';
                return true;
            }
            if (turns==9 && s.equals("XXX") ){
                winner='X';
                return true;
            }
            if(turns==9 && s.equals("OOO")){
                winner='O';
                return true;
            }
            if(turns==9 && !s.equals("OOO") && !s.equals("XXX")){
                winner=' ';
                return true;
            }
        }
        return false;
    }
    
    public ArrayList<String> getLines(){
        ArrayList<String> score = new ArrayList<String>();
        for (int i = 0; i < matrix.length; i++) {
            score.add(String.valueOf(matrix[i]));
        }
        for (int i = 0; i < matrix.length; i++) { //rows 
            String line="";
            for (int j = 0; j < matrix.length; j++) { // cols
                line = line + matrix[j][i];
            }
            score.add(line);
        }
        score.add(""+matrix[0][2]+ matrix[1][1]+matrix[2][0]);
        score.add(""+matrix[0][0]+matrix[1][1]+matrix[2][2]);
        return score;
    }
}
