JSFiddle - React, Tailwind, and code Playground
by Andy Novocin
HTML
<span id="m"></span>
JavaScript
var boardseed = "10:5:.....*****.....*****$$$$$XXXXX$$$$$XXXXX.....*****";
var dims = boardseed.split(':');
var vals = dims.splice(2,1)[0];
dims = dims.splice(0,2);
var board = vals.split("");
for (var i in dims) {
$("#m").append(dims[i]).append("<br/>");
}
$("#m").append(vals).append("<br/>");
/*for (var i in board){
$("#m").append(board[i]).append("<br/>");
}*/
var sensor = function(w,h,board,x,y){
var sq_value = function(w, h, board, x, y){
if (x < 0 || y < 0 || x >= h || y >= w){
return "*";
}
return board[x*w + y];
};
var values = ["*","$","X"];
var delts = [0, 1, 2, 3];
var close = [[],[],[],[]];
var far = [[],[],[],[]];
var quadrant = [[-1,-1], [-1,1], [1,-1], [1,1]];
for (var di in delts){
for (var dj in delts){
for (var qi in quadrant){
var xs = quadrant[qi][0];
var ys = quadrant[qi][1];
var dx = delts[di];
var dy = delts[dj];
if (dx == 0 && dy == 0){
break;
} else if (dx > 1 || dy > 1){
far[qi].push(sq_value(w,h,board,x+xs*dx, y+ys*dy));
} else {
close[qi].push(sq_value(w,h,board,x+xs*dx, y+ys*dy));
}
}
}
}
var senses = [];
for (var vi in values){
var value = values[vi];
for (var ci in close){
var cvals = close[ci];
var inarr = $.inArray(value, cvals);
senses.push(inarr == -1 ? 0 : 1);
}
for (var fi in far){
var fvals = far[fi];
var inarr = $.inArray(value, fvals);
senses.push(inarr == -1 ? 0 : 1);
}
}
return senses;
}