// 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];
}
}