// Cloned by AMARA on 29 Nov 2020 from Mind "Complex Mind (clone by AMARA) (clone by AMARA)" by AMARA
// Please leave this clone trail here.
// Cloned by AMARA on 27 Nov 2020 from Mind "Complex Mind (clone by AMARA)" by AMARA
// Please leave this clone trail here.
// Cloned by AMARA on 27 Nov 2020 from Mind "Complex Mind" by Starter user
// Please leave this clone trail here.
// =================================================================================================
// 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
AB.mind.getAction = function ( x ) // x is an array of [ ai, aj, ei, ej ]
{ var use_default_brain = true;
if(use_default_brain){
var ai = x[0];
var aj = x[1];
var ei = x[2];
var ej = x[3];
// if strictly move away, will get stuck at wall, so introduce randomness
if ( ej < aj ) return ( AB.randomPick ( ACTION_UP, AB.randomPick(ACTION_RIGHT,ACTION_LEFT) ));
if ( ej > aj ) return ( AB.randomPick ( ACTION_DOWN, AB.randomPick(ACTION_RIGHT,ACTION_LEFT) ));
if ( ei < ai ) return ( AB.randomPick ( ACTION_RIGHT, AB.randomPick(ACTION_UP,ACTION_DOWN) ));
if ( ei > ai ) return ( AB.randomPick ( ACTION_LEFT, AB.randomPick(ACTION_UP,ACTION_DOWN) ));
return ( AB.randomIntAtoB (0,3) );
}
else
{
for(var i=0; i < gridsize; i++)
{
for(var j=0; j < gridsize; j++ )
{
if(!grid[i-1][j+1].wall && !grid[i-2][j].wall && !grid[i-1][j-1].wall && ei > ai)
{
return ACTION_LEFT;
}
if(!grid[i-1][j-1].wall && !grid[i][j-2].wall && !grid[i+1][j-1].wall && ej > aj)
{
return ACTION_UP;
}
if(grid[i+1][j-1].wall && grid[i+1][j+1].wall && grid[i+2][j].wall && ei < ai)
{
return ACTION_RIGHT;
}
return ACTION_DOWN;
}
}
}
};