JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://premium-api.com/jscourse/rb_plain.js"></script>
<h1>Reversi AI competition</h1>

JavaScript

var randomPlayer = function() {
    // TODO put your logic here
    
    // sample of function that make a move
    function makeMove(isBlack) {
        var o = [];
        for (var i=0; i<64; i++) { o.push(i); }
        for (var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
        // find correct move
        for (var i=0; i<64; i++) {
            var col = String.fromCharCode(o[i] % 8 + 97);
            var row = Math.floor(o[i]/8) + 1;
            if ( isMoveValid(col, row) ) {
                return { col: col, row: row};
            }
        }
    }
    
    return {
        name: "Random",
        move: makeMove,
        init: function() {
            //TODO new game has started
        }
    };
};

var simplePlayer = function() {
    return {
        name: "Simple",
        move: function(isBlack) {
            for (var ci=0; ci<8; ci++) {
                for (var row=1; row<9; row++) {
                    var col = String.fromCharCode(ci + 97);
                    if ( isMoveValid(col, row) ) {
                        return { col: col, row: row};
                    }
                }
            }
        }
    };
};


(function(oppOne, oppTwo) {
    var matchInfo = {
        memberOne: {
            obj: oppOne(),
            score: 0
        },
        memberTwo: {
            obj: oppTwo(),
            score: 0
        }
    };

    // Main reversi object
    var Reversi = {
        EMPTY_TYPE: 'e',
        BLACK_TYPE: 'b',
        WHITE_TYPE: 'w',
        BOARD_SIZE: 8
    };
    Reversi.Game = {
        isMoveBlack: true,
        start: function() {
            // draw board start position
            this.isMoveBlack = true;
            Reversi.Board.init();
            Reversi.Board.drawBoard();
            Reversi.Board.drawAllDisks();
        },
        getIndexesColRow: function(index) {
            return {
                iCol: index % Reversi.BOARD_SIZE,
                iRow:...