Skip to content

Instantly share code, notes, and snippets.

@hybridknight
Created November 22, 2013 06:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hybridknight/7595787 to your computer and use it in GitHub Desktop.
Save hybridknight/7595787 to your computer and use it in GitHub Desktop.
var cherry = _.values(Map.cherries)[0];
var grid = new PF.Grid(Map.width, Map.height);
var map = _.clone(Map);
var me = map.me;
var snakes = map.snakes;
delete snakes[me.id];
_.each(me.body, function(body){
grid.setWalkableAt(body.x, body.y, false);
});
_.each(_.values(snakes), function(snake){
_.each(snake.body, function(body){
grid.setWalkableAt(body.x, body.y, false);
});
if(snake.head.x+1 < map.width){ grid.setWalkableAt(snake.head.x+1, snake.head.y, false); }
if(snake.head.y+1 < map.height){ grid.setWalkableAt(snake.head.x, snake.head.y+1, false); }
if(snake.head.x-1 >= 0){ grid.setWalkableAt(snake.head.x-1, snake.head.y, false); }
if(snake.head.y-1 >= 0){ grid.setWalkableAt(snake.head.x, snake.head.y-1, false); }
});
var finder = new PF.AStarFinder({
heuristic: PF.Heuristic.chebyshev
});
var path = finder.findPath(me.head.x, me.head.y, cherry.x, cherry.y, grid);
var next = path[1];
next = {
x: next[0],
y: next[1]};
var head = me.head;
var d;
if(head.x > next.x){ d = 3; }
else if(head.x < next.x){ d = 1; }
else if(head.y > next.y){ d = 0; }
else if(head.y < next.y){ d = 2; }
setDirection(d);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment