//Clone of ComplexMind for dungeon world
//mind has visibility of entire grid through getGrid function
//mind avoids (ei,ej)
//mind can see the goal (gi, gj), but doesn't path towards it
function randomPick ( a, b )
{
if ( randomBoolean() )
return a;
else
return b;
}
function Mind() {
//--- public functions / interface / API ----------------------------------------------------------
this.newRun = function()
{
};
this.endRun = function()
{
};
this.getAction = function ( x ) // x is an array of [ ai, aj, ei, ej, getGrid()->[GRID_BLANK, GRID_WALL, GRID_MAZE, GRID_GOAL, GRID] ]
{
var ai = x[0];
var aj = x[1];
var ei = x[2];
var ej = x[3];
var gi = x[4];
var gj = x[5];
var gridInfo = x[6]()
var GRID_BLANK = gridInfo[0]
var GRID_WALL = gridInfo[1];
var GRID_MAZE = gridInfo[2]
var GRID_GOAL = gridInfo[3]
var GRID = gridInfo[4]
// if strictly move away, will get stuck at wall, so introduce randomness
if ( ej < aj ) return ( randomPick ( ACTION_UP, randomPick(ACTION_RIGHT,ACTION_LEFT) ));
if ( ej > aj ) return ( randomPick ( ACTION_DOWN, randomPick(ACTION_RIGHT,ACTION_LEFT) ));
if ( ei < ai ) return ( randomPick ( ACTION_RIGHT, randomPick(ACTION_UP,ACTION_DOWN) ));
if ( ei > ai ) return ( randomPick ( ACTION_LEFT, randomPick(ACTION_UP,ACTION_DOWN) ));
return ( randomintAtoB (0,3) );
};
}