Skip to content

Instantly share code, notes, and snippets.

@1000i100
Forked from f6p/robot.js
Created December 7, 2012 14:22
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 1000i100/4233542 to your computer and use it in GitHub Desktop.
Save 1000i100/4233542 to your computer and use it in GitHub Desktop.
NecroBadger-fork
// helpers
function areEnemies(robot, sighted) {
var sightedIsChild = (robot.id == sighted.parentId);
var sightedIsParent = (robot.parentId == sighted.id);
return !(sightedIsChild || sightedIsParent);
};
function baseStep(robot) {
return 9 * direction(robot);
};
function charge(robot) {
robot.ahead(180);
};
function direction(robot) {
return isParent(robot) ? 1 : -1;
};
function fallback(robot) {
robot.ignore('onHitByBullet');
robot.back(180);
robot.listen('onHitByBullet');
};
function isParent(robot) {
return robot.parentId ? true : false;
};
function random(max) {
return parseInt(Math.random() * max);
};
function seek(robot) {
var step = baseStep(robot);
robot.rotateCannon(step);
robot.turn(step);
robot.ahead(step);
};
function shootRandomly(robot, max) {
var adj = random(max * 2) - (max * direction(robot));
robot.fire();
robot.rotateCannon(adj);
robot.fire();
return adj;
};
// robot
var Robot = function(robot) {
robot.clone();
};
Robot.prototype.onIdle = function(ev) {
seek(ev.robot);
};
Robot.prototype.onScannedRobot = function(ev) {
var robot = ev.robot;
var scanned = ev.scannedRobot;
if (areEnemies(robot, scanned)) {
var adj = -12 * direction(robot);
for (i = 1; i < 3; i++)
shootRandomly(robot, 9 * i);
robot.rotateCannon(adj);
}
};
Robot.prototype.onWallCollision = function(ev) {
fallback(ev.robot);
};
Robot.prototype.onHitByBullet = function(ev) {
charge(ev.robot);
};
Robot.prototype.onRobotCollision = function(ev) {
fallback(ev.robot);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment