public Game(int gameSize, int winLength) {
        int rand;
        this.gameSize = gameSize;
        this.winLength = winLength;
        if (gameSize >= 3 && winLength >= 3) {
            field = new EField[gameSize][gameSize];

            for (int i = 0; i < gameSize; i++)
                for (int j = 0; j < gameSize; j++) field[i][j] = EField.Empty;

            for (int x = 0; x < getGameSize(); x++)
                for (int y = 0; y < getGameSize(); y++)
                    if (getField(x, y) == EField.Empty) emptyFields.add(new Point(x, y));

            winLines = new ArrayList<>();
            gameIsEnded = false;
            winner = null;

            firstPlayerTimer = new TimerClass(3, 0);
            secondPlayerTimer = new TimerClass(3, 0);

            rand = (int) (Math.random() * 2);
            if (rand == 0) {
                firstPlayer = EField.Cross;
                secondPlayer = EField.Zero;
                firstPlayerTimer.start();
            } else {
                firstPlayer = EField.Zero;
                secondPlayer = EField.Cross;
                autoTurn(EPlayer.SecondPlayer);
            }
        }
    }