Code viewer for Mind: Cloned Cloned Complex Mind

// Cloned by Sian on 18 Nov 2018 from Mind "Cloned Complex Mind" by Joe Ninety One 
// Please leave this clone trail here.
 


// Cloned by Joe Ninety One on 18 Nov 2018 from Mind "Complex Mind" by Starter user 
// Please leave this clone trail here.
 



// ==== Starter Mind ===============================================================================================
// (c) Ancient Brain Ltd. All rights reserved.
// This code is only for use on the Ancient Brain site.
// This code may be freely copied and edited by anyone on the Ancient Brain site.
// This code may not be copied, re-published or used on any other website.
// To include a run of this code on another website, see the "Embed code" links provided on the Ancient Brain site.
// ==================================================================================================================




// =================================================================================================
// Sample Mind for more complex starter World  
// =================================================================================================

// World tells us agent position and enemy position
// World does not tell us of existence of walls
// if return invalid move (not empty square) World just ignores it and we miss a turn 



function Mind() 
{ 
    this.world = [];
    let border = [];
    for (let i = 0; i < 20; i++) {
        border.push(0);
    }
    this.world.push(border)
    for (let i =0; i < 20; i++){
        let tmp = [0];
        for (let i =0; i < 20; i++){
            tmp.push(-1);
        }
        tmp.push(0);
        this.world.push(tmp);
    }
    this.world.push(border);
    this.last_pos = undefined;
	this.getAction = function ( x )		// x is an array of [ ai, aj, ei, ej ]
	{ 
        //console.log(x)
		var ai = x[0] + 1;
		var aj = x[1] + 1;
		var ei = x[2] + 1;
		var ej = x[3] + 1;
        this.world[ai][aj] = 1;
        this.world[ei][ej] = 1;
        let current_pos = [ai, aj];
        //console.log(this.last_pos, current_pos)
        if (this.last_pos != undefined) {
            if (JSON.stringify(current_pos) == JSON.stringify(this.last_pos)) {
                console.log('locked')
                console.log(current_pos);
                console.log(this.world);
                this.cellDecision(current_pos, this.last_decision, 0);
                console.log(this.world);
                console.log('#######');
            }
        }
        this.last_pos = [ai, aj];
        let decision = undefined;
		// if strictly move away, will get stuck at wall, so introduce randomness 

		 if ( ej < aj ) {
		     decision =  ( AB.randomPick ( ACTION_UP,		AB.randomPick(ACTION_RIGHT,ACTION_LEFT) 	));
		 }
		 if ( ej > aj ) {
		     decision =  ( AB.randomPick ( ACTION_DOWN,	AB.randomPick(ACTION_RIGHT,ACTION_LEFT) 	)); 
        }
		 if ( ei < ai ) {
		     decision =  ( AB.randomPick ( ACTION_RIGHT,	AB.randomPick(ACTION_UP,ACTION_DOWN) 		));
		 }
		 if ( ei > ai ) {
		     decision =  ( AB.randomPick ( ACTION_LEFT,	AB.randomPick(ACTION_UP,ACTION_DOWN) 		));
		 }
		 
		 if (decision === undefined) {
		    decision = ( AB.randomIntAtoB (0,3) );
		 }
		 this.last_decision = decision;
		 return decision;
	};
	
	this.cellDecision = function (pos, action, override = undefined) {
	       let x = pos[0];
	       let y = pos[1];
	       
	       if (action == ACTION_UP) {
	           x--;
	       }
	       else if (action == ACTION_DOWN) {
	           x++;
	       }
	       else if (action == ACTION_RIGHT) {
	           y++
	       }
	       else if (action == ACTION_LEFT) {
	           y--;
	       }
	       console.log(':::', x, y, action, override)
	       if (override !== undefined) {
	           this.world[x][y] = override
	       }
	       return this.world[x][y];
	}

}