Code viewer for World: Chess With mind 2 with p5 ...

// Cloned by Mathias Bazin on 27 Jul 2018 from World "Chess With mind" by Mathias Bazin 
// Please leave this clone trail here.
 


// Cloned by Mathias Bazin on 26 Jul 2018 from World "Chess" by Mathias Bazin 
// Please leave this clone trail here.
 
AB.runReady     = false;


let s = document.createElement("script");
s.src = "https://cdnjs.cloudflare.com/ajax/libs/chess.js/0.10.2/chess.js";                          
s.onload = function() { 
    console.log("chess loaded");
    
    AB.runReady = true;
};        // function to be called when JS is loaded
document.head.appendChild(s);  


function World() 
{ 
    
    let chess;
    let scl = 40;
    let xoff = 250;
    let yoff = 300;
    let speed = 30;
    
    let bk, bq, bn, br, bb, bp, wk, wq, wn, wr, wb, wp;
    
    
    
    
    
    
    
    
    

    function drawBoard(board)
    {
        let square = 0;
        
        for(let cur of board)
        {
            switch(cur)
            {
                case "r":
                    image(br, xoff + scl*(square%8), yoff + scl*(floor(square/8)));
                    square++;
                    break;
                case "n":
                    image(bn, xoff + scl*(square%8), yoff + scl*(floor(square/8)));
                    square++;
                    break;
                case "b":
                    image(bb, xoff + scl*(square%8), yoff + scl*(floor(square/8)));
                    square++;
                    break;
                case "q":
                    image(bq, xoff + scl*(square%8), yoff + scl*(floor(square/8)));
                    square++;
                    break;
                case "k":
                    image(bk, xoff + scl*(square%8), yoff + scl*(floor(square/8)));
                    square++;
                    break;
                case "p":
                    image(bp, xoff + scl*(square%8), yoff + scl*(floor(square/8)));
                    square++;
                    break;
                case "R":
                    image(wr, xoff + scl*(square%8), yoff + scl*(floor(square/8)));
                    square++;
                    break;
                case "N":
                    image(wn, xoff + scl*(square%8), yoff + scl*(floor(square/8)));
                    square++;
                    break;
                case "B":
                    image(wb, xoff + scl*(square%8), yoff + scl*(floor(square/8)));
                    square++;
                    break;
                case "Q":
                    image(wq, xoff + scl*(square%8), yoff + scl*(floor(square/8)));
                    square++;
                    break;
                case "K":
                    image(wk, xoff + scl*(square%8), yoff + scl*(floor(square/8)));
                    square++;
                    break;
                case "P":
                    image(wp, xoff + scl*(square%8), yoff + scl*(floor(square/8)));
                    // text(cur, xoff + scl*(square%8), yoff + scl*(floor(square/8)));
                    square++;
                    break;
                    
                
                case "/":
                    break;
                    
                    
                case " ":
                    return;
                    
                
                case "1":
                case "2":
                case "3":
                case "4":
                case "5":
                case "6":
                case "7":
                case "8":
                    square += +cur;
                    break;
                    
                
                default:
                    console.log("Error in drawBoard");
            }
        }
    }
    
    
    function drawGrid()
    {
        for (let i = 0; i<9; i++) //horizontal limes
        {
            line(xoff, yoff + i*scl,xoff + 8*scl, yoff + i*scl);
        }
        
        for (let i = 0; i<9; i++) //vertical lnes
        {
            line(xoff + i*scl, yoff, xoff + i*scl, yoff + 8*scl);
        }
    }
    
    function draw()            
    {
         if (!chess.game_over())
            {
                background(255);
                
                if(chess.turn() == 'w')
                {
                    chess.move(chess.moves()[0]);
                }
                else //Black player makes his move
                {
                    let moves = chess.moves();
                    let move = moves[Math.floor(Math.random() * moves.length)];
                    chess.move(move);
                }
                
                
                drawGrid();
                drawBoard(chess.fen());
                console.log(chess.ascii());
            }
            else 
            {
                console.log("Game Over");
            }
    }
    
    
    
        
        
        
    
    
    
    
    
    
	this.newRun = function()
	{
	    threeworld.init (  "white"  ); 
	    
	    bk = loadImage("/uploads/mathias/bk.png");
        bq = loadImage("/uploads/mathias/bq.png");
        bn = loadImage("/uploads/mathias/bn.png");
        br = loadImage("/uploads/mathias/br.png");
        bb = loadImage("/uploads/mathias/bb.png");
        bp = loadImage("/uploads/mathias/bp.png");
        wk = loadImage("/uploads/mathias/wk.png");
        wq = loadImage("/uploads/mathias/wq.png");
        wr = loadImage("/uploads/mathias/wr.png");
        wn = loadImage("/uploads/mathias/wn.png");
        wb = loadImage("/uploads/mathias/wb.png");
        wp = loadImage("/uploads/mathias/wp.png");
	    
	    chess = new Chess();
    	drawGrid();
    	drawBoard(chess.fen());
	};
	
	this.getState = function()
	{
	    return chess.fen();
	}
	
	this.takeAction = function(a)
	{
	     if (!chess.game_over())
        {
            background(255);
            
            if(chess.turn() == 'w')
            {
                chess.move(a);
            }
            else //Black player makes his move
            {
                let moves = chess.moves();
                let move = moves[Math.floor(Math.random() * moves.length)];
                chess.move(move);
            }
            
            
            drawGrid();
            drawBoard(chess.fen());
            console.log(chess.ascii());
        }
        else 
        {
            console.log("Game Over");
        }
	}
	

}